汇编语言,想知道ADD和ADDC的具体区别,最好有例子可是说明,不明白这个进位是怎么算的。
ADD 两数相加,不加进位位。
ADDC 两数相加,同时再加个进位位。进位当时为1就加1 为0就加0相当于不加
一般用在多字节数相加中。最低位相加,用ADD ,加完后,可能产生进位,高字节相加就用ADDC
这样,低字节相加产生的进位就会被加进来。
比如 0080H + 0180H
低字节相加用 ADD
80H+80H=100H 用ADD指令得到 00H 并溢出产生进位 C=1
高字节 相加用 ADDC
00H+01H=01H 用 ADDC 指令两数相加结果 01H会再加上进位位 1 得到 02H
0080H+0180H = 02 00H
再比如
0080H + 0101H
80H+01H = 81H 没有溢出进位为 C=0
00H+01H =01H 用ADDC指令会 再加进位位 C=0 得到 01H
结果 0080H+0101H = 0181H
字数据指的是16位的,双字数据指的是32位的。
=============================================
在16位机中,字加法可用ADD一次完成,双字加法需要两次。
一般:
16位加法:
MOV AX,被加数
ADD AX,加数
32位加法:
MOV AX,被加数低16位
ADD AX,加数低16位
MOV DX,被加数高16位
ADC DX,加数高16位 ;考虑上面的进位,用带进位加法指令
-------------------------------
在32位机中,字加法可用ADD一次完成,双字加法也可用ADD完成,但需要32位加法指令。
16位加法:
MOV AX,被加数
ADD AX,加数
32位加法:
MOV EAX,被加数32位
ADD EAX,加数32位
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!