ADD只是两个数相加,忽略以前加法运算的进位。.docVIP

ADD只是两个数相加,忽略以前加法运算的进位。.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
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表示在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?? ?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。

文档评论(0)

tangzhaoxu123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档