汇编-乘除法指令
乘法指令
- 无符号的乘法指令 \(MUL\)
- 带符号的乘法指令 \(IMUL\)
**注意 : ** 乘法指令采用隐含寻址,隐含了存放被乘数的累加器 \(AL\) 或 \(AX\) , 以及存放结果的 \(AX\) 或 \(AX, DX\) \((16 · 16)是32位,需要 DX存放高16位\)
无符号数乘法指令
格式 : \(MUL \ OPRD\) 操作数不能是立即数
操作 :
- 如果 \(OPRD\) 是字节数 \(AL · OPRD ---> AX\)
- 如果 \(OPRD\) 是16位数 \(AX · OPRD ---> DXAX\)
有符号数乘法指令
格式 : \(IMUL \ OPRD\) 操作数不能是立即数
指令执行原理
- 将两个操作数取补码 \((对负数按位取反加1,正数不变)\)
- 做乘法运算
- 将乘积取补码
除法指令
- 无符号的除法指令 \(DIV\)
- 带符号的乘法指令 \(IDIV\)
除法指令的操作
-
若 \(OPRD\) 是字节数
执行: \(AX / OPRD\)
结果: \(AL 是商 \ AH是余数\)
-
若 \(OPRD\) 是双字节数
执行: \(DXAX / OPRD\)
结果: \(AX 是商 \ DX是余数\)
指令要求被除数是除数的双倍字长
算术运算类指令小结
算术运算类指令的执行会影响标志位
- \(INC\) 和 \(DEC\) 指令的执行不会影响 \(CF\)