In the x86 assembly language, the TEST instruction performs a bitwise AND on two operands. The flags SF, ZF, PF are modified while the numerical result of the AND is discarded. The OF and CF flags are set to 0, while AF flag is undefined. There are 9 different opcodes for the TEST instruction depending on the type and size of the operands. It can test 8-bit, 16-bit, 32-bit, or 64-bit values. It can also test registers and memory against registers and immediate values.
TEST opcode variations The TEST operation clears the flags CF and OF to zero. The SF is set to the most significant bit of the result of the AND. If the result is 0, the ZF is set to 1, otherwise set to 0. The parity flag is set to the bitwise XNOR of all eight least significant bits of the result, 1 if the number of ones in that byte is even, 0 otherwise. The value of AF is undefined.
Examples
When ANDing a register against itself, there is no change to the register. The AND instruction could be substituted in most of these TEST examples.
References
