Quick navigation: [ Jump to body ]

Quick navigation: [ Jump to menu ]

Intel Pentium Instruction Set Reference

Conventions

Official Operands

rel8A relative address in the range from 128 bytes before the end of the instruction to 127 bytes after the end of the instruction.
rel16, rel32A 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 instruction switch an operand-size attribute of 32 bits.
ptr16:16, ptr16:32A far pointer, typically in a code segment different from that of the instruction. The notation 16:16indicates 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 16bits; the ptr16:32 symbol is used when the operand-size attribute is 32 bits.
r8One of the byte general-purpose registers AL, CL, DL, BL, AH, CH, DH, or BH.
r16One of the word general-purpose registers AX, CX, DX, BX, SP, BP, SI, or DI.
r32One of the double word general-purpose registers EAX, ECX, EDX, EBX, ESP, EBP, ESI, or EDI.
imm8An immediate byte value. The imm8 symbol is assigned 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.
imm16An immediate word value used for instructions whose operand-size attribute is 16 bits. This is a number between –32,768 and +32,767 inclusive.
imm32An 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/m8A 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/m16A word general-purpose register or memory operand used for instructions whose operand-size attribute is16 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/m32A 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.
mA 16- or 32-bit operand in memory.
m8A 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.
m16A 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.
m32A 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.
m64A memory quadword operand in memory. This nomenclature is used only with the CMPXCHG8Binstruction.
m16:16, m16:32A 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&32A 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&32operand 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, moffs32A 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.
SregA segment register. The segment register bit assignments are ES=0, CS=1, SS=2, DS=3, FS=4, and GS=5.
m32real, m64real, m80realA single-, double-, and extended-real (respectively) floating-point operand in memory.
m16int, m32int, m64intA 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)
mmAn MMX™ register. The 64-bit MMX registers are: MM0 through MM7.
mm/m32The low order 32 bits of an MMX register or a 32-bit memory operand. The 64-bit MMX registers are: MM0through MM7. The contents of memory are found at the address provided by the effective address computation.
mm/m64An MMX register or a 64-bit memory operand. The 64-bitMMX registers are: MM0 through MM7. The contents of memory are found at the address provided by the effective address computation.

Generalized Operands

accAL, AX or EAX unless specified otherwise.
regAny general register.
r8Any 8-bit register.
r16Any general purpose 16-bit register.
r32Any general purpose 32-bit register.
immImmediate data.
imm88-bit immediate data.
imm1616-bit immediate data.
memMemory address.
mem8Address of 8-bit data item.
mem16Address of 16-bit data item.
mem32Address of 32-bit data item.
mem48Address of 48-bit data item.
dest16/32-bit destination.
short8-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

NPNot pairable.
UVPairable in the U pipe or V pipe.
PUPairable in the U pipe only.
PVPairable in the V pipe only.