test eax,eax 如何解释?

[复制链接]
查看11 | 回复4 | 2009-7-17 22:49:21 | 显示全部楼层 |阅读模式
这样的结果相当于CMP EAX,0但是立即数操作比寄存器直接操作慢多了,其实你给的程序就是当eax为0时跳转xxx 而你已经说了EAX=0ah所以不会跳啦
回复

使用道具 举报

千问 | 2009-7-17 22:49:21 | 显示全部楼层
test eax,eax 基本上和 And eax,eax 是一样的,不同的是test 不改变eax的结果,只是改变FLAG寄存器的状态,也就是改变进位标志,零标志,溢出标志等 等。举一个例子,如果eax=01h,test eax,eax 就是两个01h 作与操作,所以结果还是01h,不是0的话,就不会跳转 jexxxx。所以要跳转je xxxx,只有一种可能就是eax=0h.所以现在eax=0a 则不会跳转 jexxxx
回复

使用道具 举报

千问 | 2009-7-17 22:49:21 | 显示全部楼层
test eax,eax是位的与运算,不改变eax的值,但会改变标志位的值~
回复

使用道具 举报

千问 | 2009-7-17 22:49:21 | 显示全部楼层
这都是汇编指令 32位汇编指令
回复

使用道具 举报

千问 | 2009-7-17 22:49:21 | 显示全部楼层
1楼 lauey 正解。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行