编程论坛
注册
登录
编程论坛
→
汇编论坛
adc 指令无法理解
wuyongquan
发布于 2014-10-05 23:20, 5451 次点击
书上说:‘在执行adc指令的时候加上CF的值的含义,由adc指令前面的指令决定的’
那如果CF的值是被sub指令设置的,那就是借位值了,那在执行adc指令时,还需要加上CF的值吗?
6 回复
#2
ditg
2014-10-07 03:52
书上说的没看懂,楼主的问题也没看懂,呵呵……“由adc指令前面的add指令决定的”?
#3
wp231957
2014-10-07 10:38
adc是带进位加法指令,它利用了CF位上记录的进位值。
指令格式:adc 操作对象1, 操作对象2
功能:操作对象1 =操作对象1 +操作对象2 +CF
比如:adc ax, bx ,实现的功能:(ax) =(ax) +(bx) +CF
#4
ditg
2014-10-07 12:22
我的理解:adc指令是为了超字长数相加设计的,低位加由add影响cf,高位加adc利用cf。(有其它用法麻烦告诉一声,目前我只这么用过)
#5
取名字
2015-04-30 13:40
以下是引用
wuyongquan
在2014-10-5 23:20:54的发言:
书上说:‘在执行adc指令的时候加上CF的值的含义,由adc指令前面的指令决定的’
那如果CF的值是被sub指令设置的,那就是借位值了,那在执行adc指令时,还需要加上CF的值吗?
“在执行adc指令的时候加上CF的值的
含义,
由adc指令前面的指令决定的”这句话当中是说“含义”由“前面的指令决定”,而不是指“adc是否要加CF的值由前面的指令决定”。
比如,在adc指令前执行的是加法操作并且产生了进位,然后执行adc指令,则此时adc指令的含义就是执行进位加法;而如果在adc指令前执行的是减法操作并且产生了借位,然后执行adc指令,此时adc指令的含义就是另外一种(由程序员的设计意图决定,一般不这样使用,因为这不符合adc操作码的设计意图)等等。
所以不管在什么情况下,adc指令都要加上CF的值,不管CF的值是什么原因设置的。
#6
xzlxzlxzl
2015-04-30 21:25
我认为要从根源上考虑问题:首先是为什么要使用借位?肯定是做减法位数不够,接下来要装进高位继续做减法,因此你既然要用带借位的减法后,如果未完成,则接下来的肯定是继续减,你做加法不合常理。
#7
zhulei1978
2016-04-19 06:48
带进位,比如计算两个8位数的相加,低四位的相加有进位,这个进位进入CF,在计算高四位相加的时候把它算进去
1