INTRODUCTION

interrupt return addresses), the BP register is available to the programmer for whatever use he desires. The BP register can contain an old stack pointer value, or it can mark a place in the subroutine stack independent of the SP register. Using the separate BP register to mark the stack saves the juggling of a single stack pointer to reference subroutine parame- ters and addresses.

The two index registers are the SI (source index) register and the DI (destination index) register (Fig. 1-8). These are both 16-bits wide and are used by string manipulation instructions and in building some of the more powerful 8088 data structures and addressing modes. Both the SI and DI registers have auto-incrementing and auto-decrementing capa- bilities. All base and index registers have general arithmetic and logical capabilities in addition to their special functions.

Control Registers

Figure 1-9 shows two l6-bit control registers. First is the IP or instruction pointer which points to the next instruction the bus inter- face unit will fetch. (The instruction pointer is similar to a Program Counter used in other microprocessors, except that the IP points to the next instruction being fetched, whereas the traditional program counter points to the next instruction to be executed). The second l6-bit control register (Fig. 1-9) contains flags or condition codes that reflect the results of

arithmetic or logical operations as they are performed by the execution unit.

Segment Registers

The fourth group of registers, called the seg- ment registers, are used by the 8088 in the formulation of memory addresses. Segment register usage is described in the following section on memory addressing.

THE iAPX 88 MEGABYTE MEMORY ADDRESSING MEANS QUICK ACCESS TO COMPLEX DATA STRUCTURES

As mentioned, the 8088 generates a 20-bit memory address during every memory refer- ence operation, to address one million (1,048,576) bytes of memory. These bytes are stored sequentially starting from byte 0 to byte FFFFF in hexidecimal or base 16 nota- tion. The 8088 has three uses for the memory it addresses: programs, data and stack. The 8088 may separate data i]lto "local data" used by a particular program segment and "global data" accessible to all program segments. Al- ternately, you may have two data areas acces- sible to a given program at any point in time.

Every 20-bit memory address points either to program code, data, or stack area in memory (Fig. 1-10). For each of the four different memory spaces, the 8088 has a segment base register. Each segment register points to the base address of the corresponding area in

INSTRUCTION

I

IP

POINTER

 

I

~--------------------------------------~

FLAGS I

Figure 1-9. Control Registers

1-5

Page 16
Image 16
Intel 210200-002 manual Control Registers