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
◄Summary► ◄Detail► ◄Example► ◄Timings Key► ◄Encodings Key►
──────────────────────────────────────────────────────────────────────────────
1111011w mod,101,r/m disp (0 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*
──────────────────┼────────────────────┼────────────────────────────────────
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*
──────────────────┴────────────────────┴────────────────────────────────────
* The 80386 has an early-out multiplication algorithm. Therefore multiply-
ing 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 or 2) data (1 or 2)
──────────────────────────┬────────────────┬────────────────────────────────
IMUL reg16,immed │ imul cx,25 │ 88/86 ─
│ │ 286 21
│ │ 386 b=9-14,w=9-22,d=9-38
──────────────────────────┼────────────────┼────────────────────────────────
IMUL reg16,reg16,immed │ imul dx,ax,18 │ 88/86 ─
│ │ 286 21
│ │ 386 b=9-14,w=9-22,d=9-38
──────────────────────────┼────────────────┼────────────────────────────────
IMUL reg16,mem16,immed │imul bx,[si],60│ 88/86 ─
│ │ 286 24
│ │ 386 b=12-17,w=12-25,d=12-41
──────────────────────────┴────────────────┴────────────────────────────────
-♦-