- •80286 И 80386 выходят за рамки данной книги и поэтому в данной главе также
- •Xor и test.
- •Idiv: Целое деление знаковых величин
- •Imul: Целое умножение знаковых величин
- •In: Ввод байта или слова из порта
- •Inc: Инкремент
- •Int: Прерывание
- •Into: Прерывание по переполнению
- •Iret: Возврат из обработки прерывания
- •2. См. Также команду ret.
- •Ip значение операнда (относительное смещение) и выполняет таким образом
- •Ino: Переход, если нет переполнения
- •Ip значение операнда (относительное смещение) и выполняет таким образом
- •80186, 80286 И 80386 имеют, кроме того, команду outs (Output String -
- •1; Ротация более чем на один бит требует указания регистра cl, который
- •Xchg: Перестановка
- •Xchg cx,word).
- •Xlat: Перекодировка
- •Xor: Исключающее или
- •Xor обрабатывает операнды побитово. Если проверяемые биты одинаковы, то
- •42936 / 16 2683 8 8 (Младшая цифра)
- •10 / 16 0 10 A (старшая цифра)
Into: Прерывание по переполнению
----------------------------------
О п е р а ц и я: Приводит к прерыванию при возникновении переполнения
(флаг OF установлен в 1) и выполняет команду IRET 4. Адрес подпрограммы
обработки прерывания (вектор прерывания) находится по адресу 10Н. См.
также команду INT.
Ф л а г и: Не меняются.
О б ъ е к т н ы й к о д: 11001110 (без операндов).
Iret: Возврат из обработки прерывания
---------------------------------------
О п е р а ц и я: Обеспечивает возврат из подпрограммы обработки
прерывания. Команда IRET выполняет следующее: 1) помещает слово из вершины
стека в регистр IP и увеличивает значение SP на 2; 2) помещает слово из
вершины стека в регистр CS и увеличивает значение SP на 2; 3) помещает
слово из вершины стека во флаговый регистр и увеличивает значение SP. на
2. См. Также команду ret.
Ф л а г и: Команда воздействует на все флаги.
О б ъ е к т н ы й к о д: 11001111 (бег операндов).
JA/JNBE: Переход по "выше" или "не ниже или равно"
----------------------------------------------------
О п е р а ц и я: Используется после проверки беззнаковых данных для
передачи управления по другому адресу. Если флаг CF равен нулю (нет
переноса) и флаг ZF равен нулю (не нуль), то команда прибавляет к регистру
Ip значение операнда (относительное смещение) и выполняет таким образом
переход.
Ф л а г и: Не меняются.
О б ъ е к т н ы й к о д: |01110111|--disp--|
JAE/JNB: Переход по "выше или равно" или "не ниже"
----------------------------------------------------
О п е р а ц и я: Используется после проверки беззнаковых данных для
передачи управления по другому адресу. Если флаг CF равен нулю (нет
переноса), то команда прибавляет к регистру IP значение операнда
(относительное смещение) и выполняет таким образом переход.
Ф л а г и: Не меняются.
О б ъ е к т н ы й к о д: |01110011|--disp--|
JB/JNAE: Переход по "ниже" или "не выше или равно"
----------------------------------------------------
О п е р а ц и я: Используется после проверки беззнаковых данных для
Передачи управления по другому адресу. Если флаг CF равен единице (есть
перенос), то команда прибавляет к регистру IP значение операнда
(относительное смещение) и выполняет таким образом переход.
Ф л а г и: Не меняются.
О б ъ е к т н ы й к о д: |01110010|--disp--|
JBE/JNA: Переход по "ниже или равно" или "не выше"
----------------------------------------------------
О п е р а ц и я: Используется после проверки беззнаковых данных для
передачи управления по другому адресу. Если флаг CF равен единице (есть
перенос) или флаг AF равен единице, то команда прибавляет к регистру IP
значение операнда (относительное смещение) и выполняет таким образом
переход.
Ф л а г и: Не меняются.
О б ъ е к т н ы й к о д: |01110110|--disp--|
JC: Переход по переносу
-------------------------
О п е р а ц и я: Идентична JB/JNAE.
JCXZ: Переход по "CX равно нулю"
----------------------------------
О п е р а ц и я: Выполняет передачу управления по указанному в
операнде адресу, если значение в регистре CX равно нулю. Команда JCXZ
может быть полезна в начале циклов LOOP.
Ф л а г и: Не меняются.
О б ъ е к т н ы й к о д: |11100011|--disp--|
JE/JZ: Переход по "равно" или по "нулю"
О п е р а ц и я: Используется после проверки знаковых или беззнаковых
данных для передачи управления по другому адресу. Если флаг ZF равен
единице (нулевое состояние), то команда прибавляет к регистру IP значение
операнда (относительное смещение) и выполняет таким образом переход.
Ф л а г и: Не меняются.
О б ъ е к т н ы й к о д: |01110100|--disp--|
JG/JNLE: Переход по "больше" или "не меньше или равно"
--------------------------------------------------------
О п е р а ц и я: Используется после проверки знаковых данных для
передачи управления по другому адресу. Если флаг ZF равен нулю (не нуль) и
флаги SF и OF одинаковы (оба 0 или оба 1), то команда прибавляет к
регистру IP значение операнда (относительное смещение) и выполняет таким
образом переход.
Ф л а г и: Не меняются.
О б ъ е к т н ы й к о д: |01111111|--disp--|
JGE/JNL: Переход по "больше или равно" или "не меньше"
--------------------------------------------------------
О п е р а ц и я: Используется после проверки знаковых данных для
передачи управления по другому адресу. Если флаги SF и OF одинаковы (оба 0
или оба 1), то команда прибавляет к регистру IP значение операнда
(относительное смещение) и выполняет таким образом переход.
Ф л а г и: Не меняются.
О б ъ е к т н ы й к о д: |01111101|--disp--|
JL/JNGE: Переход по "меньше" или "не больше или равно"
--------------------------------------------------------
О п е р а ц и я: Используется после проверки знаковых данных для
передачи управления по другому адресу. Если флаги SF и OF различны, то
команда прибавляет к регистру IP значение операнда (относительное
смещение) и выполняет таким образом переход.
Ф л а г и: Не меняются.
О б ъ е к т н ы й к о д: |01111100|--disp--|
JLE/JNG: Переход по "меньше или равно" или "не больше"
--------------------------------------------------------
О п е р а ц и я: Используется после проверки знаковых данных для
передачи управления по другому адресу. Если флаг ZF равен единице (нулевое
состояние) и флаги SF и OF различны, то команда прибавляет к регистру IP
значение операнда (относительное смещение) и выполняет таким образом
переход.
Ф л а г и: Не меняются.
О б ъ е к т н ы й к о д: |01111110|--disp--|
JMP: Безусловный переход
--------------------------
О п е р а ц и я: Выполняет переход по указанному адресу при любых
условиях. Команда JMP заносит в регистр IP необходимый адрес перехода.
Существует пять типов команды JMP для передачи управления внутри сегмента
или между сегментами. При межсегментном переходе в регистр CS заносится
также новый сегментный адрес.
Ф л а г и: Не меняются.
О б ъ е к т н ы й к о д (пять форматов):
Прямой переход внутри сегмента:
|11101001|disp-low|disp-high|
Прямой переход внутри сегмента (короткий):
|11101011|--disp--|
Косвенный переход внутри сегмента:
|11111111|mod100r/m|
Косвенный межсегментный переход:
|11111111|mod101r/m|
Прямой межсегментный переход:
|11101010|offset-low|offset-high|seg-low|seg-high|
JNC: Переход если нет переноса
--------------------------------
О п е р а ц и я: Идентична JAE/JNB.
JNE/JNZ: Переход по "не равно" или по "не нуль"
-------------------------------------------------
О п е р а ц и я: Используется после проверки знаковых данных для
передачи управления по другому адресу. Если флаг ZF равен нулю (ненулевое
состояние), то команда прибавляет к регистру IP значение операнда
(относительное смещение) и выполняет таким образом переход.
Ф л а г и: Не меняются.
О б ъ е к т н ы й к о д: |01110101|--disp--|