首页
社区
课程
招聘
问一个简单问题,关于代码 test ecx, 1
发表于: 2004-5-6 23:26 6870

问一个简单问题,关于代码 test ecx, 1

2004-5-6 23:26
6870
最近学习密码,在跟XOR32算法时遇到问题。代码是:
00403DF0  />PUSH ECX
00403DF1  |>PUSH EDX
00403DF2  |>POP ECX
00403DF3  |>MOV EDX,DWORD PTR DS:[EAX]   
00403DF5  |>XOR EAX,EAX                       --->清零
00403DF7  |>TEST ECX,1                        --->检查字符长度,并开始计算。
00403DFD  |>JE SHORT xor32cra.00403E03
00403DFF  |>XOR AX,WORD PTR DS:[EDX]
00403E02  |>INC EDX
00403E03  |>SHR ECX,1
00403E05  |>JECXZ SHORT xor32cra.00403E13
00403E07  |>/ROL EAX,5
00403E0A  |>|XOR AX,WORD PTR DS:[EDX]
00403E0D  |>|ADD EDX,2
00403E10  |>|DEC ECX
00403E11  |>\JNZ SHORT xor32cra.00403E07
00403E13  |>POP ECX
00403E14  \>RETN

本来我理解 TEST ECX,1 是当ECX=1时满足条件,但根据书上介绍及跟踪结果来看,当ECX是偶数是,下句跳,是奇数是不跳。
我的汇编知识不好,请哪位帮忙解释一下怎么是这样?

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

收藏
免费 6
支持
分享
最新回复 (5)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
如果 ecx AND 0x00000001 = 0, z Flag = 1, 其他, z Flag = 0
2004-5-7 00:37
0
雪    币: 291
活跃值: (400)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
3
应该是判断奇偶
2004-5-7 00:44
0
雪    币: 280
活跃值: (281)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
4
那TEST ECX,1的汇编含义是就是判断奇偶了?可以理解为AND ECX,1 ?
2004-5-7 10:54
0
雪    币: 213
活跃值: (85)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
and是要改变的。
2004-5-7 13:57
0
雪    币: 295
活跃值: (506)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
最初由 henryw 发布
and是要改变的。


应该是test不改变寄存器,and是要改变的。
两个命令都影响flag.
2004-5-7 14:45
0
游客
登录 | 注册 方可回帖
返回
//