ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



 

Часть 39

STD - Установка флага направления
-----------------------------------------------------------------
|Код       Команда     Число      Описание                      |
|операции              тактовых                                 |
|                      циклов                                   |
|                                                               |
|FD        STD          2        Установка флага направления,   |
|                                что соответствует декременту   |
|                                (E)SI или (E)DI                |
-----------------------------------------------------------------
Работа команды
--------------
DF <- 1;
Описание
--------
Команда STD устанавливает флаг направления DF, в результате чего
все последующие строковые операции будут выполнять декремент
индексных регистров, (E)SI или (E)DI, с которыми они работают.
Изменяемые флаги
----------------
Устанавливается флаг DF.
Исключения защищенного режима
----------------------------------
     Отсутствуют
Исключения режима реальных адресов
---------------------------------------
     Отсутствуют
Исключения виртуального режима 8086
----------------------------------------
     Отсутствуют
-----------------------------------------------------------------
STI - Установка флага прерывания
-----------------------------------------------------------------
|Код       Команда     Число      Описание                      |
|операции              тактовых                                 |
|                      циклов                                   |
|                                                               |
|F13       STI          5        Установка флага прерывания:    |
|                                прерывания разрешены, начиная  |
|                                с конца следующей команды      |
-----------------------------------------------------------------
Работа команды
--------------
IF <- 1;
Описание
--------
Команда STI устанавливает флаг IF. После выполнения следующей
команды процессор может реагировать на внешние прерывания, если
эта следующая команда оставляет флаг IF в состоянии,
разрешающем прерывания. Если внешние прерывания запрещены, и вы
после команды RET использовали команду RET (например, в конце
подпрограммы), то команда RET будет выполнена до того, как
начнут распознаваться внешние прерывания. Также, если внешние
прерывания запрещены, а вы использовали команду STI и за ней
команду CLI, то внешние прерывания не будут распознаваться,
поскольку команда CLI очищает флаг IF во время своего
выполнения.
Изменяемые флаги
----------------
Устанавливается флаг IF.
Исключения защищенного режима
----------------------------------
#GP, если текущий уровень привилегированности больше (имеет
меньшую привилегированность), чем уровень привилегированности
ввода/вывода (IOPL).
Исключения режима реальных адресов
---------------------------------------
     Отсутствуют
Исключения виртуального режима 8086
----------------------------------------
     Отсутствуют
-----------------------------------------------------------------
STOS/STOSB/STOSW/STOSD - Сохранение строковых данных
-----------------------------------------------------------------
|Код       Команда     Число      Описание                      |
|операции              тактовых                                 |
|                      циклов                                   |
|                                                               |
|AA        STOS m8          5    Сохранение AL в байте          |
|                                ES:[(E)DI], обновление (E)DI   |
|AB        STOS m16         5    Сохранение AX в слове          |
|                                ES:[(E)DI], обновление (E)DI   |
|AB        STOS m32         5    Сохранение EAX в двойном слове |
|                                ES:[(E)DI], обновление (E)DI   |
|AA        STOSB            5    Сохранение AL в байте          |
|                                ES:[(E)DI], обновление (E)DI   |
|AB        STOSW            5    Сохранение AX в слове          |
|                                ES:[(E)DI], обновление (E)DI   |
|AB        STOD             5    Сохранение EAX в двойном слове |
|                                ES:[(E)DI], обновление (E)DI   |
-----------------------------------------------------------------
Работа команды
--------------
IF AddressSize = 16
THEN использование ES:DI в качестве DestReg
ELSE (*  AddressSize  =  32  *)  использование  ES:EDI в качестве
                                DestReg;
FI;
IF байтовый тип команды
THEN
  (ES:DestReg) <- AL;
  IF DF = 0
  THEN DestReg <- DestReg + 1;
  ELSE DestReg <- DestReg - 1;
  FI;
ELSE IF OperandSize = 16
  THEN
    (ES:DestReg) <- AX;
    IF DF = 0
    THEN DestReg <- DestReg + 2;
    ELSE DestReg <- DestReg - 2;
    FI;
  ELSE (* OperandSize = 32 *)
    (ES:DestReg) <- EAX;
    IF DF = 0
    THEN DestReg <- DestReg + 4;
    ELSE DestReg <- DestReg - 4;
    FI;
  FI;
FI;
Описание
--------
Команда STOS пересылает содержимое регистра AL, AX или EAX в
байт или слово памяти, заданное регистром назначения
относительно сегмента ES. Регистром назначения является регистр
DI для атрибута размера адреса 16 битов, или EDI для атрибута
размера адреса 32 бита.
Операнд назначения должен адресоваться из регистра ES;
переопределение сегмента не допускается.
Адрес назначения определяется содержимым регистра назначения, а
не явно заданным операндом команды STOS. Этот операнд
используется только для удостоверения адресуемости сегмента ES и
определения типа данных. Перед выполнением команды STOS следует
загрузить в регистр DI или EDI правильное значение индекса.
После того, как пересылка выполнена, регистр DI автоматически
обновляется. Если флаг направления равен 0 (была выполнена
команда CLD), происходит инкремент регистра назначения; если
флаг направления равен 1 (была выполнена команда STD),
происходит декремент регистра назначения. При сохранении байтов
инкремент или декремент равен 1; при сохранении слов инкремент
или декремент равен 2; при сохранении двойных слов инкремент или
декремент равен 4.
Команды STOSB, STOSW и STOSD являются синонимами команды STOS,
работающими с байтом, словом и двойным словом, соответственно,
не требующими операндов. Их проще программировать, но они не
обеспечивают проверки типа или сегмента.
Команде STOS может предшествовать префикс REPE или REPNE для
заполнения блока из CX или ECX байтов, слов или двойных слов.
Подробности см. в описании команды REP.
Изменяемые флаги
----------------
     Отсутствуют
Исключения защищенного режима
----------------------------------
#GP(0), если назначением является сегмент, недоступный для
записи; #GP(0) в случае недопустимого исполнительного адреса
операнда памяти в сегментах CS, DS, ES, FS или GS; #SS(0) в
случае недопустимого адреса в сегменте SS; #PF(код сбоя) в
случае страничного сбоя; #AC для невыравненной ссылки к памяти
при текущем уровне привилегированности, равном 3.
Исключения режима реальных адресов
---------------------------------------
Прерывание 13, если какая-либо часть операнда лежит вне
пространства исполнительных адресов от 0 до 0FFFFH.
Исключения виртуального режима 8086
----------------------------------------
Те же исключения, что и для режима реальных адресов: #PF (код
сбоя) для страничных сбоев. #AC для невыравненной ссылки к
памяти при текущем уровне привилегированности, равном 3.
-----------------------------------------------------------------
STR - Сохранение регистра задачи
-----------------------------------------------------------------
|Код       Команда     Число      Описание                      |
|операции              тактовых                                 |
|                      циклов                                   |
|                                                               |
|0F 00 /1  STR r/m16     2/3     Сохранение регистра задачи в   |
|                                слове, заданным исполнительным |
|                                адресом                        |
-----------------------------------------------------------------
Работа команды
--------------
r/m <- регистр задачи;
Описание
--------
Содержимое регистра задачи копируется в двух-байтовый регистр
или адрес памяти, заданный операндом с исполнительным адресом.
Команда STR используется только операционным программным
обеспечением. Прикладные программы ее не используют.
Изменяемые флаги
----------------
     Отсутствуют
Исключения защищенного режима
----------------------------------
#GP(0), если назначением является сегмент, недоступный для
записи; #GP(0) в случае недопустимого исполнительного адреса
операнда памяти в сегментах CS, DS, ES, FS или GS; #SS(0) в
случае недопустимого адреса в сегменте SS; #PF(код сбоя) в
случае страничного сбоя; #AC для невыравненной ссылки к памяти
при текущем уровне привилегированности, равном 3.
Исключения режима реальных адресов
---------------------------------------
Прерывание 6; команда STR в режиме реальных адресов не
распознается.
Исключения виртуального режима 8086
----------------------------------------
Те же исключения, что и для режима реальных адресов.
Примечания
----------
Атрибут размера операнда на действие этой команды не влияет.
-----------------------------------------------------------------
SUB - Целочисленное вычитание
-----------------------------------------------------------------
|Код       Команда     Число      Описание                      |
|операции              тактовых                                 |
|                      циклов                                   |
|                                                               |
|2C ib     SUB AL,imm8     1     Вычитание непосредственного    |
|                                байта из AL                    |
|2D iw     SUB AX,imm16    1     Вычитание непосредственного    |
|                                слова из AX                    |
|2D id     SUB EAX,imm32   1     Вычитание непосредственного    |
|                                двойного слова из EAX          |
|80 /5 ib  SUB r/m8,imm8   1/3   Вычитание непосредственного    |
|                                байта из байта r/m             |
|81 /5 iw  SUB r/m16,imm16 1/3   Вычитание непосредственного    |
|                                слова из слова r/m             |
|81 /5 id  SUB r/m32,imm32 1/3   Вычитание непосредственного    |
|                                двойного слова из              |
|                                двойного слова r/m             |
|83 /5 ib  SUB r/m16,imm8  1/3   Вычитание непосредственного    |
|                                расширенного знаком байта      |
|                                из слова r/m                   |
|83 /5 ib  SUB r/m32,imm8  1/3   Вычитание непосредственного    |
|                                расширенного знаком байта      |
|                                из двойного слова r/m          |
|28 /r     SUB r/m8,r8     1/3   Вычитание регистра -           |
|                                байта из байта r/m             |
|29 /r     SUB r/m16,r16   1/3   Вычитание регистра -           |
|                                слова из слова r/m             |
|29 /r     SUB r/m32,r32   1/3   Вычитание регистра -           |
|                                двойного слова из              |
|                                двойного слова r/m             |
|2A /r     SUB r8,r/m8     1/2   Вычитание регистра -           |
|                                байта из байта r/m             |
|2B /r     SUB r16,r/m16   1/2   Вычитание регистра -           |
|                                слова из слова r/m             |
|2B /r     SUB r32,r/m32   1/2   Вычитание регистра -           |
|                                двойного слова из              |
|                                двойного слова r/m             |
-----------------------------------------------------------------
Работа команды
--------------
IF SRC это байт, а DEST это слово или двойное слово
THEN DEST = DEST - SignExtend(SRC);
ELSE DEST <- DEST - SRC;
FI;
Описание
--------
Команда SUB вычитает второй операнд (SRC) из первого (DEST).
Первому операнду присваивается результат вычитания, а флаги
устанавливаются соответствующим образом.
При вычмитании из операнда - слова непосредственного байтового
значения последнее расширяется знаком до размера операнда
назначения.
Изменяемые флаги
----------------
Флаги OF, SF, ZF, AF, PF и CF устанавливаются в соответствии с
результатом.
Исключения защищенного режима
----------------------------------
#GP(0), если назначением является сегмент, недоступный для
записи; #GP(0) в случае недопустимого исполнительного адреса
операнда памяти в сегментах CS, DS, ES, FS или GS; #SS(0) в
случае недопустимого адреса в сегменте SS; #PF(код сбоя) в
случае страничного сбоя; #AC для невыравненной ссылки к памяти
при текущем уровне привилегированности, равном 3.
Исключения режима реальных адресов
---------------------------------------
Прерывание 13, если какая-либо часть операнда лежит вне
пространства исполнительных адресов от 0 до 0FFFFH.
Исключения виртуального режима 8086
----------------------------------------
Те же исключения, что и для режима реальных адресов: #PF (код
сбоя) для страничных сбоев. #AC для невыравненной ссылки к
памяти при текущем уровне привилегированности, равном 3.
-----------------------------------------------------------------
TEST - Логическое сравнение
-----------------------------------------------------------------
|Код       Команда     Число      Описание                      |
|операции              тактовых                                 |
|                      циклов                                   |
|                                                               |
|A8 ib    TEST AL,imm8     1     AND  для  непосредственного    |
|                                байта и  AL                    |
|A9 iw    TEST AX,imm16    1     AND  для  непосредственного    |
|                                слова и  AX                    |
|A9 id    TEST EAX,imm32   1     AND  для  непосредственного    |
|                                двойного слова  и EAX          |
|F6 /0 ib TEST r/m8,imm8   1/2   AND  для  непосредственного    |
|                                байта и  байта r/m             |
|F7 /0 iw TEST r/m16,imm16 1/2   AND  для  непосредственного    |
|                                слова и  слова r/m             |
|F7 /0 id TEST r/m32,imm32 1/2   AND  для  непосредственного    |
|                                двойного слова и               |
|                                двойного слова r/m             |
|84 /r    TEST r/m8,r8     1/2   AND  для  регистра -           |
|                                байта и  байта r/m             |
|85 /r    TEST r/m16,r16   1/2   AND  для  регистра -           |
|                                слова и  слова r/m             |
|85 /r    TEST r/m32,r32   1/2   AND  для  регистра -           |
|                                двойного слова и               |
|                                двойного слова r/m             |
-----------------------------------------------------------------
Работа команды
--------------
DEST := LeftSRC AND RightSRC;
CF <- 0;
OF <- 0;
Описание
--------
Команда TEST вычисляет поразрядное логическое И (AND) для двух
заданных ей операндов. Каждый бит результата равен 1, если оба
соответствующих бита операндов равны 1; в противном случае этот
бит равен 0. Результат операции теряется, а модифицируются
только флаги.
Изменяемые флаги
----------------
Флаги OF и CF очищаются; флаги SF, ZF и PF устанавливаются в
соответствии с результатом.
Исключения защищенного режима
----------------------------------
#GP(0) в случае недопустимого исполнительного адреса операнда
памяти в сегментах CS, DS, ES, FS или GS; #SS(0) в случае
недопустимого адреса в сегменте SS; #PF(код сбоя) в случае
страничного сбоя; #AC для невыравненной ссылки к памяти при
текущем уровне привилегированности, равном 3.
Исключения режима реальных адресов
---------------------------------------
Прерывание 13, если какая-либо часть операнда лежит вне
пространства исполнительных адресов от 0 до 0FFFFH.
Исключения виртуального режима 8086
----------------------------------------
Те же исключения, что и для режима реальных адресов: #PF (код
сбоя) для страничных сбоев. #AC для невыравненной ссылки к
памяти при текущем уровне привилегированности, равном 3.
-----------------------------------------------------------------
VERR, VERW - Верификация доступности чтения или записи сегмента
-----------------------------------------------------------------
|Код       Команда     Число      Описание                      |
|операции              тактовых                                 |
|                      циклов                                   |
|                                                               |
|0F 00 /4  VERR r/m16   11/11    Установка ZF=1, если сегмент   |
|                                доступен для чтения,           |
|                                селектор в r/m16               |
|0F 00 /5  VERW r/m16   11/11    Установка ZF=1, если сегмент   |
|                                доступен для записи,           |
|                                селектор в r/m16               |
-----------------------------------------------------------------
Работа команды
--------------
IF сегмент с селектором в (r/m) доступен для
   текущего уровня защиты
   AND ((сегмент доступен для чтения согласно VERR) OR
        (сегмент доступен для записи согласно VERW))
THEN ZF <- 1;
ELSE ZF <- 0;
FI;
Описание
--------
Двух-байтовый регистр или операнд памяти команд VERR и VERW
содержит значение селектора. Команды VERR и VERW определяют
доступность сегмента, указанного селектором, с текущего уровня
привилегированности, а также, доступен ли он для чтения (VERR),
или для записи (VERW). Если сегмент доступен, то устанавливается
флаг ZF; если сегмент недоступен, то флаг ZF очищается. Для
установки флага ZF должны удовлетворяться следующие условия:
- Селектор должен обозначать дескриптор в пределах границ
  таблицы (GDT или LDT): селектор должен быть "определен".
- Селектор должен обозначать дескриптор сегмента кода или данных
  (а не дескриптор сегмента состояния задачи, LDT или шлюза).
- Для команды VERR сегмент должен быть доступен для чтения. Для
  команды VERW сегмент должен быть сементом данных, доступным
  для чтения.
- Если кодовый сегмент доступен для чтения и является
  конформным, уровень привилегированности дескриптора (DPL) для
  команды VERR может иметь любое значение. В противном случае
  DPL должен быть больше или равен (это соответствует меньшей
  или равной привилегированности) как текущего уровня
  привилегированности, так и RPL селектора.
Выполняется такая же проверка достоверности, как если бы сегмент
был загружен в регистр DS, ES, FS или GS, и был выполнен
указанный доступ (чтения или записи). Флаг ZF принимает
результат проверки достоверности. Значение селектора не может
давать в результате исключение защиты, позволяя программному
обеспечению предупреждать возможные проблемы доступа к сегменту.
Изменяемые флаги
----------------
Флаг ZF устанавливается, если сегмент доступен, и очищается в
противном случае.
Исключения защищенного режима
----------------------------------
Сбои, генерируемые неверной адресацией операнда памяти,
содержащего селектор; селектор не загружается в какой-либо
сегментный регистр, а сбои, относящиеся к операнду селектора, не
генерируются.
#GP(0) в случае недопустимого исполнительного адреса операнда
памяти в сегментах CS, DS, ES, FS или GS; #SS(0) в случае
недопустимого адреса в сегменте SS; #PF(код сбоя) в случае
страничного сбоя; #AC для невыравненной ссылки к памяти при
текущем уровне привилегированности, равном 3.
Исключения режима реальных адресов
---------------------------------------
Прерывание 6; команды VERR и VERW в режиме реальных адресов не
распознаются.
Исключения виртуального режима 8086
----------------------------------------
Те же исключения, что и для режима реальных адресов: #AC
для невыравненной ссылки к памяти при текущем уровне
привилегированности, равном 3.
-----------------------------------------------------------------
WAIT - Ожидание
-----------------------------------------------------------------
|Код       Команда     Число      Описание                      |
|операции              тактовых                                 |
|                      циклов                                   |
|                                                               |
|9B        WAIT         1-3      Заставляет процессор проверить |
|                                наличие числовых исключений    |
-----------------------------------------------------------------
Описание
--------
Команда WAIT заставляет процессор проверить наличие подвешенных
немаскируемых числовых исключений, прежде чем перейти к
следующей команде.
Изменяемые флаги
----------------
     Отсутствуют
Исключения защищенного режима
----------------------------------
#NM, если MP и TS в CR0 установлены.
Исключения режима реальных адресов
---------------------------------------
Прерывание 7, если MP и TS в CR0 установлены.
Исключения виртуального режима 8086
----------------------------------------
#NM, если MP и TS в CR0 установлены.
Примечания
----------
Помещение команды WAIT после команды ESC гарантируют, что все
немаскируемые исключения операций с плавающей точкой, которые
могут быть сгенерированы командами, будут обработаны до того,
как процессор сможет моддифицировать результаты этих команд.
FWAIT это альтернативная мнемоническая форма команды WAIT.
Информация об использовании команды WAIT (FWAIT) приводится в
главе 18, в разделе "Параллельная обработка".
-----------------------------------------------------------------
WBINVD - Обратная запись и аннулирование кеша
-----------------------------------------------------------------
|Код       Команда     Число      Описание                      |
|операции              тактовых                                 |
|                      циклов                                   |
|                                                               |
|0F 09     WBINVD       5        Обратная запись и аннулирование|
|                                всего кеша                     |
-----------------------------------------------------------------
Работа команды
--------------
Очистка внутреннего кеша
Сигнал внешнему кешу о необходимости выполнить обратную запись
Сигнал внешнему кешу о необходимости очистки
Описание
--------
Очищается внутренний кеш, и генерируется специальный цикл шины,
указывающий, что внешний кеш должен выполнить запись его
содержимого в главную оперативную память. Далее следует еще один
специальный цикл шины, указывающий внешнему кешу на то, что
внешний кеш должен быть очищен.
Изменяемые флаги
----------------
     Отсутствуют
Исключения защищенного режима
----------------------------------
     Отсутствуют
Исключения режима реальных адресов
---------------------------------------
     Отсутствуют
Исключения виртуального режима 8086
----------------------------------------
     Отсутствуют
Примечания
----------
Команда зависима от реализации; ее работа может по-разному
реализовываться будущими процессорами Intel.
Ответственность за исполнение сигналов обратной записи и очистки
внешнего кеша лежит на соответствующем аппаратном обеспечении.
Процессорами 386 эта команда не поддерживается. Информация об
использовании этой команды совместимо с процессорами 386 см. в
разделе 3.11. Запрет кеширования описан в разделе 12.2.
-----------------------------------------------------------------
XADD - Обмен местами и сложение
-----------------------------------------------------------------
|Код       Команда     Число      Описание                      |
|операции              тактовых                                 |
|                      циклов                                   |
|                                                               |
|0F C0 /r  XADD r/m8,r8   3/4    Обмен местами регистра - байта |
|                                и байта r/m; загрузка суммы    |
|                                в байт r/m                     |
|0F C1 /r  XADD r/m16,r16 3/4    Обмен местами регистра - слова |
|                                и слова r/m; загрузка суммы    |
|                                в слово r/m                    |
|0F C1 /r  XADD r/m32,r32 3/4    Обмен местами регистра -       |
|                                двойного слова и двойного слова|
|                                r/m; загрузка суммы в          |
|                                двойное слово r/m              |
-----------------------------------------------------------------
Работа команды
--------------
врем <- DEST
DEST <- врем + SRC
SRC <- врем
Описание
--------
Команда XADD загружает DEST и SRC, а затем загружает сумму DEST
с исходным значением SRC в DEST.
Изменяемые флаги
----------------
Флаги CF, PF, AF, SF, ZF и OF получают такие же значения, как и
в случае команды ADD.
Исключения защищенного режима
----------------------------------
#GP(0), если назначением является сегмент, недоступный для
записи; #GP(0) в случае недопустимого исполнительного адреса
операнда памяти в сегментах CS, DS, ES, FS или GS; #SS(0) в
случае недопустимого адреса в сегменте SS; #PF(код сбоя) в
случае страничного сбоя; #AC для невыравненной ссылки к памяти
при текущем уровне привилегированности, равном 3.
Исключения режима реальных адресов
---------------------------------------
Прерывание 13, если какая-либо часть операнда лежит вне
пространства исполнительных адресов от 0 до 0FFFFH.
Исключения виртуального режима 8086
----------------------------------------
Те же исключения, что и для режима реальных адресов: #PF (код
сбоя) для страничных сбоев. #AC для невыравненной ссылки к
памяти при текущем уровне привилегированности, равном 3.
Примечания
----------
Данная команда может быть использована с префиксом LOCK.
Микропроцессор 386 DX не реализует эту команду. При
использовании команды вы должны обеспечить эквивалентный код,
также работающий и на процессоре 386 DX. О том, как во время
выполнения определить, является ли процессор процессором i486,
написано в разделе 3.11.
-----------------------------------------------------------------
XCHG - Обмен местами регистра/памяти и регистра
-----------------------------------------------------------------
|Код       Команда     Число      Описание                      |
|операции              тактовых                                 |
|                      циклов                                   |
|                                                               |
|90 +r     XCHG AX,r16     3     Обмен местами регистра - слова |
|                                и AX                           |
|90 +r     XCHG r16,AX     3     Обмен местами регистра - слова |
|                                и AX                           |
|90 + r    XCHG EAX,r32    3     Обмен местами регистра -       |
|                                двойного слова и EAX           |
|90 + r    XCHG r32,EAX    3     Обмен местами регистра -       |
|                                двойного слова и EAX           |
|86 /r     XCHG r/m8,r8    3/5   Обмен местами регистра - байта |
|                                и байта по исполнительному     |
|                                адресу                         |
|86 /r     XCHG r8,r/m8    3/5   Обмен местами регистра - байта |
|                                и байта по исполнительному     |
|                                адресу                         |
|87 /r     XCHG r/m16,r16  3/5   Обмен местами регистра - слова |
|                                и слова по исполнительному     |
|                                адресу                         |
|87 /r     XCHG r16,r/m16  3/5   Обмен местами регистра - слова |
|                                и слова по исполнительному     |
|                                адресу                         |
|87 /r     XCHG r/m32,r32  3/5   Обмен местами регистра -       |
|                                двойного слова и двойного слова|
|                                по исполнительному адресу      |
|87 /r     XCHG r32,r/m32  3/5   Обмен местами регистра -       |
|                                двойного слова и двойного слова|
|                                по исполнительному адресу      |
-----------------------------------------------------------------
Работа команды
--------------
врем <- DEST
DEST <- SRC
SRC <- врем
Описание
--------
Команда XCHG меняет местами два операнда. Операнды могут
следовать в любой последовательности. Если в команде участвует
операнд памяти, то на время обмена возбуждается сигнал LOCK#,
независимо от присутствия или отсутствия префикса LOCK или от
значения IOPL.
Изменяемые флаги
----------------
     Отсутствуют
Исключения защищенного режима
----------------------------------
#GP(0), если назначением является сегмент, недоступный для
записи; #GP(0) в случае недопустимого исполнительного адреса
операнда памяти в сегментах CS, DS, ES, FS или GS; #SS(0) в
случае недопустимого адреса в сегменте SS; #PF(код сбоя) в
случае страничного сбоя; #AC для невыравненной ссылки к памяти
при текущем уровне привилегированности, равном 3.
Исключения режима реальных адресов
---------------------------------------
Прерывание 13, если какая-либо часть операнда лежит вне
пространства исполнительных адресов от 0 до 0FFFFH.
Исключения виртуального режима 8086
----------------------------------------
Те же исключения, что и для режима реальных адресов: #PF (код
сбоя) для страничных сбоев. #AC для невыравненной ссылки к
памяти при текущем уровне привилегированности, равном 3.
-----------------------------------------------------------------
XLAT/XLATB - Ассоциативная трансляция в таблице
-----------------------------------------------------------------
|Код       Команда     Число      Описание                      |
|операции              тактовых                                 |
|                      циклов                                   |
|                                                               |
|D7        XLAT m8         4     Установка AL равным байту      |
|                                памяти DS:[(E)BX+AL без знака] |
|D7        XLATB           4     Установка AL равным байту      |
|                                памяти DS:[(E)BX+AL без знака] |
-----------------------------------------------------------------
Работа команды
--------------
IF AddressSize = 16
THEN
  AL <- (BX + ZeroExtend(AL))
ELSE (* AddressSize = 32 *)
  AL <- (EBX + ZeroExtend(AL))
FI;
Описание
--------
Команда XLAT изменяет регистр AL с индекса таблицы на элемент
таблицы. Регистр AL должен представлять собой индекс без знака
для таблицы, адресуемой парой регистров DS:BX (в случае атрибута
размера адреса, равного 16), или DS:EBX (в случае атрибута
размера адреса 32 бита).
Операнд команды XLAT позволяет переопределение сегмента. Команда
XLAT использует содержимое регистра BX даже при его отличии от
смещения операнда. Смещение операнда должно быть помещено в
регистр BX или EBX предыдущей командой.
Форма команды, не имеющая операнда, XLATB, может быть
использована, если таблица для BX или EBX всегда находится в
сегменте DS.
Изменяемые флаги
----------------
     Отсутствуют
Исключения защищенного режима
----------------------------------
#GP(0) в случае недопустимого исполнительного адреса операнда
памяти в сегментах CS, DS, ES, FS или GS; #SS(0) в случае
недопустимого адреса в сегменте SS; #PF(код сбоя) в случае
страничного сбоя; #AC для невыравненной ссылки к памяти при
текущем уровне привилегированности, равном 3.
Исключения режима реальных адресов
---------------------------------------
Прерывание 13, если какая-либо часть операнда лежит вне
пространства исполнительных адресов от 0 до 0FFFFH.
Исключения виртуального режима 8086
----------------------------------------
Те же исключения, что и для режима реальных адресов: #PF (код
сбоя) для страничных сбоев. #AC для невыравненной ссылки к
памяти при текущем уровне привилегированности, равном 3.
-----------------------------------------------------------------
XOR - Логическое исключающее ИЛИ
-----------------------------------------------------------------
|Код       Команда     Число      Описание                      |
|операции              тактовых                                 |
|                      циклов                                   |
|                                                               |
|34 ib    XOR  AL,imm8     1     XOR  для  непосредственного    |
|                                байта и  AL                    |
|35 iw    XOR  AX,imm16    1     XOR  для  непосредственного    |
|                                слова и  AX                    |
|35 id    XOR  EAX,imm32   1     XOR  для  непосредственного    |
|                                двойного слова  и EAX          |
|80 /6 ib XOR  r/m8,imm8   1/3   XOR  для  непосредственного    |
|                                байта и  байта r/m             |
|81 /6 iw XOR  r/m16,imm16 1/3   XOR  для  непосредственного    |
|                                слова и  слова r/m             |
|81 /6 id XOR  r/m32,imm32 1/3   XOR  для  непосредственного    |
|                                двойного слова и               |
|                                двойного слова r/m             |
|83 /6 ib  XOR r/m16,imm8  1/3   XOR для   непосредственного    |
|                                расширенного знаком байта      |
|                                из слова r/m                   |
|83 /6 ib  XOR r/m32,imm8  1/3   XOR для   непосредственного    |
|                                расширенного знаком байта      |
|                                из двойного слова r/m          |
|30 /r     XOR r/m8,r8     1/3   XOR  для  регистра -           |
|                                байта и  байта r/m             |
|31 /r     XOR r/m16,r16   1/3   XOR  для  регистра -           |
|                                слова и  слова r/m             |
|31 /r     XOR r/m32,r32   1/3   XOR  для  регистра -           |
|                                двойного слова и               |
|                                двойного слова r/m             |
|32 /r     XOR r8,r/m8     1/2   XOR  для  регистра -           |
|                                байта и  байта r/m             |
|33 /r     XOR r16,r/m16   1/2   XOR  для  регистра -           |
|                                слова и  слова r/m             |
|33 /r     XOR r32,r/m32   1/2   XOR  для  регистра -           |
|                                двойного слова и               |
|                                двойного слова r/m             |
-----------------------------------------------------------------
Работа команды
--------------
DEST <- LeftSRC XOR RightSRC;
CF <- 0;
OF <- 0;
Описание
--------
Команда XOR вычисляет исключающее ИЛИ (XOR) для двух заданных ей
операндов. Каждый бит результата равен 1, если соответствующие
биты операндов различны; в противном случае этот бит равен 0.
Ответ замещает собой первый операнд.
Изменяемые флаги
----------------
Флаги OF и CF очищаются; флаги SF, ZF и PF устанавливаются в
соответствии с результатом; флаг AF неопределен.
Исключения защищенного режима
----------------------------------
#GP(0), если назначением является сегмент, недоступный для
записи; #GP(0) в случае недопустимого исполнительного адреса
операнда памяти в сегментах CS, DS, ES, FS или GS; #SS(0) в
случае недопустимого адреса в сегменте SS; #PF(код сбоя) в
случае страничного сбоя; #AC для невыравненной ссылки к памяти
при текущем уровне привилегированности, равном 3.
Исключения режима реальных адресов
---------------------------------------
Прерывание 13, если какая-либо часть операнда лежит вне
пространства исполнительных адресов от 0 до 0FFFFH.
Исключения виртуального режима 8086
----------------------------------------
Те же исключения, что и для режима реальных адресов: #PF (код
сбоя) для страничных сбоев. #AC для невыравненной ссылки к
памяти при текущем уровне привилегированности, равном 3.
-----------------------------------------------------------------


Яндекс цитирования