HOME

TheInfoList



OR:

In the
x86 assembly language x86 assembly language is the name for the family of assembly languages which provide some level of backward compatibility with CPUs back to the Intel 8008 microprocessor, which was launched in April 1972. It is used to produce object code for ...
, the TEST instruction performs a bitwise AND on two
operand In mathematics, an operand is the object of a mathematical operation, i.e., it is the object or quantity that is operated on. Example The following arithmetic expression shows an example of operators and operands: :3 + 6 = 9 In the above exa ...
s. The
flag A flag is a piece of fabric (most often rectangular or quadrilateral) with a distinctive design and colours. It is used as a symbol, a signalling device, or for decoration. The term ''flag'' is also used to refer to the graphic design emp ...
s SF, ZF, 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
opcode In computing, an opcode (abbreviated from operation code, also known as instruction machine code, instruction code, instruction syllable, instruction parcel or opstring) is the portion of a machine language instruction that specifies the opera ...
s for the TEST instruction depending on the type and size of the
operand In mathematics, an operand is the object of a mathematical operation, i.e., it is the object or quantity that is operated on. Example The following arithmetic expression shows an example of operators and operands: :3 + 6 = 9 In the above exa ...
s. 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 clears the flags CF and OF to zero. The SF is set to the
most significant bit In computing, bit numbering is the convention used to identify the bit positions in a binary number. Bit significance and indexing In computing, the least significant bit (LSB) is the bit position in a binary integer representing the binary ...
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 In computer programming, a bitwise operation operates on a bit string, a bit array or a binary numeral (considered as a bit string) at the level of its individual bits. It is a fast and simple action, basic to the higher-level arithmetic oper ...
XNOR of the
least significant byte In computing, bit numbering is the convention used to identify the bit positions in a binary number. Bit significance and indexing In computing, the least significant bit (LSB) is the bit position in a binary integer representing the binary ...
of the result, 1 if the number of ones in that byte is even, 0 otherwise. The value of AF is undefined.


Examples

; 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 ;regular application test al, $0F ; set ZF if "al AND $0f = 0" (here: address-align test for 16b) jnz @destination ; jump if eax IS NOT "MODULO 16=0"


References

{{software-stub X86 instructions