Рубрики
Учебный курс

Урок 12. Преобразование типов

Часть команд процессор может обработать только со значениями одной разрядности. Процессор без колебаний перемножит байт на байт и слово на слово. Но никак не байт на слово, или двойное слово на слово. Чтобы складывать, перемножать и выполнять другие операции со значениями разных размеров, программист должен озаботиться преобразованием типов в своей программе. Под преобразованием типов я […]

Рубрики
Справочник по ассемблеру

DIV

СинтаксисDIV делитель
Машинный
код
F6 /6 — DIV r/m8
F7 /6 — DIV r/m16
F7 /6 — DIV r/m32
ОписаниеДеление без знака.
ДействиеDIV используется при делении без учета знака. Команда делит 8-, 16-, 32- битные значение регистра (делимое) на хранимые в регистре или памяти байт, слово или двойное слово (делитель). Частное от деления помещается в AL, AX или EAX регистр соответственно. Остаток помещается в AH, DX или EDX.
Размер делимого (8-, 16- или 32-битный регистр), а также выделяемое место под результат определяются размером регистра, используемого в качестве делителя:
Размер операндаДелимоеДелительЧастноеОстаток
БайтAXr/m8ALAH
СловоDX:AXr/m16AXDX
Двойное словоEAX:EDXr/m32EAXEDX
ФлагиФлаги OF, SF, ZF, AF, PF и CF не установлены.

Пример использования команды div:

Рубрики
Справочник по ассемблеру

MUL

СинтаксисMUL множитель
Машинный
код
F6 /4 — MUL r/m8
F7 /4 — MUL r/m16
F7 /4 — MUL r/m32
ОписаниеУмножение без знака.
ДействиеКоманда получает единственный явный аргумент, размер которого определяет регистры, выделеяемые командой под результат операции умножения (подробности приведены в таблице ниже). Другой множитель предварительно помещается в AL/AX/EAX регистр.
Размеры множителей и регистры, отводимые под результат исполнения команды:
Размер операндовПервый множительВторой множительРезультат*
БайтALr/m8AX
СловоAXr/m16DX:AX
Двойное словоEAXr/m32EDX:EAX
*Старшая часть результата помещается в регистры AH, DX или EDX соответственно.
ФлагиЕсли старшая половина результата нулевая:
OF=CF=0 SF=? ZF=? AF=? PF=?.
Если старшая половина результата ненулевая:
OF=CF=1 SF=? ZF=? AF=? PF=?.

Пример использования команды mul: