汇编-乘除法指令

乘法指令

  • 无符号的乘法指令 \(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\)
posted @ 2022-02-11 22:54  ccz9729  阅读(723)  评论(0编辑  收藏  举报