❶ 51单片机执行addc指令时,是将CY的值先带入求和,还是不带进位求和后判断了CY值后再加到结果上
51单片机执行addc指令时,是将CY的值先带入求和,比如:
CY=1,(ACC)=60H,那么
ADDC A,#10H 结果为(ACC)=71H
❷ 单片机加法add和addc到底是怎样运算的
ADD只是两个数相加,忽略以前加法运算的进位。
ADDC把进位也算进去了
你给的程序
MOV A,#25H A=?将0x25给寄存器A
MOV 40H, #1AH 40H=?将0x1a给ram中地址0x40所对应的空间
MOV R2,#33H R2=? 将0x33给R2寄存器
CLR C C=? 清除C
ADD A,R2 A=? A和R2相加,0x25+0x33=0x58,并不产生进位,此时A为0x58
ADDC A,40H A=? A和地址为0x40的数相加,0x58+0x1a+0x0=0x72(前面并没有进位);也没有进位
MOV R0,#40H R0=? 将0x40给R0寄存器
ADDC A, @RO A=? 这一举和ADDC A,40H是一样的。0x72+0x1a+0x0=0x8c
,还是没有进位
❸ 求助,单片机ADDC算法详解一下,谢谢!
38h+F0h+1h=29h
带C位的加法,两个对象分别是累加器和R0指向的内部RAM。
❹ 单片机语句ADDC A,C中C是什么意思
ADDC
A,C这条语句在51单片机中是没有的,这里的C如果是一个变量的话是可以的,但因为与“借位”标志关键字相同,所以不合法,编译是通不过的。你将ADDC
A,C改为ADDC
A,Cxx之类应该就可以了。当然这个Cxx在用之前需要申明。
❺ 单片机51,addc和add
低8 位相加时当然可以不考虑进位,用ADD即可 ,但高8 位相加时要考虑低8位相加时的进位
如果还有更多位,每次相加都要考虑低位的进位
❻ 单片机里的 ADDC 这条指令有什么意义 它能实现那些工能 它带进位位加法有什么用
ADDC表示在ADD加法的基础上再加上进位位CY。就是如果CY=1就再在ACC上加1。
它用用途就是可以很方便地进行多字节加法。
比如5678H+9ABCH,8051是8位机,只能做字节加法,所以就先做78H+BCH=134H,34H存在ACC,高位1放在CY中。然后把ACC中值取出,再做56H+9AH=F0H,再加CY,为F1H,连上刚才取出的,结果就是F134H。
❼ 单片机中ADDC的作用
您说的可能是汇编语言中“带进位加法”指令吧?它的含义是:
做加法时,如果上文留下来有进位标志,则要多加1。
在多字长的运算中,这是一个很常用的指令。
例如,您要计算两个双倍字长的整数的和,可以如下:
(1)先用普通加法指令,将加数和被加数的低位字相加,得到的机器和作为和的低位字,如有进位,同时会产生进位标志。
(2)再用ADDC指令,将加数和被加数的高位字相加,得到的机器和作为和的高位字。
在这个过程中,如果第(1)步产生了进位,自然就会在第二步的时候,将这个进位进上去。
注意在执行ADDC的时候,如果又有进位,还会产生进位标志。故这个方法可以推广到三倍字长、四倍字长、……等等计算中。
另外还有一个灵活应用:可以用它实现“连同进位标志的循环左移”,即:
用ADDC指令对累加器(或具有累加器作用的某寄存器)作“自己加自己”的操作,效果就是:该寄存器内容左移一位,上文留下的进位标志移入该寄存器的最低位,该寄存器的原最高位移入进位标志。
❽ 汇编中为什么要有ADD与ADDC两个指令。知道他们区别,但不知道为什么要有另一个指令。
在汇编语言编程的时候,ADDC指令,即是带进位的加法指令,用于多字节加法运算,低位字节相加可能产生进位,所以高位字节运算时,必须使用带进位的加法运算。
汇编中的ADD指令是加法指令,其功能是把源操作所指出的内容加到累加器A,其结果存在A中。但是对于多字节数相加,就必须用ADDC指令了。因为ADDC指令的功能是把源操作数所指出的内容和累加器内容及进位标志CY相加,结果存于A中。
单片机中的汇编指令包括,算术操作类指令,布尔变量操作类指令,逻辑操作数指令,控制转移类指令。其中算术操作类指令,又包括,加法、减法、加一、减一和乘法、除法运算指令。借助溢出标志可以对有符号数进行补码运算,借助进位标志,可进行多精度加、减运算。
(8)addc单片机扩展阅读
两数相加运算步骤:
1)把第一个数从它的存贮单元(Location)中取出来,送至运算器。
2)把第二个数从它所在的存贮单元中取出来,送至运算器;
3)相加;
4)把相加完的结果,送至存贮器中指定的单元。
ADD运算中的注意事项:
1)如果位7有进位,则进位标志Cy置“1”,否则清0;
2)如果位3有进位,则辅助进位标志Ac置“1”,否则清0;
3)溢出标志位OV:如果位6有进位,而位7没有进位;或者位7有进位,而位6 没有,则溢出标志位OV置“1”,否则清0。OV状态,只有在带符号数加法运算时才有意义。
❾ 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的运算
ADDC A,R1之后,
A=0x1C
CY=1; //由于高4位产生进行,所以CY置1
AC=0;
OV=0;
P=1; //奇偶效验位,由于A=0X1C为奇数,所以由硬件置1
由于ADDC指令的作用是:将Rn中的值于A中的值以及CY中值相加后,其结果送回A中.
由于之前C=1,所以79H+A2H+1=0x1C