学习来源:微机原理与接口技术——吴宁,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位存储结果
低位存商,高位存余数