结论
这几个组合在一起通常是判断 函数返回结果是否是0.是0跳转到哪里,不是0跳转到哪里
举例分析
下面代码:就是判断2个字符串是否相等.
push edx push eax call dword ptr dS:[K&KERNEL32.1strcmpA> //判断edx和 eax 2个字符串是否相等,调用的是C语言的 strcmp test eax,eax push 0 JnZ Short Crackhe. 00401 0E8
if (eax == 0){
跳转到一个地方 }else{
跳转到一个地方 }
在汇编中这么做判断eax是否等于0
test eax,eax
test作用
ZF PF标志位改变不需要记,因为不方便记忆.
我们需要记住是test下面语句的跳转语句意思
jnz
例如jnz,那么就是说不等于0的时候跳转n是not不,z是zero零.jnz检验的标志位就是zf,这个标志位通过test改变了zf,然后jnz进行跳转.当test比较的结果不等于0,就跳转
jz
总结
下面截图是一段汇编指令,判断2个字符串是否相等的

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/220429.html原文链接:https://javaforall.net
