单片机加法ADDC疑问解答.docx

上传人:小飞机 文档编号:3346510 上传时间:2023-03-12 格式:DOCX 页数:3 大小:37.60KB
返回 下载 相关 举报
单片机加法ADDC疑问解答.docx_第1页
第1页 / 共3页
单片机加法ADDC疑问解答.docx_第2页
第2页 / 共3页
单片机加法ADDC疑问解答.docx_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《单片机加法ADDC疑问解答.docx》由会员分享,可在线阅读,更多相关《单片机加法ADDC疑问解答.docx(3页珍藏版)》请在三一办公上搜索。

1、单片机加法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,#40

2、H / R0=? 将0x40给R0寄存器 ADDC A, RO / A=? 这一举和ADDC A,40H是一样的。0x72+0x1a+0x0=0x8c ,还是没有进位 ADDC表示在ADD加法的基础上再加上进位位CY。就是如果CY1就再在ACC上加1。 它用用途就是可以很方便地进行多字节加法。 比如5678H+9ABCH,8051是8位机,只能做字节加法,所以就先做78H+BCH134H,34H存在ACC,高位1放在CY中。然后把ACC中值取出,再做56H+9AHF0H,再加CY,为F1H,连上刚才取出的,结果就是F134H ADDC A,data ;+ 累加器A中的内容与直接地址单元的内容连

3、同进位位相加,结果存在A中 ADDC A,#data ;+#data + 累加器A中的内容与立即数连同进位位相加,结果存在A中 ADDC A,Rn ;+Rn+ 累加器A中的内容与工作寄存器Rn中的内容、连同进位位相加,结果存在A中 ADDC A,Ri ;+)+ 累加器A中的内容与工作寄存器Ri指向地址单元中的内容、连同进位位相加,结果存在A中 用途:将A中的值和其后面的值相加,并且加上进位位C中的值。 内容来自单片机之家 说明:由于51单片机是一种8位机,所以只能做8位的数学运算,但8位的运算范围只有0-255,这在实际工作中是不够的,因此就要进行扩展,一般是将2个8位的数学运算合起来,成为一

4、个16位的运算,这样,可以表达的数的范围就可以到达0-65535。如何合并呢?其实很简单,让我们看一个十进制数的例子吧: 66+78 这两个数相加,我们根本不在意这个过程,但事实上我们是这样做的:先做6+8,然后再做6+7,这是高位。做了两次加法,只是我们做的时候并没有刻意分成两次加法来做罢了,或者说我们并没有意识到我们做了两次加法。之所以要分成两次来做,是因为这两个数超过了一位数所能表达的范围。 在做低位时产生了进位,我们做的时候是在适当的位置点一下,然后在做高位加法时将这一点加进去。那么计算机中做16位加法时同样如此,先做低8位的,如果两数相加后产生了进位,也要“点一下”做个标记,这个标记就职进位位C,在程序状态字PSW中。在进行高位加法是将这个C加进去。 例如:1067H+10A0H,先做67H+A0H=107H,而107H显然超过了0FFH,因此,最终保存在A中的数是7,而1则到了PSW中的CY位了,换言之,CY就相当于100H。然后再做10H+10H+CY,结果是21H,所以最终的结果是2107H。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号