Синтаксис |
IMUL множитель_1
IMUL множитель_1, множитель_2
IMUL произведение, множитель_1, множитель_2 |
Машинный код |
F6 /5 — IMUL r/m8
F7 /5 — IMUL r/m16
F7 /5 — IMUL r/m32
OF AF /r — IMUL r16,r/m16
OF AF /r — IMUL r32,r/m32
6B /r ib — IMUL r16,r/m16,imm8
68 /r ib — IMUL r32,r/m32,imm8
6B /r ib — IMUL r16,imm8
6B /r ib — IMUL r32,imm8
69 /r iw — IMUL r16,r/m16,imm16
69 /r id — IMUL r32,r/m32,imm32
69 /r iw — IMUL r16,imm16
69 /r id — IMUL r32,imm32 |
Описание |
Умножение со знаком. |
Действие |
Команда имеет три формы, различающиеся количеством операндов:
- С одним операндом — требует явного указания местоположения только одного сомножителя, который может быть расположен в ячейке памяти или регистре. Местоположение произведения зависит от размерности множителей:
Размер операндов |
Первый множитель |
Второй множитель |
Результат |
Байт |
AL |
r/m8 |
AX |
Слово |
AX |
r/m16 |
DX:AX |
Двойное слово |
EAX |
r/m32 |
EDX:EAX |
- С двумя операндами — первый операнд определяет местоположение первого сомножителя. На его место впоследствии будет записан результат. Второй операнд определяет местоположение второго сомножителя.
- С тремя операндами — первый операнд определяет местоположение результата, второй операнд — местоположение первого сомножителя, третий операнд может быть непосредственно заданным значением размером в байт, слово или двойное слово.
|
Флаги |
- Для однооперандной команды:
OF=1 CF=1 — значимые биты переносятся в верхнюю половину результата; OF=0 CF=0 — результат помещается точно в младшей половине результата. Состояние остальных флагов: SF=? ZF=? AF=? PF=?.
- Для двух- и трехоперандной команды:
OF=1 CF=1 — результат слишком большой и усекается; OF=0 CF=0 — размер результата точно соответствует операнду назначения. Состояние остальных флагов: SF=? ZF=? AF=? PF=?.
|