Три формы одной команды различаются количеством операндов. Во всех случаях множители имеют одинаковый размер.
В первой форме источник умножается на содержимое 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
Сравнивает операнды путём вычитания второго операнда из первого и устанавливает флаги состояния в соответствии с результатом операции. Результат вычитания не сохраняется.
Первый операнд может быть:
— регистр общего назначения;
— память.
Второй операнд может быть:
— непосредственный операнд;
— регистр общего назначения;
— память.
Два операнда не могут быть памятью одновременно.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.