Conventions
The following conventions are used throughout this document.
Offical Operands
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 and rel32 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.
ptr16:16 and ptr16:32 A far pointer, typically in 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.
r8 One of the byte general-purpose registers
AL, CL, DL, BL, AH, CH, DH, or BH.
r16 One of the word general-purpose registers
AX, CX, DX, BX, SP, BP, SI, or DI.
r32 One of the doubleword general-purpose registers
EAX, ECX, EDX, EBX, ESP, EBP, ESI, or EDI.
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.
r/m8 A byte operand that is either the contents of a byte
general-purpose register (AL, BL, CL, DL, AH, BH, CH,
and DH), or a byte from memory.
r/m16 A word general-purpose register or memory operand
used for instructions whose operand-size attribute is
16 bits. The word general-purpose registers are:
AX, BX, CX, DX, SP, BP, SI, and DI. The contents
of memory are found at the address provided by the
effective address computation.
r/m32 A doubleword general-purpose register or memory
operand used for instructions whose operand-size
attribute is 32 bits. The doubleword general-purpose
registers are: EAX, EBX, ECX, EDX, ESP, EBP,
ESI, and EDI. The contents of memory are found
at the address provided by the effective address
computation.
m A 16- or 32-bit operand in memory.
m8 A byte operand in memory, usually expressed as a
variable or array name, but pointed to by the DS:(E)SI
or ES:(E)DI registers. This nomenclature is used only
with the string instructions and the XLAT instruction.
m16 A word operand in memory, usually expressed as a
variable or array name, but pointed to by the DS:(E)SI
or ES:(E)DI registers. This nomenclature is used only
with the string instructions.
m32 A doubleword operand in memory, usually expressed
as a variable or array name, but pointed to by the
DS:(E)SI or ES:(E)DI registers. This nomenclature is
used only with the string instructions.
m64 A memory quadword operand in memory. This
nomenclature is used only with the CMPXCHG8B
instruction.
m16:16, m16:32 A memory operand containing a far pointer composed
of two numbers. The number to the left of the colon
corresponds to the pointer's segment selector. The
number to the right corresponds to its offset.
m16&32, m16&16, m32&32 A memory operand consisting of data item
pairs whose sizes are indicated on the left and the right
side of the ampersand. All memory addressing modes are
allowed. The m16&16 and m32&32 operands are used by the
BOUND instruction to provide an operand containing
an upper and lower bounds for array indices. The m16&32
operand is used by LIDT and LGDT to provide a word with
which to load the limit field, and a doubleword with which
to load the base field of the corresponding GDTR and
IDTR registers.
moffs8, moffs16, moffs32 A simple memory variable (memory offset)
of type byte, word, or doubleword used by some variants
of the MOV instruction. The actual address is given by
a simple offset relative to the segment base. No
ModR/M byte is used in the instruction. The number
shown with moffs indicates its size, which is determined
by the address-size attribute of the instruction.
Sreg A segment register. The segment register bit assignments
are ES=0, CS=1, SS=2, DS=3, FS=4, and GS=5.
m32real, m64real, m80real A single-, double-, and extended-real
(respectively) floating-point operand in memory.
m16int, m32int, m64int A word-, short-, and long-integer (respectively) floating-point
operand in memory.
ST or ST(0) The top element of the FPU register stack.
ST(i) The i th element from the top of the FPU register
stack. (i = 0 through 7)
mm An MMX™ register. The 64-bit MMX registers are: MM0
through MM7.
mm/m32 The low order 32 bits of an MMX register or a 32-bit
memory operand. The 64-bit MMX registers are: MM0
through MM7. The contents of memory are found at
the address provided by the effective address computation.
mm/m64 An MMX register or a 64-bit memory operand. The 64-bit
MMX registers are: MM0 through MM7. The contents of
memory are found at the address provided by the effective
address computation.
Generalised Operands
acc AL, AX or EAX unless specified otherwise
reg any general register
r8 any 8-bit register
r16 any general purpose 16-bit register
r32 any general purpose 32-bit register
imm immediate data
imm8 8-bit immediate data
imm16 16-bit immediate data
mem memory address
mem8 address of 8-bit data item
mem16 address of 16-bit data item
mem32 address of 32-bit data item
mem48 address of 48-bit data item
dest 16/32-bit destination
short 8-bit destination
Instruction Size
The byte count includes the opcode length and length of any required displacement or immediate data. If the displacement is optional, it is shown as d() with the possible lengths in parentheses. If the immediate data is optional, it is shown as i() with the possible lengths in parentheses.
Pairing Categories
NP = not pairable
UV = pairable in the U pipe or V pipe
PU = pairable in the U pipe only
PV = pairable in the V pipe only
Created with the Personal Edition of HelpNDoc: Easily create CHM Help documents