Команды MUL и IMUL позволяют перемножать два числа. Команда IMUL используется для перемножения чисел со знаком, а команда MUL - для чисел без знака.

 

Команда IMUL (форма 1)
Синтаксис: IMUL op1
Операнды: op1 - r/m8, r/m16, r/m32
Назначение: Умножение со знаком
Процессор: 8086+
Флаги: Флаги CF и OF сбрасываются в 0, если размер результата умножения получился меньше или равным размеру заданного операнда. В противном случае эти флаги становятся равными 1.
Значения флагов SF, ZF, AF и PF не определены.
Комментарий: Если размерность операнда составляет 8 бит, то команда IMUL производит умножение содержимого регистра AL на значение операнда и помещает результат в регистр AX.
Если операнд - 16-битное слово, команда IMUL производит умножение содержимого регистра AX на значение операнда и помещает результат в пару регистров DX:AX.
Если операнд - двойное слово, команда IMUL производит умножение содержимого регистра EAX на значение операнда и помещает результат в пару регистров EDX:EAX.
Ограничения: Нет
Примеры:
mov	al,5
mov	bl,3
imul	bl	;AX=000Fh
Команда IMUL (форма 2)
Синтаксис: IMUL op1,op2,op3
Операнды: op1 - r16, r32
op2 - r/m16, r/m32
op3 - i8, i16, i32
Назначение: Умножение со знаком
Процессор: 80186+
Флаги: Флаги CF и OF устанавливается в 1, если результат умножения не вместился в регистр назначения (первый операнд). В противном случае эти флаги сбрасываются в 0.
Значения флагов SF, ZF, AF и PF не определены.
Комментарий: Команда выполняет умножение второго операнда на третий операнд и помещает результат в первый операнд.
Ограничения: Разрядность операндов должна совпадать. Исключением является использование в качестве второго операнда непосредственного 8-битного значения.
Примеры:
imul	dx,cx,-45
imul	ax,[bx],3
Команда IMUL (форма 3)
Синтаксис: IMUL op1,op2
Операнды: op1 - r16, r32
op2 - r/m16, r/m32, i8, i16, i32
Назначение: Умножение со знаком
Процессор: 80186+
Флаги: Флаги CF и OF устанавливается в 1, если результат умножения не вместился в регистр назначения (первый операнд). В противном случае эти флаги сбрасываются в 0.
Значения флагов SF, ZF, AF и PF не определены.
Комментарий: Команда выполняет умножение первого операнда на второй операнд и помещает результат в первый операнд.
Ограничения: Разрядность операндов должна совпадать. Исключением является использование в качестве второго операнда непосредственного 8-битного значения.
Примеры:
imul	dx,cx
imul	ebx,334
Команда MUL
Синтаксис: MUL op1
Операнды: op1 - r/m8, r/m16, r/m32
Назначение: Умножение без знака
Процессор: 8086+
Флаги: Флаги CF и OF сбрасываются в 0, если старшая половина результата равна 0. В противном случае эти флаги устанавливаются в 1.
Значения флагов SF, ZF, AF и PF не определены.
Комментарий: Если размерность операнда составляет 8 бит, то команда MUL производит беззнаковое умножение содержимого регистра AL на значение операнда и помещает результат в регистр AX.
Если операнд - 16-битное слово, команда MUL производит беззнаковое умножение содержимого регистра AX на значение операнда и помещает результат в пару регистров DX:AX.
Если операнд - двойное слово, команда MUL производит беззнаковое умножение содержимого регистра EAX на значение операнда и помещает результат в пару регистров EDX:EAX.
Ограничения: Нет
Примеры:
mov	al,45
mov	bl,3
mul	bl	;AX=0087h