IMUL—Signed Multiply
Opcode
F6 /5
F7 /5
F7 /5
0F AF / r
0F AF / r
6B / r ib
6B / r ib
6B / r ib
6B / r ib
69 / r iw
69 / r id
69 / r iw
69 / r id
Description
Performs a signed multiplication of two operands. This instruction has three forms,
depending on the number of operands.
• One-operand form. This form is identical to that used by the MUL instruction.
Here, the source operand (in a general-purpose register or memory location) is
multiplied by the value in the AL, AX, or EAX register (depending on the operand
size) and the product is stored in the AX, DX:AX, or EDX:EAX registers,
respectively.
• Two-operand form. With this form the destination operand (the first operand) is
multiplied by the source operand (second operand). The destination operand is a
general-purpose register and the source operand is an immediate value, a
general-purpose register, or a memory location. The product is then stored in the
destination operand location.
• Three-operand form. This form requires a destination operand (the first operand)
and two source operands (the second and the third operands). Here, the first
source operand (which can be a general-purpose register or a memory location) is
multiplied by the second source operand (an immediate value). The product is then
stored in the destination operand (a general-purpose register).
When an immediate value is used as an operand, it is sign-extended to the length of
the destination operand format.
The CF and OF flags are set when significant bits are carried into the upper half of the
result. The CF and OF flags are cleared when the result fits exactly in the lower half of
the result.
Volume 4: Base IA-32 Instruction Reference
Instruction
IMUL r/m8
IMUL r/m16
IMUL r/m32
IMUL r16,r/m16
IMUL r32,r/m32
IMUL r16,r/m16,imm8
IMUL r32,r/m32,imm8
IMUL r16,imm8
IMUL r32,imm8
IMUL r16,r/
m16,imm16
IMUL r32,r/
m32,imm32
IMUL r16,imm16
IMUL r32,imm32
Description
AX AL r/m byte
DX:AX AX r/m word
EDX:EAX EAX r/m doubleword
word register word register r/m word
doubleword register doubleword register r/m doubleword
word register r/m16 sign-extended immediate byte
doubleword register r/m32 sign-extended immediate byte
word register word register sign-extended immediate byte
doubleword register doubleword register sign-extended
immediate byte
word register r/m16 immediate word
doubleword register r/m32 immediate doubleword
word register r/m16 immediate word
doubleword register r/m32 immediate doubleword
4:207