- •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 (старшая цифра)
Idiv: Целое деление знаковых величин
--------------------------------------
О п е р а ц и я: Выполняет деление знакового делимого (16 или 32 бит)
на знаковый делитель (8 или 16 бит). Левый единичный бит рассматривается
как знак минус для отрицательных чисел. Для 16-битового деления делимое
должно находиться в регистре АХ, a 8-битовый делитель возможен в регистре
или в памяти, например IDIV DL. Частное от деления получается в регистре
AL, а остаток - в регистре АН. Для 32-битового деления делимое должно
находиться в регистровой паре DX:AX, а 16-битовый делитель возможен в
регистре или в памяти, например IDIV BX. Частное от деления получается в
регистре АХ, а остаток - в регистре DX. См. команды CBW и CWD для
расширения знакового делимого, а также команду DIV.
Ф л а г и: Команда воздействует на флаги AF, CF, OF, PF, SF и ZF.
О б ъ е к т н ы й к о д: |1111011w|mod111r/m|
Imul: Целое умножение знаковых величин
----------------------------------------
О п е р а ц и я: Выполняет умножение на знаковый множитель (8 или 16
бит). Левый единичный бит рассматривается как знак минус для отрицательных
чисел. Для 8-битового умножения множимое должно находиться в регистре AL,
а множитель возможен в регистре или в памяти, например IMUL BL.
Произведение получается в регистре АХ. Для 16-битового умножения множимое
должно находиться в регистре АХ, а множитель возможен в регистре или в
памяти, например IMUL BX. Произведение получается в регистровой паре
DX:AX. См. также команду MUL.
Ф л а г и: Команда воздействует на флаги CF и OF (флаги AF PF SF и ZF
не определены).
О б ъ е к т н ы й к о д: |1111011w|mod101r/m|
In: Ввод байта или слова из порта
-----------------------------------
О п е р а ц и я: Передает из вводного порта один байт в регистр AL
или два байта в регистр АХ). Порт кодируется как фиксированный числовой
операнд (IN АХ,порт#) или как переменная в регистре DX (IN AX,DX).
Процессоры 80186, 80286 и 80386 имеют, кроме того, команду INS (Input
String - ввод строки). См. также команду OUT.
Ф л а г и: Не меняются.
О б ъ е к т н ы й к о д (два формата):
Переменный порт: |1110110w|
Фиксированный порт: |1110010w|--port--|
Inc: Инкремент
----------------
О п е р а ц и я: Прибавляет 1 к байту или слову в регистре или в
памяти, например INC СХ. См. также команду DEC.
Ф л а г и: Команда воздействует на флаги AF, OF, PF, SF и ZF.
О б ъ е к т н ы й к о д (два формата):
Регистр: |01000reg|
Регистр или память: |1111111w|mod000r/m|
Int: Прерывание
-----------------
О п е р а ц и я: Прерывает выполнение программы и передает управление
по одному из 256 адресов (векторов прерывания). Команда INT выполняет
следующее: 1) уменьшает значение SP на 2 и заносит в стек флаговый
регистр, сбрасывает флаги IF и TF; 2) уменьшает значение SP на 2 и заносит
регистр CS в стек, старшее слово из вектора прерывания помещает в регистр
CS; 3) уменьшает значение SP на 2 и заносит регистр IP в стек, младшее
слово из вектора прерывания помещает в регистр IP.
Ф л а г и: Команда воздействует на флаги IF и TF.
О б ъ е к т н ы й к о д:
|1100110v|--type--| (если v = 0, то type = 3).