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