汇编语言,想知道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
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-04
MOV AX,0087H
MOV BX,0096H
ADD AL,BL;AL=1DH,CF=1
ADC AH,BH;AH=1,00+00+CF=1,所以AX=011DH,若是ADD AH,BH AH=0
CF=1时,
ADC AH,BH就相当于ADD AH,BH ADD AH,1(或ADC AH,0)
若是CF=0,那么ADD 和ADC 运算的结果是一样的...
还是使用上面的数据...
ADD AX,BX;AX=011DH,但是没有进位,CF=0
本次运算的进位不影响本次运算(进位存放在CF里),只影响下次运算....
第2个回答  2011-05-04
无符数看CF
有符数看OF
mov al,0ffh
mov bl,2h
add al,bl
这样al=1
addc al,bl
这样得到的也是al=1
不过还有CF=1

用个最简单的例子。
add相当于9+2=1
addc相当于9+2=11,只是十位的1就是CF,而个位就在数据位上。
相似回答