微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 汇编不懂

汇编不懂

时间:10-02 整理:3721RD 点击:
例4.2 设两个16位无符号数,分别存放在30H、
31H单元和32H、33H单元,求它们的和,结果保存
在34H和35H单元中。默认为(低字节和高字节)
MOV A ,30H
ADD A ,32H
MOV 34H ,A
MOV A ,31H
ADDC A ,33H
MOV 35H ,A
为什么低四位不用ADDC,若有进位就要影响高四位,为什么不用

小编有点弄不清楚ADD和ADDC这两条语句。ADD是不带进位加法。ADD A ,32H 就是A+32H.ADDC就是带进位加法。ADDC A ,33H 就是A+33H+C.低位相加就是用ADD A ,32H.值保存在A.进位保存在C.高位相加的时候就用ADDC A ,33H。也就是高位相加还要加上进位C。因为低位相加的时候是个位,没有更低位的进位,只有向高位进位,因此不用ADDC。

假设题目中的十六位数是FFFFH和FFFFH,那么低位的30H跟32H相加不是会带进位吗,还是说这题目本身就有个限制说30H跟32H中的数不能太大,以免产生进位。

假设题目中的十六位数是FFFFH和FFFFH,那么低位的30H跟32H相加不是会带进位吗,还是说这题目本身就有个限制说30H跟32H中的数不能太大,以免产生进位。

不要意思,小编回的帖子现在才看到,小编还是有点搞不懂,假如题目十六位数是FFFFH和FFFFH。那么低位相加的时候ADD A ,32H ,运行的是FF+FF,得到的结果是1FEH,其中FE保存在A中,进位1保存在C中。高位相加的时候ADDC A ,33H,运行的是FF+FF+C。因为第一次相加的时候进位保存在C中,那么现在C=1.
ADD和ADDC的区别是是否加C.因为低位相加的时候没有低位的进位,因此不用加C.

而高位相加的时候要考虑低位相加的时候是否有进位,因此要用ADDC,和C一起相加。

知道了,谢谢!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top