汇编--算术运算指令:加减乘除

时间:2024-03-21 11:27:42

学习来源:微机原理与接口技术——吴宁,C51单片机汇编程序设计

加法

  • 普通加法ADD:两个字节运算
  • 带进位的加法ADDC:多位运算,使用前要先将CF清零(8086是ADC,c51是ADDC)
  • 加一指令INC:前两条会影响全部六个标志位,这一条不会影响CF(则其后面不能跟JNC类根据CY转移类指令)
    INC OPRD 其中操作数不能是立即数,不能是段寄存器,常用于修改地址指针。

标志位补充:
汇编--算术运算指令:加减乘除
汇编--算术运算指令:加减乘除
汇编--算术运算指令:加减乘除

减法

单片机:

  • 带借位减法指令SUBB
  • 减一指令DEC

8086:

  • 普通减法指令SUB
  • 带借位减法指令SBB
  • 减一指令DEC
  • 比较指令CMP
  • 求补指令NEG

SUB:对标志位的影响与ADD指令同,只适合两字节操作
SBB:OPRD1-OPRD2-CF–>OPRD1
DEC:OPRD-1–>OPRD
汇编--算术运算指令:加减乘除

HLT用于暂停执行
NEG:
汇编--算术运算指令:加减乘除
汇编--算术运算指令:加减乘除
CMP:
汇编--算术运算指令:加减乘除
这个指令对目标操作数没有影响,主要用于比较两个数的大小,然后影响标志位
汇编--算术运算指令:加减乘除
汇编--算术运算指令:加减乘除
汇编--算术运算指令:加减乘除
XCHG是交换两数的存储位置,这段代码的作用是找最大数
汇编--算术运算指令:加减乘除


汇编--算术运算指令:加减乘除

乘法

单片机:
在MCS-51单片机中,乘法指令只有一条: MUL AB 该指令执行时将对存放于累加器A中的无符号乘数相乘,积的高字节存于B寄存器中,低字节存于累加器A中。指令执行后将影响CY和OV标志,CY复位,对于OV:当积大于255时(即B中不为0),OV为1;否则,OV为0。

8086:

  • 无符号数的乘法指令MUL
  • 带符号数的乘法指令IMUL

汇编--算术运算指令:加减乘除
DX用于存放运算 结果的高16位
MUL:
汇编--算术运算指令:加减乘除
汇编--算术运算指令:加减乘除
IMUL:
汇编--算术运算指令:加减乘除

除法

单片机:
在MCS-51单片机中,除法指令也只有一条: DIV AB 该指令执行时将用存放在累加器A中的无符号被除数与存放在B寄存器中的无符号除数相除,除得的结果,商的存于累加器A中,余数存于B寄存器中。 指令执行后将影响CY和OV标志,一般情况CY和OV都清0,只有当B寄存器中的除数为0时,CY和OV才被置1。

8086:

  • 无符号数的除法指令DIV
  • 带符号数的除法指令IDIV
    格式:DIV OPED
    注意:除法要求被除数是除数的双倍字长
    汇编--算术运算指令:加减乘除
    字节数:8位 用AX:16位存储结果
    双字节数:16位 用DXAX共32位存储结果
    低位存商,高位存余数

汇编--算术运算指令:加减乘除
汇编--算术运算指令:加减乘除

小结

汇编--算术运算指令:加减乘除