带进位加法指令(4条)
这4条指令除与[1]功用相同外,在进行加法运算时还需考虑进位问题。
ADDC A,data ;(A)+(data)+(C)→(A) 累加器A中的内容与直接地址单元的内容连同进位位相加,成果存在A中
ADDC A,#data ;(A)+#data +(C)→(A) 累加器A中的内容与当即数连同进位位相加,成果存在A中
ADDC A,Rn ;(A)+Rn+(C)→(A) 累加器A中的内容与作业寄存器Rn中的内容、连同进位位相加,成果存在A中
ADDC A,@Ri ;(A)+((Ri))+(C)→(A) 累加器A中的内容与作业寄存器Ri指向地址单元中的内容、连同进位位相加,成果存在A中用处:将A中的值和这以后面的值相加,而且加上进位位C中的值。
阐明:因为51单片机是一种8位机,所以只能做8位的数学运算,但8位的运算规模只要0-255,这在实践作业中是不行的,因而就要进行扩展,一般是将2个8位的数学运算合起来,成为一个16位的运算,这样,能够表达的数的规模就能够抵达0-65535。怎么兼并呢?其实很简单,让咱们看一个十进制数的比如吧:
66+78
这两个数相加,咱们底子不在意这个进程,但事实上咱们是这样做的:先做6+8(低位),然后再做6+7,这是高位。做了两次加法,仅仅咱们做的时分并没有故意分红两次加法来做算了,或者说咱们并没有意识到咱们做了两次加法。之所以要分红两次来做,是因为这两个数超过了一位数所能表达的规模(0-9)。
在做低位时产生了进位,咱们做的时分是在恰当的方位点一下,然后在做高位加法时将这一点加进去。那么计算机中做16位加法时相同如此,先做低8位的,假如两数相加后产生了进位,也要“点一下”做个符号,这个符号上任进位位C,在程序状态字PSW中。在进行高位加法是将这个C加进去。
例如:1067H+10A0H,先做67H+A0H=107H,而107H明显超过了0FFH,因而,终究保存在A中的数是7,而1则到了PSW中的CY位了,换言之,CY就相当于100H。然后再做10H+10H+CY,成果是21H,所以终究的成果是2107H。