在51系列单片机的指令系统中,提供了完备的加、减、乘、除算术运算指令及增量(加1)、减量(减1)运算,可处理不带符号或带符号的8/16二进制数。除加1和减1指令外,算术运算指令会影响进位、半进位和溢出位三个标志位。 自动控制网www.eadianqi.com版权所有 1. 不带进位的加法指令 自动控制网www.eadianqi.com版权所有 这组指令的作用是把立即数,直接地址、工作寄存器及间接地址内容与累加器A的内容相加,运算结果存在A中。 本文来自www.eadianqi.com
ADD A, #data ;(A)+ data→(A) 本文来自www.eadianqi.com ADD A, direct ;(A)+(direct)→(A) 自动控制网www.eadianqi.com版权所有 ADD A, Ri ;(A)+(Ri)→(A) 本文来自www.eadianqi.com
ADD A, @Rj ;(A)+((Rj))→(A) 本文来自www.eadianqi.com 本组指令的执行将影响标志位AC、CY、OV、P。当和的第3、7位有进位时,分别将AC,CY标志位置位;否则复位。对于无符号数,进位标志位CY=1,表示溢出;CY=0表示无溢出。带符号数运算的溢出取决于第6、7位,若这2位中有一位产生进位,而另一位不产生进位,则溢出标志位OV置位,否则被复位。 自动控制网www.eadianqi.com版权所有 2. 带进位加法指令 自动控制网www.eadianqi.com版权所有
这组指令的作用是把立即数,直接地址、工作寄存器及间接地址内容与累加器A的内容以及进位位C相加,运算结果存在A中。 本文来自www.eadianqi.com 本组指令执行对标志位AC、CY、OV、P的影响与ADD指令相同。 本文来自www.eadianqi.com 3. 增量指令 本文来自www.eadianqi.com 这组指令的的功能均为原寄存器的内容加1,结果送回原寄存器。这组指令共有直接、寄存器、寄存器间接寻址等寻址方式: 本文来自www.eadianqi.com INC A ;(A)+1→(A) 本文来自www.eadianqi.com INC direct ;(direct)+1→(direct) 自动控制网www.eadianqi.com版权所有 INC Ri ;(Rn)+1→(Ri) 本文来自www.eadianqi.com INC @Rj ;((Rj))+1→((Rj)) 本文来自www.eadianqi.com INC DPTR ;(DPTR)+1→(DPTR) 自动控制网www.eadianqi.com版权所有 增量指令不会对任何标志有影响。 本文来自www.eadianqi.com
4. 带借位减法指令 本文来自www.eadianqi.com 这组指令包含立即数、直接地址、间接地址及工作寄存器与累加器A连同借位位C内容相减,结果送回累加器A中。 本文来自www.eadianqi.com
SUBB A, #data ;(A)- data -(C)→(A) 自动控制网www.eadianqi.com版权所有 SUBB A, direct ;(A)-(direct) - (C)→(A) 自动控制网www.eadianqi.com版权所有 SUBB A, Ri ;(A)-(Ri) -(C)→(A) 自动控制网www.eadianqi.com版权所有 SUBB A, @Rj ;(A)-((Rj)) -(C)→(A) 自动控制网www.eadianqi.com版权所有 本指令执行将影响标志位AC、CY、OV、P。若第七位有借位,则将CY置位,否则CY复位。若第3位有错位,则置位辅助进位标志AC,否则 AC复位。若第7和第6位中有一位需借位,而另一位不借位,则置位溢出标志OV。 本文来自www.eadianqi.com
当在进行单字节或多字节减法前,不知道进位标志位CY的值,则应在减法指令前先将CY复位清“0”。 自动控制网www.eadianqi.com版权所有 5. 减量指令 自动控制网www.eadianqi.com版权所有 这组指令的作用是把所指的寄存器内容减1,结果送回原寄存器,这组指令共有直接、寄存器、寄存器间接寻址等寻址方式: 自动控制网www.eadianqi.com版权所有
DEC A ;(A)-1→(A) 本文来自www.eadianqi.com DEC direct ;(direct)-1→(direct) 自动控制网www.eadianqi.com版权所有 DEC Ri ;(Ri)-1→(Ri) 本文来自www.eadianqi.com
DEC @Rj ;((Rj))-1→((Rj)) 本文来自www.eadianqi.com
运算结果不影响任何标志位。 本文来自www.eadianqi.com 6. 乘法指令 自动控制网www.eadianqi.com版权所有 这条指令的作用是把累加器A和寄存器B中的8位无符号数相乘,所得到的是16位乘积,这个结果低8位存在累加器A,而高8位存在寄存器B中。 自动控制网www.eadianqi.com版权所有 MUL AB ;(A)×(B)→(B)和(A) 本文来自www.eadianqi.com 乘法指令需要4个机器周期。 自动控制网www.eadianqi.com版权所有 如果乘积大于255(0FFH),即B的内容不为0时,则置位溢出标志位OV,否则OV复位。进位标志位CY总是复位为0。 本文来自www.eadianqi.com 7. 除法指令 自动控制网www.eadianqi.com版权所有 这条指令的作用是把累加器A的8位无符号整数除以寄存器B中的8位无符号整数,所得到的商存在累加器A,而余数存在寄存器B中。 自动控制网www.eadianqi.com版权所有 DIV AB ;(A)÷(B)→(A)和(B) 自动控制网www.eadianqi.com版权所有 除法指令需要4个机器周期。 本文来自www.eadianqi.com 本指令总是将CY和OV标志位复位。当除数(B中内容)为00H时,那么执行结果将为不定值,则置位溢出标志位OV。 本文来自www.eadianqi.com 8. 十进制调整指令 本文来自www.eadianqi.com 在进行BCD码运算时,这条指令总是跟在ADD或ADDC指令之后,其功能是将执行加法运算后存于累加器A中的结果进行调整和修正。 本文来自www.eadianqi.com DA A 自动控制网www.eadianqi.com版权所有 |