8086汇编语言指令(10)乘法指令MUL/IMUL

3、乘法指令

 

计算机的乘法指令分为无符号乘法指令和有符号乘法指令,它们的唯一区别就在于:数据的最高位是作为“数值”参与运算,还是作为“符号位”参与运算。

乘法指令的被乘数都是隐含操作数,乘数在指令中显式地写出来。CPU会根据乘数是8位、16位,还是32位操作数,来自动选用被乘数:ALAXEAX。指令的功能是把显式操作数和隐含操作数相乘,并把乘积存入相应的寄存器中。

 

?无符号数乘法指令MUL(Unsigned Multiply Instruction)

指令的格式:MUL Reg/Mem

受影响的标志位:CF和OF(AF、PF、SF和ZF无定义)

指令的功能是把显式操作数和隐含操作数(都作为无符号数)相乘,所得的乘积按表5.2的对应关系存放。

?有符号数乘法指令IMUL(Signed Integer Multiply Instruction)

指令的格式:

IMUL

Reg/Mem

 

 

IMUL

Reg, Imm

;80286+

 

IMUL

Reg, Reg, Imm

;80286+

 

IMUL

Reg, Reg/Mem

;80386+

受影响的标志位:CF和OF(AF、PF、SF和ZF无定义)

1)、指令格式1——该指令的功能是把显式操作数和隐含操作数相乘,所得的乘积按表5.2的对应关系存放。

2)、指令格式2——其寄存器必须是16位/32位通用寄存器,其计算方式为:

Reg Reg × Imm

3)、指令格式3——其寄存器只能是16位通用寄存器,其计算方式为:

Reg1 Reg2×Imm 或 Reg1 Mem×Imm

4)、指令格式4——其寄存器必须是16位/32位通用寄存器,其计算方式为:

Reg1 Reg1×Reg2 或 Reg1 Reg1×Mem

在指令格式2~4中,各操作数的位数要一致。如果乘积超过目标寄存器所能存储的范围,则系统将置溢出标志OF为1。


 

乘数位数

隐含的被乘数

乘积的存放位置

举例

8位

AL

AX

MUL BL

16位

AX

DX-AX

MUL BX

32位

EAX

EDX-EAX

MUL ECX
                        

请使用浏览器的分享功能分享到微信等