「x86」- 位及字节指令(Bit and Byte Instructions)

TEST, logical compare

指令格式:

test reg8, imm8
test mem8, imm8

test reg16, imm16
test mem16, imm16

test reg8, reg8
test mem8, reg8

test reg16, reg16
test mem16, reg16

指令功能:
1)将两个操作数进行逻辑“与”操作(这与 AND 类似),但不会改变操作数;
2)并根据结果来修改标志寄存器;

标志寄存器的变化:
1)OF = CF = 0
2)ZF、SF、PF:取决于测试结果;
3)AF:未定义;

指令示例:测试 AL 寄存器的第 3 位 是否为零:

test al, 0x08 ;; 0x08 = 0000_1000B
;; 如果 AL 的第 3 为零,则 test 结果为 0,此时 ZF=1
;; 如果 AL 的第 3 非零,则 test 结果为 1,此时 ZF=0
;; 然后,我们在该指令后使用 jcc 指令簇进行条件跳转