ADDC是什么意思?单片机问题,是不是加一
展开全部
这是51单片机的一条加法指令,可以完成带进位Cy的加法运算。
指令的形式是:ADDC A ,源操作数,加法是在A 中完成的,加法计算时的两个数一个数是A 中原有的数,另一个数即是源操作数,同时连同进位Cy一起加进来。
还是举例说明吧:如计算56A8H+2368H,这么写程序:
MOV A , #0A8H ;先把第一个数的低8位A8H送A
ADD A , #68H ;与另一个数的低8位相加,即A(A8H)+68H,加法结果是A=10H,因结果超过了255(FFH)则进位Cy=1,即结果是110H
MOV 30H, A ;把低8位结果送到30H单元保存起来
MOV A , #56H ;再把第一个数的高8位送A,准备计算高8位数
ADDC A,#23H ;与另一个数的高8位相加,这时要同时把低8位的进位Cy=1加进来,即A(56H)+23H+1(因Cy1),则A=7AH,
MOV 31H, A ;最后将高8位的计算结果送到31H单元保存。最终结果是7A10H,这必须要计算两次,也要用两个单元来保存。
如上可见,先计算低8位时,用ADD,是不带进位,因低8位加时还没有进位,而计算高8位时,就必须带进位的加法了,必须用ADDC了,因低8位加时有进位,假如没有进位,也要用ADDC,但这时的Cy=0,加上0就是低8位没有进位。
还有一种情况是多个8位数相加,因相加的结果超过了8位数(255),所以,每一次加法也必须用带进位加法计算,即必须用ADDC了。
指令的形式是:ADDC A ,源操作数,加法是在A 中完成的,加法计算时的两个数一个数是A 中原有的数,另一个数即是源操作数,同时连同进位Cy一起加进来。
还是举例说明吧:如计算56A8H+2368H,这么写程序:
MOV A , #0A8H ;先把第一个数的低8位A8H送A
ADD A , #68H ;与另一个数的低8位相加,即A(A8H)+68H,加法结果是A=10H,因结果超过了255(FFH)则进位Cy=1,即结果是110H
MOV 30H, A ;把低8位结果送到30H单元保存起来
MOV A , #56H ;再把第一个数的高8位送A,准备计算高8位数
ADDC A,#23H ;与另一个数的高8位相加,这时要同时把低8位的进位Cy=1加进来,即A(56H)+23H+1(因Cy1),则A=7AH,
MOV 31H, A ;最后将高8位的计算结果送到31H单元保存。最终结果是7A10H,这必须要计算两次,也要用两个单元来保存。
如上可见,先计算低8位时,用ADD,是不带进位,因低8位加时还没有进位,而计算高8位时,就必须带进位的加法了,必须用ADDC了,因低8位加时有进位,假如没有进位,也要用ADDC,但这时的Cy=0,加上0就是低8位没有进位。
还有一种情况是多个8位数相加,因相加的结果超过了8位数(255),所以,每一次加法也必须用带进位加法计算,即必须用ADDC了。
展开全部
这是我引用别人的,楼主看看吧。不用给分了
您说的可能是汇编语言中“带进位加法”指令吧?它的含义是:做加法时,如果上文留下来有进位标志,则要多加1。在多字长的运算中,这是一个很常用的指令。例如,您要计算两个双倍字长的整数的和,可以如下:(1)先用普通加法指令,将加数和被加数的低位字相加,得到的机器和作为和的低位字,如有进位,同时会产生进位标志。(2)再用ADDC指令,将加数和被加数的高位字相加,得到的机器和作为和的高位字。在这个过程中,如果第(1)步产生了进位,自然就会在第二步的时候,将这个进位进上去。注意在执行ADDC的时候,如果又有进位,还会产生进位标志。故这个方法可以推广到三倍字长、四倍字长、……等等计算中。另外还有一个灵活应用:可以用它实现“连同进位标志的循环左移”,即:用ADDC指令对累加器(或具有累加器作用的某寄存器)作“自己加自己”的操作,效果就是:该寄存器内容左移一位,上文留下的进位标志移入该寄存器的最低位,该寄存器的原最高位移入进位标志。
您说的可能是汇编语言中“带进位加法”指令吧?它的含义是:做加法时,如果上文留下来有进位标志,则要多加1。在多字长的运算中,这是一个很常用的指令。例如,您要计算两个双倍字长的整数的和,可以如下:(1)先用普通加法指令,将加数和被加数的低位字相加,得到的机器和作为和的低位字,如有进位,同时会产生进位标志。(2)再用ADDC指令,将加数和被加数的高位字相加,得到的机器和作为和的高位字。在这个过程中,如果第(1)步产生了进位,自然就会在第二步的时候,将这个进位进上去。注意在执行ADDC的时候,如果又有进位,还会产生进位标志。故这个方法可以推广到三倍字长、四倍字长、……等等计算中。另外还有一个灵活应用:可以用它实现“连同进位标志的循环左移”,即:用ADDC指令对累加器(或具有累加器作用的某寄存器)作“自己加自己”的操作,效果就是:该寄存器内容左移一位,上文留下的进位标志移入该寄存器的最低位,该寄存器的原最高位移入进位标志。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询