INTRODUCTION
memory (Fig.
1-11).
The code segment regis-
ter points to the base
of
the program
currently running. The stack segment register
points to the base of the 8088's stack, the data
segment register points to the base of one
data
area, and the extra segment register
points to the base
of
another area where data
can
be
stored. Each segment register
is
16-bits
wide, and one of the four
is
used in the com-
putation of every memory address that the
8088
generates.
How
are Addresses Generated?
Every time the
8088
needs to generate a
memory address, one of the segment registers
is
automatically chosen and added to a logi-
cal address (Fig.
1-12).
For
an instruction fetch, the code segment
register
is
automatically added to the logical
address (in this case the contents of the
instruction pointer) to compute the value of
the instruction address.
For
an operation referencing the 8088's stack,
the stack segment register
is
automatically
added to the logical address (the
SP
register
contents) to compute the value
of
the stack
address.
For
data reference operation, where either
the data
or
extra segment registers are chosen
MODULE
CODE
MODULE
DATA
CODE
STACK
DATA
EXTRA
SEGMENT
REGISTERS
CONTENTS
OF
8088
SEGMENT
REGISTERS
POINT
TO
THE
BASE
ADDRESS
OF
THE
CORRESPONDING
AREAS
IN
MEMORY.
Figure 1-11. Segment Registers
IMPLICIT
SELECTION
CODE
~-S-E-G-M-E-N-T~I
STACK
DATA
EXTRA
SEGMENT
REGISTERS
+
20
BIT
PHYSICAL
ADDRESS
Figure 1-12.
Howan
Address is
Buill
MODULE
STACK
SYSTEM
DATA
Figure 1-10. iAPX
88
Architecture Quick Access to Four Segment Types
1-6