-
-
问一个简单问题,关于代码 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是偶数是,下句跳,是奇数是不跳。
我的汇编知识不好,请哪位帮忙解释一下怎么是这样?
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!