算法

1、xor eax,eax

常见用法

0041000 call [0041100]

0041006 je 042000

......

0041100 ......   //call 调用的子函数 start

......

0041120 xor eax,eax

0041122 retn  //call end

说明:(1)0041120 xor eax,eax 这句的作用是把eax赋0(使得call函数的返回值为0),同时把ZF标志位置1,

所以,0041006 je 042000 这句的跳转会实现。

(2)如果是or的话,eax的值不变,同时把ZF标志位置0。

 

2、test检测位指令

test是把二个操作数进行逻辑“与”操作,并根据运算结果设置相应的标志位,但并不保存该运算结果,所以,不会改变指令中的操作数。在该指令后,通常用JE、JNE、JZ和JNZ等条件转移指令。

指令的格式:TEST  Reg/Mem, Reg/Mem/Imm

受影响的标志位:CF(0)、OF(0)、PF、SF和ZF(AF无定义)

call XXXXXXXX
test al,al/eax,eax...
je/jne...

 

3、汇编语言中,CXECX只能递减,所以,循环计数器只能从大到小。在程序中,必须先把循环次数赋给循环计数器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值