IMUL

Синтаксис 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=?.



К списку команд