TEST和XOR是用于对操作数执行逻辑运算的逻辑指令.
测试指令(比较操作数)
TEST destiny, source
它执行操作数的逐位连接,但与AND不同,该指令不会将结果放在目标操作数中,它只会影响标志的状态.
Source Destiny | Destiny
--------------------------
1 1 | 1
1 0 | 0
0 1 | 0
0 0 | 0
XOR指令(独家OR)
XOR destiny, source
它的功能是逐位执行两个操作数的逻辑独占析取.
Source Destiny | Destiny
--------------------------
1 1 | 0
1 0 | 1
0 1 | 1
0 0 | 0
正如您在表格中看到的那样:
XOR EAX,EAX将EAX寄存器设置为零.如果XOR的结果为零,则将设置ZF.所以在这种情况下:(ZF = 1)
TEST EAX,EAX不会将结果放在寄存器上,它只影响ZF的状态.在这种情况下,如果EAX == 0,那么(ZF = 1)
JNZ(JNE)指令(条件跳转)
JNZ label
如果它不相等或为零,它会跳转到标签.如果停用ZF,将跳转. (ZF = 0)