IMUL Instruction (Cont.)

Two- and three- operand formats truncate the product to the length of the destination. If significant digits are lost, the Overflow and Carry flags are set.

 8-Bit Signed Multiplication   8-Bit Signed Multiplication   3-Operand Multiplication 

 
 .data

 
 x  SBYTE  -02h

 
 y  SBYTE  40h

 
 .code

 
 mov   al, x

 
 imul  y

 
 call  DumpRegs

 
 .data

 
 x  SBYTE  -03h

 
 y  SBYTE  40h

 
 .code

 
 mov   al, x

 
 imul  y

 
 call  DumpRegs

 
 .data

 
 x  SWORD  20h

 
 .code

 
 imul  bx, x, 400h

 
 call  DumpRegs
 Output   Output   Output 
  AX=
  CF=   OF=



  AX=
  CF=   OF=



  BX=
  CF=   OF=



 3-Operand Multiplication   2-Operand Multiplication   32-Bit Signed Multiplication 

 
 .data

 
 x  SWORD  -200h

 
 .code

 
 movsx  eax, x

 
 imul   ebx, eax, 0400h

 
 call   DumpRegs

 
 .data

 
 x  SDWORD  200h

 
 y  SDWORD  400h

 
 .code

 
 mov   ecx, x

 
 mov   ebx, y

 
 imul  ecx, ebx

 
 call  DumpRegs

 
 .data

 
 x  SDWORD  -200h

 
 y  SDWORD   400h

 
 .code

 
 mov   eax, x

 
 mov   ebx, y

 
 imul  ebx

 
 call  DumpRegs
 Output   Output   Output 
  EBX=
  CF=   OF=



  ECX=
  CF=   OF=



  EDX:EAX=
  CF=   OF=





      “I’m not arguing, I’m just explaining why I’m right.”    
      ― Unknown