Организация ЭВМ и систем: Курс лекций (Позиционные системы счисления. Процессоры семейства IA-32. Лазерные принтеры), страница 19

Три формы одной команды различаются количеством операндов. Во всех случаях множители имеют одинаковый размер.

В первой форме источник умножается на содержимое AL, AX или EAX в зависимости от размера операнда. Результат располагается в AX, DX:AX или EDX:EAX соответственно.

Источником может быть:

—  регистр;

—  память.

Во второй форме источник умножается на приёмник, и произведение заносится в приёмник.

Источником может быть:

—  непосредственный операнд;

—  регистр общего назначения;

—  память.

Приёмником может быть регистр.

В третьей форме произведение источников заносится в приёмник.

Первым источником может быть:

—  регистр общего назначения;

—  память.

Вторым источником может быть непосредственный операнд.

Приёмником может быть регистр.

Во втором и третьем случаях возможно переполнение с потерей старших разрядов. Тогда будут установлены флаги OF и CF, иначе данные флаги будут сброшены. В первом случае будут флаги сброшены тогда и только тогда, когда размер результата не превышает размера множителей, то есть результат помещается в младшую половину приёмника. Иначе флаги устанавливаются.

Флаги AF, PF, SF, ZF не определены.

В некоторых книгах, в частности, в [3], описан только первый формат данной команды.

DIV            источник                             целочисленное деление без знака                   8086

Источник задаёт делитель. Делимое имеет размер, в два раза больший размера делителя.

Источником может быть:

—  регистр;

—  память.

Расположение делимого, частного и остатка определяется по следующей таблице:

Делимое

Размер делителя

Частное

Остаток

AX

8

AL

AH

DX:AX

16

AX

DX

EDX:EAX

32

EAX

EDX

Флаги состояния не определены. Переполнение или деление на ноль вызывает исключение #DE в защищённом режиме и прерывание 0 — в режиме реальной адресации.

IDIV         источник                             целочисленное деление со знаком                   8086

Аналогично DIV, но при делении учитывается знак числа.

Примечание. В книге [1] в описаниях команд DIV и IDIV ошибочно сказано: «Выполняет деление … AL, AX или EAX (в зависимости от размера источника) на источник…». Такого деления в процессорах семейства IA-32 нет.

INC            операнд                               увеличение числа на единицу     8086

Увеличивает операнд на 1.

Операнд может быть:

—  регистр общего назначения;

—  память.

Флаг CF не изменяется. Остальные флаги состояния устанавливаются в соответствии с результатом операции.

DEC            операнд                               уменьшение числа на единицу    8086

Уменьшает операнд на 1.

Операнд может быть:

—  регистр общего назначения;

—  память.

Флаг CF не изменяется. Остальные флаги состояния устанавливаются в соответствии с результатом операции.

NEG            операнд                               обращение знака числа                8086

Обращает знак числа.

Операнд может быть:

—  регистр общего назначения;

—  память.

Если операнд равен нулю, то флаг CF сбрасывается, иначе флаг CF устанавливается. Остальные флаги состояния устанавливаются в соответствии с результатом операции.

CMP            операнд1, операнд2            сравнение чисел                           8086

Сравнивает операнды путём вычитания второго операнда из первого и устанавливает флаги состояния в соответствии с результатом операции. Результат вычитания не сохраняется.

Первый операнд может быть:

—  регистр общего назначения;

—  память.

Второй операнд может быть:

—  непосредственный операнд;

—  регистр общего назначения;

—  память.

Два операнда не могут быть памятью одновременно.