test eax,eax 如何解释?

2024-11-07 20:41:34
推荐回答(5个)
回答(1):

test eax,eax 基本上和 And eax,eax 是一样的,不同的是test 不改变eax的结果,只是改变FLAG寄存器的状态,也就是改变进位标志,零标志,溢出标志等 等。举一个例子,如果eax=01h,test eax,eax 就是两个01h 作与操作,所以结果还是01h,不是0的话,就不会跳转 je xxxx。所以要跳转je xxxx,只有一种可能就是eax=0h.所以现在eax=0a 则不会跳转 je xxxx

回答(2):

这样的结果相当于CMP EAX,0
但是立即数操作比寄存器直接操作慢多了,
其实你给的程序就是当eax为0时跳转xxx
而你已经说了EAX=0ah
所以不会跳啦

回答(3):

test eax,eax是位的与运算,不改变eax的值,但会改变标志位的值~

回答(4):

这都是汇编指令 32位汇编指令

回答(5):

1楼 lauey 正解。