<<<    Index    >>>
6-35
INSTRUCTION SET SUMMARY
6.8.4.Test Instruction
The TEST instruction performs a logical AND of two operands and sets the SF, ZF, and PF flags
according to the results. The flags can then be tested by the conditional jump or loop instructions
or the SETcc instructions. The TEST instruction differs from the AND instruction in that it does
not alter either of the operands.
6.9.CONTROL TRANSFER INSTRUCTIONS
The processor provides both conditional and unconditional control transfer instructions to direct
the flow of program execution. Conditional transfers are taken only for specified states of the
status flags in the EFLAGS register. Unconditional control transfers are always executed.
6.9.1.Unconditional Transfer Instructions
The JMP, CALL, RET, INT, and IRET instructions transfer program control to another location
(destination address) in the instruction stream. The destination can be within the same code
segment (near transfer) or in a different code segment (far transfer).
6.9.1.1.JUMP INSTRUCTION
The JMP (jump) instruction unconditionally transfers program control to a destination instruc-
tion. The transfer is one-way; that is, a return address is not saved. A destination operand spec-
ifies the address (the instruction pointer) of the destination instruction. The address can be a
relative address or an absolute address.
A relative address is a displacement (offset) with respect to the address in the EIP register. The
destination address (a near pointer) is formed by adding the displacement to the address in the
EIP register. The displacement is specified with a signed integer, allowing jumps either forward
or backward in the instruction stream.
An absolute address is a offset from address 0 of a segment. It can be specified in either of the
following ways:
•
An address in a general-purpose register. This address is treated as a near pointer, which
is copied into the EIP register. Program execution then continues at the new address within
the current code segment.
•
An address specified using the standard addressing modes of the processor. Here, the
address can be a near pointer or a far pointer. If the address is for a near pointer, the address
is translated into an offset and copied into the EIP register. If the address is for a far
pointer, the address is translated into a segment selector (which is copied into the CS
register) and an offset (which is copied into the EIP register).
In protected mode, the JMP instruction also allows jumps to a call gate, a task gate, and a task-
state segment.
<<<    Index    >>>