算术运算指令的两个参与运算的操作数,一个存放在累加器a中(此操作数也为目的操作数);一个存放在r0~r7或@ri(片内ram)中,或是#data(立即数)。
算术运算指令可以分为加法指令、带进位的加法指令、带借位的减法指令、十进制调整指令、加1指令、减1指令、乘除指令。
1.加法指令(4条)
指令格式:
其中,<src>包括rn、@ri、direct、#data。
对标志位的影响:add对psw中的所有标志位均产生影响。
2.带进位的加法指令(4条)
指令格式:
其中,<src>包括rn、@ri、direct、#data。
对标志位的影响:addc对psw中的所有标志位均产生影响。
3.带借位的减法指令(4条)
指令格式:
其中,<src>包括rn、@ri、direct、#data。
对标志位的影响:subb对psw中的所有标志位均产生影响。
注意:mcs-51指令系统中没有不带借位的减法指令,欲实现不带借位的减法计算,应预先置cy=0(利用“clr c”指令),然后利用带借位的减法指令subb实现计算。
4.十进制调整指令(1条)
功能:跟在加法指令add或addc后面,对运算结果的十进制数进行bcd码修正,将它调整为压缩的bcd码数,以完成十进制加法运算功能。(www.xing528.com)
特点:十进制调整指令也称为bcd码修正指令,这是一条专用指令。两个压缩的bcd码按二进制数相加后必须经本指令调整才能得到压缩的bcd码的和。源操作数只能在累加器a中,结果存入a中。
指令格式:da a
注意:十进制调整指令不能对减法指令进行修正。bcd码减法必须采用bcd补码运算法则,变减法为补码加法(被减数+减数的补码,减数的补码=9ah-减数)。然后对其进行十进制调整来实现。
5.加1指令(5条)
功能:加1指令又称为增量指令,其功能是使操作数所指定的单元的内容加1。指令格式:
其中,<dest>既是源操作数又是目的操作数(即只有一个操作数),包括a、rn、direct、@ri、dptr。
对标志位的影响:除对累加器a操作影响p标志位外,其他操作均不影响psw的各标志位。
6.减1指令(4条)
功能:减1指令又称为减量指令,其功能是使操作数所指定的单元的内容减1。指令格式:
其中,<dest>既是源操作数又是目的操作数(即只有一个操作数),包括a、rn、direct、@ri。
对标志位的影响:同加1指令。
7.乘除指令(2条)
功能:实现乘法或除法操作。
特点:乘除指令在mcs-51指令系统中执行时间最长,均为四周期指令。
指令格式:
对标志位的影响:乘除指令影响psw中的cy、ov、p标志位。其中,cy位总是被清0,p是由累加器a中1的个数的奇偶性决定的。乘法运算中,若乘积大于ffh,则ov标志位置1,否则清0。除法运算中,若除数为0,则ov标志位置1,否则清0。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。