首页
社区
课程
招聘
[求助]BT 指令的困惑
发表于: 2007-5-12 07:35 6813

[求助]BT 指令的困惑

2007-5-12 07:35
6813
我在跟踪一段算法程序时,在一段循环程序中,发现这样的一条指令:
...
BT     DWORD PTR SS:[EBP-44],EDX
...

BT指令是位测试指令,是将[EBP-44]这个数据中的某一位传送给CF,(当EDX>31后,取EDX的低5位值,这是我的理解)

跟踪时发现,EBP-44地址上的数据始终为0,EDX的在每次循环时,都不一样,依次为:60,5F,5E,5D,5C,5B,5A,

当EDX为5A这个值时,EBP-44地址上的数据还是为0,但执行这条指令后,发现CF变为1了,按理说,应该还是0,不知何解?

难道我理解BT这条指令有错?

请大侠们指点...

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

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
2
00476083      0FBAE0 5A     bt      eax, 5A

在OD中汇编这个指令,让EAX等于0,直接修改指针运行这条指令CF还是0

以前看过一篇文章,如果XOR EAX,EAX结果EAX不等于0,你就应该怀疑是CPU出问题了
2007-5-12 08:49
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
没有理由怀疑CPU出问题啊?
我也写了一段测试程序:
;
        mov        eax,0
        mov        edx,61h
@@:
        dec         edx
        bt          eax,edx
        jnc        @B
        nop
        nop

    用OD加载运行,单步跟踪,结果很正常,OD一直在循环里面打圈,说明 CF 一直为0,这样的结果才是对的,
    但运行:  BT DWORD PTR SS:[EBP-44],EDX 就不是所想的,
    都是同一台机子,同样用OD跟踪,为什么会这样,实在弄不懂!!!

    难道是[EBP-44]这里有点名堂?  但在每执行BT指令前,我都查看了EBP-44这个地址上的数据,它确实是为 0 啊!

    期待解惑 ... ...
2007-5-12 16:31
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
[QUOTE=;]...[/QUOTE]
学洗    学习
2007-5-13 09:01
0
游客
登录 | 注册 方可回帖
返回
//