汇编带进位加法指令问题

ADC 带进位加法在什么情况下用他啊 . 还有双精度数是什么意思啊.
我看到ADD AX CX
ADC DX BX 为什么要这么做 ADD AX CX ADD DX BX 不行吗
ADC是不是就要配合ADD的啊 就 ADC AX BX 不行吧

ADD指令只是将操作数中给出的两个数相加
而ADC则是再两个操作数相加的基础上再加上CF里的数(可能是1和0)
你可能对这个加上CF里的数的过程很费解吧?下面解释为什么加这个CF

当两个操作数的和大于所能表示的位数的时候,会出现进位的现象,但寄存器的位数又是有限的,这个进的位放到哪里呢?其实是放到CPU的标志寄存器里去了,下面举两个产生进位和没产生进位的ADD指令
MOV AL,11
ADD AL,11
这个ADD指令的和是22,没有产生进位,CF=0
MOV AL,0FEH
ADD AL,64H
这个的和是162H,八位的寄存器表示不下了,CPU将CF设置成1,AL=62
因为两个八位的二进制数最多只能产生一位的进位,所以一个CF就够用了

下面回想一下小学的100以内的加法运算的过程
然后看看如何进行超出寄存器所能表示的位数的数的加法运算
比如计算64+27,先将4和7相加,得13,我们可以把这个3就当成是AL这个寄存器里的数,而将这个1当成是CF里的数,这样我们进行第二位的计算时,先计算6+2,然后在加上这个"CF"里的1,结果的9,所以最后的结果就是93

现在明白带进位加法指令的意义的吧?

给你举一个用16位寄存器计算32位加法的例子:
第一加数:DX为高位,AX为低位
第二加数:CX为高位,BX为低位
结果放在DX(高位)和AX中

ADD AX,BX
ADC DX,CX

就这么简单的两条指令O(∩_∩)O~

双精度就是表示小数的一种方式,用存储空间的一部分代表科学计数法的a×10^n的a
一部分代表n
和单精度基本上没什么两样,只是表示的范围比单精度的大,因为位数比单精度的大嘛,单精度是32位的,双精度的是64位的
单精度:
http://baike.baidu.com/view/1007029.html
双精度:
http://baike.baidu.com/view/2182680.html
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-04-10
ADC带进位加法在加多字节数时使用 之所以adc dx,bx add ax,cx
是因为 一个双字节数的高位存在dx,低位cx 而另一个则是bx,ax
双精度数是一种表示小数的格式约定
第2个回答  2018-01-09
先将4和7相加,得13?

不是11吗
相似回答