Intel 253666-024US Manuel D’Utilisation

Page de 760
2-4 Vol. 2A
INSTRUCTION FORMAT
2.1.3 
ModR/M and SIB Bytes
Many instructions that refer to an operand in memory have an addressing-form spec-
ifier byte (called the ModR/M byte) following the primary opcode. The ModR/M byte 
contains three fields of information:
The mod field combines with the r/m field to form 32 possible values: eight 
registers and 24 addressing modes.
The reg/opcode field specifies either a register number or three more bits of 
opcode information. The purpose of the reg/opcode field is specified in the 
primary opcode.
The r/m field can specify a register as an operand or it can be combined with the 
mod field to encode an addressing mode. Sometimes, certain combinations of 
the mod field and the r/m field is used to express opcode information for some 
instructions.
Certain encodings of the ModR/M byte require a second addressing byte (the SIB 
byte). The base-plus-index and scale-plus-index forms of 32-bit addressing require 
the SIB byte. The SIB byte includes the following fields:
The scale field specifies the scale factor.
The index field specifies the register number of the index register.
The base field specifies the register number of the base register.
See Section 2.1.5 for the encodings of the ModR/M and SIB bytes.
2.1.4 
Displacement and Immediate Bytes
Some addressing forms include a displacement immediately following the ModR/M 
byte (or the SIB byte if one is present). If a displacement is required; it be 1, 2, or 4 
bytes.
If an instruction specifies an immediate operand, the operand always follows any 
displacement bytes. An immediate operand can be 1, 2 or 4 bytes.
2.1.5 
Addressing-Mode Encoding of ModR/M and SIB Bytes
The values and corresponding addressing forms of the ModR/M and SIB bytes are 
shown in Table 2-1 through Table 2-3: 16-bit addressing forms specified by the 
ModR/M byte are in Table 2-1 and 32-bit addressing forms are in Table 2-2. Table 2-3 
shows 32-bit addressing forms specified by the SIB byte. In cases where the 
reg/opcode field in the ModR/M byte represents an extended opcode, valid encodings 
are shown in Appendix B.
In Table 2-1 and Table 2-2, the Effective Address column lists 32 effective addresses 
that can be assigned to the first operand of an instruction by using the Mod and R/M 
fields of the ModR/M byte. The first 24 options provide ways of specifying a memory