Операция: Сравнивают строки любой длины. Этим командам обычно предшествует префикс REPn, например REPE CMPSB. Команда CMPSB сравнивает память по байтам, а команда CMPSW — по словам. Первый операнд этих команд адресуется регистровой парой DS:SI, а второй — регистровой парой ES:DI. В случае, если флаг DF установлен в 0, то сравнение происходит слева направо, регистры SI и DI при этом увеличиваются после каждого сравнения. В случае, если флаг DF установлен в 1, то сравнение происходит справа налево, а регистры SI и DI при этом уменьшаются после каждого сравнения.
Флаги: Команда воздействует на флаги AF, CF, OF, PF, SF и ZF.
Объектный код: 1010011w.
CWD
Преобразование слова в двойное слово
Операция: Расширяет арифметическое значение в регистре АХ до размеров двойного слова в регистровой паре DX:AX, дублируя при этом знаковый бит (15-й бит в регистре АХ) через регистр DX. Обычно используется для получения 32-битового делимого.
Флаги: Не меняются.
Объектный код: 10011001 (без операндов).
DAA
Десятичная коррекция для сложения
Операция: Корректирует результат сложения двух BCD (десятичных упакованных) элементов в регистре AL. В случае, если четыре правых бита имеют значение больше 9 или флаг AF установлен в 1, то команда DAA прибавляет 6 к регистру AL и устанавливает флаг AF. В случае, если регистр AL содержит значение больше, чем 9F, или флаг CF установлен в 1, то команда DAA прибавляет 60Н к регистру AL и устанавливает флаг CF.
Флаги: Команда воздействует на флаги AF. CF, PF, SF и 2F (флаг OF неопределен).
Объектный код: 00100111 (без операндов).
DAS
Десятичная коррекция для вычитания
Операция: Корректирует результат вычитания двух BCD (десятичных упакованных) чисел в регистре AL. В случае, если четыре правых бита имеют значение больше 9 или флаг AF установлен в 1, то команда DAS вычитает 60Н из регистра AL и устанавливает флаг CF.
Флаги: Команда воздействует на флаги AF, CF, PF, SF и ZF.
Объектный код: 00101111 (без операндов).
DEC
Декремент
Операция: Вычитает 1 из байта или слова в регистре или в памяти например DEC СХ.
Флаги: Команда воздействует на флаги AF, OF, PF, SF и ZF.
DIV
Деление
Операция: Выполняет деление беззнакового делимого (16 или 32 бит) на беззнаковый делитель (8 или 16 бит). Левый единичный бит рассматривается как бит данных, а не как минус для отрицательных чисел. Для 16-битового деления делимое должно находиться в регистре АХ, а 8-битовый делитель возможен в регистре или в памяти, например DIV BH. Частное от деления получается в регистре AL, а остаток — в регистре AН. Для 32-битового деления делимое должно находиться в регистровой паре DX:AX а 16-битовый делитель возможен в регистре или в памяти, например DIV СХ. Частное от деления получается в регистре AХ, а остаток — в регистре DX.
Флаги: Команда воздействует на флаги AF, CF, OF, PF SF и ZF (все не определены).
ESC
Переключение на сопроцессор
Операция: Обеспечивает использование сопроцессора для выполнения специальных операций. Команда ESC передает в сопроцессор инструкцию и операнд для выполнения необходимой операции.
Флаги: Не меняются.
HLT
Останов микропроцессора
Операция: Приводит процессор в состояние останова, в котором происходит ожидание прерывания. При завершении команды HLT регистры CS:IP указывают на следующую команду. При возникновении прерывания процессор записывает в стек регистры CS и IP и выполняет подпрограмму обработки прерывания. При возврате из подпрограммы команда IRET восстанавливает регистры CS и IP из стека и управление передается на команду, следующую за командой HLT.
Флаги: Не меняются.
Объектный код: 11110100 (без операндов).
IDIV
Целое деление знаковых величин
Операция: Выполняет деление знакового делимого (16 или 32 бит) на знаковый делитель (8 или 16 бит). Левый единичный бит рассматривается как знак минус для отрицательных чисел. Для 16-битового деления делимое должно находиться в регистре АХ, a 8-битовый делитель возможен в регистре или в памяти, например IDIV DL. Частное от деления получается в регистре AL, а остаток — в регистре АН. Для 32-битового деления делимое должно находиться в регистровой паре DX:AX, а 16-битовый делитель возможен в регистре или в памяти, например IDIV BX. Частное от деления получается в регистре АХ, а остаток — в регистре DX.
Флаги: Команда воздействует на флаги AF, CF, OF, PF, SF и ZF.
IMUL
Целое умножение знаковых величин
Операция: Выполняет умножение на знаковый множитель (8 или 16 бит). Левый единичный бит рассматривается как знак минус для отрицательных чисел. Для 8-битового умножения множимое должно находиться в регистре AL, а множитель возможен в регистре или в памяти, например IMUL BL. Произведение получается в регистре АХ. Для 16-битового умножения множимое должно находиться в регистре АХ, а множитель возможен в регистре или в памяти, например IMUL BX. Произведение получается в регистровой паре DX:AX.
Флаги: Команда воздействует на флаги CF и OF (флаги AF PF SF и ZF не определены).
IN
Ввод байта или слова из порта
Операция: Передает из вводного порта один байт в регистр AL или два байта в регистр АХ). Порт кодируется как фиксированный числовой операнд (IN АХ,порт#) или как переменная в регистре DX (IN AX,DX).
Флаги: Не меняются.
INC
Инкремент
Операция: Прибавляет 1 к байту или слову в регистре или в памяти, например INC СХ.
Флаги: Команда воздействует на флаги AF, OF, PF, SF и ZF.
INT
Прерывание
Операция: Прерывает выполнение программы и передает управление по одному из 256 адресов (векторов прерывания). Команда INT выполняет следующее:
1) уменьшает значение SP на 2 и заносит в стек флаговый регистр, сбрасывает флаги IF и TF;
2) уменьшает значение SP на 2 и заносит регистр CS в стек, старшее слово из вектора прерывания помещает в регистр CS;
3) уменьшает значение SP на 2 и заносит регистр IP в стек, младшее слово из вектора прерывания помещает в регистр IP.
Флаги: Команда воздействует на флаги IF и TF.
INTO
Прерывание по переполнению
Операция: Приводит к прерыванию при возникновении переполнения (флаг OF установлен в 1) и выполняет команду IRET 4. Адрес подпрограммы обработки прерывания (вектор прерывания) находится по адресу 10Н.
Флаги: Не меняются.
Объектный код: 11001110 (без операндов).
IRET
Возврат из обработки прерывания
Операция: Обеспечивает возврат из подпрограммы обработки прерывания. Команда IRET выполняет следующее:
1) помещает слово из вершины стека в регистр IP и увеличивает значение SP на 2;
2) помещает слово из вершины стека в регистр CS и увеличивает значение SP на 2;
3) помещает слово из вершины стека во флаговый регистр и увеличивает значение SP на 2.