80386

Table 2-3. BASE and INDEX Registers for 16- and 32-Bit Addresses

16·Bit Addressing

32-Bit Addressing

BASE REGISTER

BX,BP

INDEX REGISTER

SI,DI

SCALE FACTOR

none

DISPLACEMENT

0,8, 16 bits

The OPERAND LENGTH and Address Length Pre- fixes can be applied separately or in combination to any instruction. The Address Length Prefix does not allow addresses over 64K bytes to be accessed in Real Mode. A memory address which exceeds FFFFH will result in a General Protection Fault. An Address Length Prefix only allows the use of the ad- ditional 80386 addressing modes.

When executing 32-bit code, the 80386 uses either 8-, or 32-bit displacements, and any register can be used as base or index registers. When executing 16- bit code, the displacements are either 8, or 16 bits, and the base and index register conform to the 286 model. Table 2-3 illustrates the differences.

Any 32-bit GP Register Any 32-bit GP Register Except ESP 1,2,4,8

0,8,32 bits

Signed Quad Word: A signed 64-bit quantity.

Unsigned Quad Word: An unsigned 64-bit quanti- ty.

Offset: A 16- or 32-bit offset only quantity which indirectly references another memory location.

Pointer: A full pointer which consists of a 16-bit segment selector and either a 16- or 32-bit offset.

Char: A byte representation of an ASCII Alphanu- meric or control character.

String: A contiguous sequence of bytes, words or dwords. A string may contain between 1 byte and 4 Gbytes.

2.6 DATA TYPES

The 80386 supports all of the data types commonly used in high level languages:

Bit: A single bit quantity.

Bit Field: A group of up to 32 contiguous bits, which spans a maximum of four bytes.

Bit String: A set of contiguous bits, on the 80386 bit strings can be up to 4 gigabits long.

Byte: A signed 8-bit quantity.

Unsigned Byte: An unsigned 8-bit quantity.

Integer (Word): A signed 16-bit quantity.

Long Integer (Double Word): A signed 32-bit quan- tity. All operations assume a 2'scomplement rep- resentation.

Unsigned Integer (Word): An unsigned 16-bit quantity.

Unsigned Long Integer (Double Word): An un- signed 32-bit quantity.

BCD: A byte (unpacked) representation of decimal digits 0-9.

Packed BCD: A byte (packed) representation of two decimal digits 0-9 storing one digit in each nibble.

When the 80386 is coupled with a numerics Coproc- essor such as the 80287 or the 80387 then the fol- lowing common Floating Point types are supported.

Floating Point: A signed 32-, 64-, or 80-bit real number representation. Floating point numbers are supported by the 80287 and 80387 numerics coprocessor.

Figure 2-10 illustrates the data types supported by the 80386 and the 80387/80287.

19

Page 80
Image 80
Intel 80386 manual Data Types, Base Register BX,BP Index Register SI,DI Scale Factor, None, Displacement, bits