Assembly Language Help (alang.hlp) (Table of Contents; Topic list)
Important Notice
The pages on this site contain documentation for very old MS-DOS software, purely for historical purposes. If you're looking for up-to-date documentation, particularly for programming, you should not rely on the information found here, as it will be woefully out of date.
IMUL Instruction
 Summary Key Example                    Up Contents Index Back
────────────────────────────────────────────────────────────────────────────
 
 1111011w     mod,101,r/m      disp (0, 1, or 2)
──────────────────────────┬────────────────┬────────────────────────────────
 IMUL  reg                │imul  dx        │ 88/86 b=80-98,w=128-154
                          │                │   286 b=13,w=21
                          │                │   386 b=9-14,w=9-22,d=9-38*
                          │                │   486 b=13-18,w=13-26,d=13-42
──────────────────────────┼────────────────┼────────────────────────────────
 IMUL  mem                │imul  factor    │ 88/86 (b=86-104,w=134-160)+EA
                          │                │   286 b=16,w=24
                          │                │   386 b=12-17,w=12-25,d=12-41*
                          │                │   486 b=13-18,w=13-26,d=13-42
──────────────────────────┴────────────────┴────────────────────────────────
  * The 80386/486 has an early-out multiplication algorithm. Therefore,
    multiplying an 8-bit or 16-bit value in EAX takes the same time as
    multiplying the value in AL or AX.
 
    Word memory operands on the 8088 take (138-164)+EA clocks.
 
 011010s1     mod,reg,r/m      disp (0, 1, or 2)     data (1 or 2)
──────────────────────────┬────────────────┬────────────────────────────────
 IMUL  reg16,immed        │imul  cx,25     │ 88/86 ──
 IMUL  reg32,immed*       │                │   286 21
                          │                │   386 b=9-14,w=9-22,d=9-38
                          │                │   486 b=13-18,w=13-26,d=13-42
──────────────────────────┼────────────────┼────────────────────────────────
 IMUL  reg16,reg16,immed  │imul  dx,ax,18  │ 88/86 ──
 IMUL  reg32,reg32,immed* │                │   286 21
                          │                │   386 b=9-14,w=9-22,d=9-38
                          │                │   486 b=13-18,w=13-26,d=13-42
──────────────────────────┼────────────────┼────────────────────────────────
 IMUL  reg16,mem16,immed  │imul  bx,[si],60│ 88/86 ──
 IMUL  reg32,mem32,immed* │                │   286 24
                          │                │   386 b=12-17,w=12-25,d=12-41
                          │                │   486 b=13-18,w=13-26,d=13-42
──────────────────────────┴────────────────┴────────────────────────────────
  * 80386/486 only.
 
    The variations depend on the source constant size; destination
    size is not a factor.
 
 00001111     10101111         mod,reg,r/m       disp (0, 1, or 2)
──────────────────────────┬────────────────┬────────────────────────────────
 IMUL  reg16,reg16        │imul  cx,ax     │ 88/86 ──
 IMUL  reg32,reg32*       │                │   286 ──
                          │                │   386 w=9-22,d=9-38
                          │                │   486 b=13-18,w=13-26,d=13-42
──────────────────────────┼────────────────┼────────────────────────────────
 IMUL  reg16,mem16        │imul  dx,[si]   │ 88/86 ──
 IMUL  reg32,mem32*       │                │   286 ──
                          │                │   386 w=12-25,d=12-41
                          │                │   486 b=13-18,w=13-26,d=13-42
──────────────────────────┴────────────────┴────────────────────────────────
  * 80386/486 only.
 
    The variations depend on the source constant size; destination
    size is not a factor.
                                    -♦-