首页
社区
课程
招聘
请问下面语句判断了什么?
发表于: 2004-6-7 11:29 4749

请问下面语句判断了什么?

2004-6-7 11:29
4749
fld     [ebp+08]
fsub    [ebp+28]
fcomp   ds:dbl_1002D038  
fnstsw  ax   
test    ah, 41h
jnz     loc_100012C5

跳转jnz是判断 fcomp 还是 test ?
什么情况下发生跳转?
收藏
免费 5
支持
分享
最新回复 (5)
雪    币: 216
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
找到的一些说明:
{1}
FNSTSW m2byte DD /7 C0,C1,C2,C3 未定义 将FPU状态字保存到m2byte,不检查非屏蔽浮点异常 FNSTSW BYTE PTR [00459AF0]
FNSTSW AX DF E0 将FPU状态字保存到AX,不检查非屏蔽浮点异常 FNSTSW AX

{2}
FNSTSW  AX        ------>将状态寄存器的值复制到AX

但我还是不明白!请求帮助
2004-6-7 11:33
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
jnz 是跟据标志寄存器ZF的值而决定是否跳转的
当ZF=0时,jnz命令就跳转,反之则不跳
而test命直接影响标志寄存器ZF,所以,你说的jnz是跟据test语句来跳转的。
test al,41h 应是判断al中是否是“A”如果不是“A”,则将ZF置0
2004-6-7 13:13
0
雪    币: 221
活跃值: (100)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
用OD跟踪时注意下标志位的变化你就会明白了````:)
2004-6-7 13:43
0
雪    币: 216
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
fld [ebp+08]
fsub [ebp+28]
fcomp ds:dbl_1002D038    //这儿是做什么用的呢?

跟踪中[ebp+08]与[ebp+28]均为浮点数值

dbl_1002D038 为0.00999

上面的fcomp 起了什么作用? 能详细说一下吗?谢谢

fnstsw ax          //?FPU状态字保存到AX 他有什么含义呢?
test ah, 41h       // 这个TEST有什么含义呢?
jnz loc_100012C5  //?什么情况下跳转
2004-6-7 15:16
0
雪    币: 216
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
是不是理解为[ebp+08]-[ebp+28]的结果不等于 0.00999
就跳转?
2004-6-7 16:02
0
游客
登录 | 注册 方可回帖
返回
//