CF标志经过ADC进位加过后CF还是1吗
CF标志经过ADC进位加过后CF还是1吗第一位相加后,有进位,第二位相加后,无进位(这时是cf加上二位数的积,那如果要进行第三位相加,请问这时的CF应该是0还是1??)哎...
CF标志经过ADC进位加过后CF还是1吗
第一位相加后,有进位,
第二位相加后,无进位
(这时是cf加上二位数的积,那如果要进行第三位相加,请问这时的CF应该是0还是1??)
哎~,不知道是不是我写的不够明白,说得简单点(不知道是是否可以这样说)想问的是cf=1经过adc或者add相加后是否会变为0 展开
第一位相加后,有进位,
第二位相加后,无进位
(这时是cf加上二位数的积,那如果要进行第三位相加,请问这时的CF应该是0还是1??)
哎~,不知道是不是我写的不够明白,说得简单点(不知道是是否可以这样说)想问的是cf=1经过adc或者add相加后是否会变为0 展开
2个回答
展开全部
ADC进位加过后是否有进位,是与ADD的道理是一样的,如果和值超出了位数,就要进位,没有超出就不进位。例:
MOV DX,02H
MOV AX,0FFH
ADD AX,0FEH ;和=0FFH+0FEH=1FDH,和为17位,高位进到CF中。AX=0FDH,CF=1。
ADC DX,AX ;和=FDH+02H+CF=100H,和为17位。结果是DX=0000H,CF=1
如果首行为: MOV DX,01H
则尾行的ADC加过后CF=0。
==================================
进行ADC或ADD后,CF可能变为0也可能变为1。为什么变为0,为什么变为1,上面就是解释这个道理的。ADD或ADC后如果有进位则CF变为1,无进位则CF变为0。是否产生进位要看目标寄存器(或存储器)的位数。在ADC AX,BX中,目标寄存器是AX,AX是16位的,所以和的值超过16位就要进位了。在ADD AL,1中,目标寄存器是AL,AL是8位的,所以和的值超过8位就要进位了。
你利用十进制加法的算术运算过程,分析一下手工运算情况,可理解进位的意思了。
===========================
再简单地说.ADC后CF会变成0,但也可能变为1。CF总是由最近一条指令设置的,不管它前面是什么。
MOV DX,02H
MOV AX,0FFH
ADD AX,0FEH ;和=0FFH+0FEH=1FDH,和为17位,高位进到CF中。AX=0FDH,CF=1。
ADC DX,AX ;和=FDH+02H+CF=100H,和为17位。结果是DX=0000H,CF=1
如果首行为: MOV DX,01H
则尾行的ADC加过后CF=0。
==================================
进行ADC或ADD后,CF可能变为0也可能变为1。为什么变为0,为什么变为1,上面就是解释这个道理的。ADD或ADC后如果有进位则CF变为1,无进位则CF变为0。是否产生进位要看目标寄存器(或存储器)的位数。在ADC AX,BX中,目标寄存器是AX,AX是16位的,所以和的值超过16位就要进位了。在ADD AL,1中,目标寄存器是AL,AL是8位的,所以和的值超过8位就要进位了。
你利用十进制加法的算术运算过程,分析一下手工运算情况,可理解进位的意思了。
===========================
再简单地说.ADC后CF会变成0,但也可能变为1。CF总是由最近一条指令设置的,不管它前面是什么。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |