首页
社区
课程
招聘
汇编 ADC 带进位加法
发表于: 2011-4-25 12:09 8678

汇编 ADC 带进位加法

2011-4-25 12:09
8678
mov dx,0034H        ;(dx)=0034H
adc  dx,0A0A0H      ;(dx)=0A0D5H ,cf=0

请问这个是不是书上写错了?

0034H+0A0A0H = 0A0D5H ,
应该是0A0D4H吧?cf不是等于1吗?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 693
活跃值: (108)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
这关键要看CF位的值,如果CF为零,结果就是a0d4;
如果CF为1,结果就是a0d5,不要迷信书,书也有可能印错。
你可以在Debug下用a命令输入试一下,我试过了,结果就是这样。
2011-4-25 12:20
0
雪    币: 213
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢您的解答
如果这么写是不是就对了呢?
mov ax,4652H
add ax,f0f0H
mov dx,34H
adc dx,a0a0H

这个时候(dx)=0A0D5H 就成立了吧?
2011-4-25 13:31
0
雪    币: 226
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
mov ax,4652H
add ax,f0f0H       ; (ax) = 13742H.无符号加法溢出,进位标志位置位cf=1
mov dx,34H         ;mov指令不影响标志位,cf=1不变
adc dx,a0a0H      ;dx = dx + a0a0H + cf

因此, (dx) = 0a0d5H.
2011-4-26 01:59
0
雪    币: 213
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
中国唯一搞点真本事的也就看雪的这些大大们了

谢谢
2011-4-26 15:55
0
雪    币: 11
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
同意,学习了,也理解了ADC的用法,不过我想问的是:
mov ax,4652H
add ax,f0f0H       ; (ax) = 13742H.无符号加法溢出,进位标志位置位cf=1
这个ADD运算完后如果是16位需要进位的话就把进位放在进位标志位cf里面去了哈?(貌似按注释应该是这样)
2014-4-2 10:01
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
如你所说,是带进位加法,0A0A0H写成二进制是1010000010100000,系统会把它看成一个有符号的数,所以其实他是一个负数,你就是这个地方理解错了。
2014-6-5 21:06
0
雪    币: 279
活跃值: (123)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
前面还有其他代码吗?可能是其他代码修改了CF标志位
2014-6-6 21:58
0
游客
登录 | 注册 方可回帖
返回
//