
376 EMBEDDED PROCESSOR
GENERATING 16-BIT ADDRESSES
The 80376 executes code with a default length for
operands and addresses of 32 bits. The 80376 is
also able to execute operands and addresses of 16
bits. This is specified through the use of override
prefixes. Two prefixes, the
Operand Length Prefix
and the
Address Length Prefix,
override the de-
fault 32-bit length on an individual instruction basis.
These prefixes are automatically added by assem-
blers. The Operand Length and Address Length Pre-
fixes can be applied separately or in combination to
any instruction.
The 80376 normally executes 32-bit code and uses
either 8- or 32-bit displacements, and any register
can be used as based or index registers. When exe-
cuting 16-bit code (by prefix overrides), the displace-
ments are either 8 or 16 bits, and the base and index
register conform to the 16-bit model. Table 2.4 illus-
trates the differences.
Table 2.4. BASE and INDEX Registers for 16- and 32-Bit Addresses
16-Bit Addressing
32-Bit Addressing
BASE REGISTER
BX, BP
Any 32-Bit GP Register
INDEX REGISTER
SI, DI
Any 32-Bit GP Register
except ESP
SCALE FACTOR
None
1, 2, 4, 8
DISPLACMENT
0, 8, 16 Bits
0, 8, 32 Bits
2.5 Data Types
The 80376 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 80376 bit strings can be up to 16 Mbits
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 quantity. All operations assume a 2’s complement
representation.
Unsigned Integer (Word):
An unsigned 16-bit quantity.
Unsigned Long Integer
(Double Word):
An unsigned 32-bit quantity.
Signed Quad Word:
A signed 64-bit quantity.
Unsigned Quad Word:
An unsigned 64-bit quantity.
Pointer:
A 16- or 32-bit offset only quantity which indirectly references another
memory location.
Long 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 Alphanumeric or control character.
String:
A contiguous sequence of bytes, words or dwords. A string may
contain between 1 byte and 16 Mbytes.
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.
14