Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A, Instruction Set Reference, A-M
3-4 Vol. 2
INSTRUCTION SET REFERENCE, A-M
3.1.1.2 Instruction Column in the Opcode Summary Table
The “Instruction” column gives the syntax of the instruction statement as it would
appear in an ASM386 program. The following is a list of the symbols used to repre-
sent operands in the instruction statements:
• rel8 — A relative address in the range from 128 bytes before the end of the
instruction to 127 bytes after the end of the instruction.
• rel16, rel32, rel64 — A relative address within the same code segment as the
instruction assembled. The rel16 symbol applies to instructions with an operand-
size attribute of 16 bits; the rel32 symbol applies to instructions with an
operand-size attribute of 32 bits; the rel64 symbol applies to instructions with an
operand-size attribute of 64 bits.
• ptr16:16, ptr16:32 and ptr16:64 — A far pointer, typically to a code segment
different from that of the instruction. The notation 16:16 indicates that the value
of the pointer has two parts. The value to the left of the colon is a 16-bit selector
or value destined for the code segment register. The value to the right
corresponds to the offset within the destination segment. The ptr16:16 symbol is
used when the instruction's operand-size attribute is 16 bits; the ptr16:32
symbol is used when the operand-size attribute is 32 bits; the ptr16:64 symbol is
used when the operand-size attribute is 64 bits.
• r8 — One of the byte general-purpose registers: AL, CL, DL, BL, AH, CH, DH, BH,
BPL, SPL, DIL and SIL; or one of the byte registers (R8L - R15L) available when
using REX.R and 64-bit mode.
• r16 — One of the word general-purpose registers: AX, CX, DX, BX, SP, BP, SI, DI;
or one of the word registers (R8-R15) available when using REX.R and 64-bit
mode.
• r32 — One of the doubleword general-purpose registers: EAX, ECX, EDX, EBX,
ESP, EBP, ESI, EDI; or one of the doubleword registers (R8D - R15D) available
when using REX.R in 64-bit mode.
• r64 — One of the quadword general-purpose registers: RAX, RBX, RCX, RDX,
RDI, RSI, RBP, RSP, R8–R15. These are available when using REX.R and 64-bit
mode.
• imm8 — An immediate byte value. The imm8 symbol is a signed number
between –128 and +127 inclusive. For instructions in which imm8 is combined
with a word or doubleword operand, the immediate value is sign-extended to
form a word or doubleword. The upper byte of the word is filled with the topmost
bit of the immediate value.
• imm16 — An immediate word value used for instructions whose operand-size
attribute is 16 bits. This is a number between –32,768 and +32,767 inclusive.
• imm32 — An immediate doubleword value used for instructions whose
operand-size attribute is 32 bits. It allows the use of a number between
+2,147,483,647 and –2,147,483,648 inclusive.
• imm64 — An immediate quadword value used for instructions whose
operand-size attribute is 64 bits. The value allows the use of a number