TEST (x86 instruction)
In the x86 assembly language, the
TEST instruction performs a bitwise AND on two operands. The flags
PF are modified while the result of the AND is discarded. The
CF flags are set to
AF flag is undefined. There are 9 different opcodes for the TEST instruction depending on the type and size of the operands. It can compare 8-bit, 16-bit, 32-bit or 64-bit values. It can also compare registers, immediate values and register indirect values.
TEST opcode variations
The TEST operation sets the flags
OF to zero. The
SF is set to the most significant bit of the result of the AND. If the result is
ZF is set to
1, otherwise set to
0. The parity flag is set to the bitwise XNOR of the least significant byte of the result,
1 if the number of ones in that byte is even,
0 otherwise. The value of
AF is undefined.
; Conditional Jump test cl,cl ; set ZF to 1 if cl == 0 jz 0x804f430 ; jump if ZF == 1 ; Conditional Jump with NOT test cl, cl ; set ZF to 1 if cl == 0 jnz 0x804f430 ; jump if ZF == 0 ; or test eax, eax ; set SF to 1 if eax < 0 (negative) js error ; jump if SF == 1
- "Intel 64 and IA-32 Architectures Software Developer's Manual Volume 2B: Instruction Set Reference, N-Z" (PDF). Retrieved 2019-12-21.