In the x86 assembly language, the '''TEST'''
instruction performs a bitwise AND on two operands. The flags [[Sign flag|SF]]
, [[Zero flag|ZF]]
, [[Parity flag|PF]]
are modified while the 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 compare 8-bit, 16-bit, 32-bit or 64-bit values. It can also compare registers, immediate values and register indirect values.[1]
The TEST operation clears the flags CF
and OF
to zero. The [[Sign flag|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 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.
1
0