首页
社区
课程
招聘
[求助]TEST与JG、JL的配套使用
发表于: 2008-3-30 15:41 5553

[求助]TEST与JG、JL的配套使用

2008-3-30 15:41
5553
TEST   cx,cx
JG   short XXXXX
MOVE   eax,1
JL   XXXXX
XOR   eax,eax
JMP   XXXXX
以上代码中,cx的值不是一样吗?
后面的JG、JL是根据什么跳转的?
我用OD跟,TEST后的JG跳转可以实现,想了N天了,都不明白。

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

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 50161
活跃值: (20620)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
有关test看看这帖的讨论:
http://bbs.pediy.com/showthread.php?threadid=26647
http://www.pediy.com/bbshtml/bbs6/pediy6066.htm

这里,只有这句(TEST   cx,cx)影响标志位,也就是说这句影响着跳转。
2008-3-30 16:46
0
雪    币: 230
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
本菜鸟第一贴,就由看雪老大亲自回复,激动ing。。。

看雪老大提供的2个链接看了,我明白test的作用,是按位相与,影响标志位。
如果test后跟的是je、jnz,我也明白意思。
但jg、jl就不明白了:
jg是有符号数比较,大于则跳。
test   cx,cx中,cx不都是一样吗?什么情况才会使jg跳转实现?

备注:(test执行完后,所有标志位为0)
2008-3-30 18:44
0
雪    币: 297
活跃值: (27)
能力值: ( LV13,RANK:380 )
在线值:
发帖
回帖
粉丝
4
jg确实可以用于有符号数的比较,但其实它也可以用于其它情况。在此处,是用来判断有符号数cx是否大于零。因为jg指令本身的逻辑是看是否满足标志位ZF=0, SF=OF。
因为test本身指令的特点,不可能溢出,所以OF始终为零。
所以:如果有符号数CX大于零则跳jg,如果有符号数CX小于零或等于零,则不跳。
2008-3-30 20:25
0
雪    币: 230
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
非常感谢tnttools的指点,终于明白了。
2008-3-30 21:15
0
游客
登录 | 注册 方可回帖
返回
//