首页
社区
课程
招聘
[旧帖] [求助]汇编有关 0.00雪花
发表于: 2009-6-5 22:17 3620

[旧帖] [求助]汇编有关 0.00雪花

2009-6-5 22:17
3620
最近在分析一软件中遇到一问题,来请大家指教,先看下面:

CDQ这一句知道是什么意思了,可是为什么IDIV后EAX=FFFFFFF8,EDX=FCDB23C6?
请讲详细一点,先谢了!

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 316
活跃值: (11)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
2
CD2C1BC6 MOD 5F5E100=28439C6或
FFFFFFFFCD2C1BC6 MOD 5F5E100=362C3C6
怎么着也不是FCDB23C6
2009-6-5 22:21
0
雪    币: 290
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
CDQ 把原来的 EAX 扩展成 EDX:EAX (带正负值)
把 EAX 的第 31 bit 复制到 EDX 的每一个 bit 上
2009-6-5 23:11
0
雪    币: 1450
活跃值: (35)
能力值: (RANK:680 )
在线值:
发帖
回帖
粉丝
4
idiv: Signed Divide

记住这点:  -6 mod 4 = -2 = -(6 mod 4)

FFFFFFFFCD2C1BC6 MOD 5F5E100 =  - 32D3E43A mod 5F5E100  = - (32D3E43A mod 5F5E100)

= - 324DC3A = (~324DC3A) + 1 = FCDB23C6

你用计算器算得和OD算的不一样因为计算器把CD2C1BC6当成无符号数运算.
而CPU处理idiv指令时, 是把FFFFFFFFCD2C1BC6整个当有符号数运算的.
2009-6-5 23:19
0
雪    币: 316
活跃值: (11)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
5
明白了,谢谢!
2009-6-7 12:14
0
游客
登录 | 注册 方可回帖
返回
//