Intel 386 Computer Hardware User Manual


 
Intel386™ EX EMBEDDED MICROPROCESSOR USER’S MANUAL
E-26
E.2.2.4 Encoding of Address Mode
Except for special instructions, such as PUSH or POP, where the addressing mode is pre-deter-
mined, the addressing mode for the current instruction is specified by addressing bytes following
the primary opcode. The primary addressing byte is the “mod r/m” byte, and a second byte of ad-
dressing information, the “s-i-b” (scale-index-base) byte can be specified.
The s-i-b byte is specified when using 32-bit addressing mode and the “mod r/m” byte has r/m =
100 and mod = 00, 01, or 10. When the s-i-b byte is present, the 32-bit addressing mode is a func-
tion of the mod, ss, index, and base fields.
The primary addressing byte, the “mod r/m” byte, also contains three bits (shown as TTT in Fig-
ure E-1) sometimes used as an extension of the primary opcode. The three bits, however, may
also be used as a register field (reg).
When calculating an effective address, either 16-bit addressing or 32-bit addressing is used. 16-
bit addressing uses 16-bit address components to calculate the effective address while 32-bit ad-
dressing uses 32-bit address components to calculate the effective address. When 16-bit address-
ing is used, the “mod r/m” byte is interpreted as a 32-bit addressing mode specifier.
The following tables define all encodings of all 16-bit addressing modes and 32-bit addressing
modes.