参考链接:http://www.answers.com/Q/What_is_the_basic_difference_between_MUL_and_IMUL_instruction_in_8086_microprocessor
MUL 用于无符号乘法,而 IMUL 用于有符号乘法。
在 8086 指令集中,这两条指令都会将累加器与给定操作数相乘,但它们对操作数数值的解释方式不同:
MUL将数值视为无符号整数。IMUL将数值视为有符号整数,采用二进制补码表示。
基本的结果存放位置是相同的:
- 当操作数是字节时:
```asm
AX = AL * operand
```
- 当操作数是字时:
```asm
DX:AX = AX * operand
```
例如,如果操作数是字节,AL 中的 8 位值会与 8 位操作数相乘,16 位结果存入 AX。如果操作数是字,AX 中的 16 位值会与 16 位操作数相乘,32 位结果存放在 DX:AX 中,其中高字在 DX,低字在 AX。
因此,主要区别不在于结果存放在哪里,而在于 CPU 在乘法前如何解释这些数字:MUL 按无符号数解释,IMUL 按有符号数解释。
