首页
社区
课程
招聘
一句汇编语言不懂,求教
发表于: 2004-10-20 11:02 4662

一句汇编语言不懂,求教

2004-10-20 11:02
4662
:004025E6 FF1514E44300  Call dword ptr [0043E414]  <-- 假设个CALL是注册码验证的关键处
:004025EC 6685C0       test ax, ax            <-- 测试验证程序返回值AX
:004025EF 7507         jne 004025F8           <-- 判断注册码是否正确

这里的test ax,ax 也就是and ax,ax 。那么ax与自己与,相当于不做功,后面的jne从何说起啊,除非 test ax,ax 是烟幕弹,jne直接判断if(ax==0)。
大虾们指教一下!

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

收藏
免费 1
支持
分享
最新回复 (7)
雪    币: 13095
活跃值: (4092)
能力值: ( LV15,RANK:1673 )
在线值:
发帖
回帖
粉丝
2
test ax,ax 在这儿就相当于 ax==0
jne 就相当于 if
所以加在一起就相当于,if(ax==0)
2004-10-20 11:24
0
雪    币: 413
活跃值: (637)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
3
此言差已!
TEST―Logical Compare
Description
Computes the bit-wise logical AND of first operand (source 1 operand) and the second operand
(source 2 operand) and sets the SF, ZF, and PF status flags according to the result. The result is
then discarded.
Operation
TEMP ¬ SRC1 AND SRC2;
SF ¬ MSB(TEMP);
IF TEMP = 0
THEN ZF ¬ 0;
ELSE ZF ¬ 1;
FI:
PF ¬ BitwiseXNOR(TEMP[0:7]);
CF ¬ 0;
OF ¬ 0;
(*AF is Undefined*)
Flags Affected
The OF and CF flags are cleared to 0. The SF, ZF, and PF flags are set according to the result
(see the “Operation” section above). The state of the AF flag is undefined.
Opcode Instruction Description
A8 ib TEST AL, imm8 AND imm8 with AL; set SF, ZF, PF according to result
A9 iw TEST AX, imm16 AND imm16 with AX; set SF, ZF, PF according to result
A9 id TEST EAX, imm32 AND imm32 with EAX; set SF, ZF, PF according to result
F6 /0 ib TEST r/m8,imm8 AND imm8 with r/m8; set SF, ZF, PF according to result
F7 /0 iw TEST r/m16,imm16 AND imm16 with r/m16; set SF, ZF, PF according to result
F7 /0 id TEST r/m32,imm32 AND imm32 with r/m32; set SF, ZF, PF according to result
84 / r TEST r/m8,r8 AND r8 with r/m8; set SF, ZF, PF according to result
85 / r TEST r/m16,r16 AND r16 with r/m16; set SF, ZF, PF according to result
85 / r TEST r/m32,r32 AND r32 with r/m32; set SF, ZF, PF according to result
2004-10-20 12:58
0
雪    币: 413
活跃值: (637)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
4
来自intel的指令手册,要我可以传给你.
2004-10-20 13:00
0
雪    币: 231
活跃值: (465)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
最初由 nig 发布
来自intel的指令手册,要我可以传给你.


给我intel上的地址 我自己去下载
2004-10-20 13:07
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
http://www.cnhonker.com/download/articles/program/intelx86.html#1370
看了也不明白。哎,我以前还好好学过这门课呢,可惜都忘了,真想再回学校问老师去,就怕老师打断我的腿。
2004-10-20 14:26
0
雪    币: 213
活跃值: (96)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
不是汇编你学的不好,是C语言(C规定非0为真.0为假)你也没学好.ax 是函数的返回值,根据C的规定,非0为真,0为假..假如ax是非0.test ax,ax后显然不可能为0,ZF标志寄存器显然是0,假如ax等于0,test ax,ax后会ZF标志位变成1,,JNE当然看的是ZF标志位.才决定跳还是不跳了.

老师应该要是打人不犯法的话,我好天天挨打了.最近上了高数辅导班.老师总扁我.不过那些准备考研参加辅导的MM真漂亮.....好象里面就我一个是为了计算机才去从新学习数学的,那些都是为了考研.没几个考研的人目的是为了学术,全是为了工作是金钱,真过分.
2004-10-20 14:55
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
了解了!
jne要判断的是ZF寄存器的值!
test语句可以把ax的值返回到ZF中。
所以就这样了,呵呵。
谢谢云重了。
上了研究生就可以做更高的学术啊,毕了业就可以找更好的工作或是做更高的学术。大家都没有错,只不过你看的近(近3年),人家看的远嘛(3年后)。
2004-10-20 16:11
0
游客
登录 | 注册 方可回帖
返回
//