mul

8086 and later

Unsigned Multiply

mul r/m8 | mul r/m16 | mul r/m32 | mul r/m64 | mul reg32, reg32, r/m32 | mul reg64, reg64, r/m64 | mul reg16, r/m16 | mul reg32, r/m32 | mul reg64, r/m64 | mul reg16, r/m16, imm8 | mul reg32, r/m32, imm8 | mul reg64, r/m64, imm8 | mul reg16, r/m16, imm16 | mul reg32, r/m32, imm32 | mul reg64, r/m64, imm32 | mul [reg16], reg16, r/m16 | mul [reg32], reg32, r/m32 | mul [reg64], reg64, r/m64

MUL performs unsigned integer multiplication. The other operand to the multiplication, and the destination operand, are implicit, in the following way:

  • For MUL r/m8, AL is multiplied by the given operand; the product is stored in AX.

  • For MUL r/m16, AX is multiplied by the given operand; the product is stored in DX:AX.

  • For MUL r/m32, EAX is multiplied by the given operand; the product is stored in EDX:EAX.

Signed integer multiplication is performed by the IMUL instruction: see IMUL.

Loading...

Forms

Every form of mul the assembler accepts, from NASM's own instruction table. The second column is the processor that introduced the form; a badge marks a form that needs an extension, that is lockable, or that long mode dropped.

FormSinceNotes
mul r/m88086long
mul r/m168086long
mul r/m32386long
mul r/m64x86-64long
mul reg32, reg32, r/m32recentbmi2
mul reg64, reg64, r/m64x86-64bmi2long
mul reg16, r/m16386
mul reg32, r/m32386
mul reg64, r/m64x86-64long
mul reg16, r/m16, imm8186long
mul reg32, r/m32, imm8386long
mul reg64, r/m64, imm8x86-64long
mul reg16, r/m16, imm16186long
mul reg32, r/m32, imm32386long
mul reg64, r/m64, imm32x86-64long
mul [reg16], reg16, r/m16x86-64apxlong
mul [reg32], reg32, r/m32x86-64apxlong
mul [reg64], reg64, r/m64x86-64apxlong