100% found this document useful (3 votes)
642 views

Programmer's Model of 8086

Uploaded by

aryatel26
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (3 votes)
642 views

Programmer's Model of 8086

Uploaded by

aryatel26
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

PROGRAMMER'S MODEL OF 8086

The programming model for a microprocessor shows the various internal


registers that are accessible to the programmer.
The Following Figure is a model for the 8086. In general, each register has a
special function.
In the programming model there are
- 4 General Purpose registers( Data Registers)
- 4 Segment registers
- 2 Pointer registers
- 2 Index registers
- 1 Instruction Pointer register
- 1 Flag register
General purpose registers:
AX Register (Accumulator): This is accumulator register. It gets used in
arithmetic, logic and data transfer instructions. In manipulation and division,
one of the numbers involved must be in AX or AL.

BX Register (Base Register): This is base register. BX register is an address


register. It usually contain a data pointer used for based, based indexed or
register indirect addressing.

CX Register (Counter register): This is Count register. This serves as a loop


counter. Program loop constructions are facilitated by it. Count register can also
be used as a counter in string manipulation and shift/rotate instruction.

DX Register (Data Register): This is data register. Data register can be used as a
port number in I/O operations. It is also used in multiplication and division.

Segment Registers:
There are four segment registers in Intel 8086:
1. Code Segment Register (CS),
2. Data Segment Register (DS),
3. Stack Segment Register (SS),
4. Extra Segment Register (ES).

A segment register points to the starting address of a memory segment.


Maximum capacity of a segment may be up to 64 KB.
Code segment Register(CS):- It is a 16-bit register containing the starting
address of 64 KB segment. The processor uses CS segment for all accesses to
instructions referenced by instruction pointer (IP) register.
Stack segment Register (SS):- It is a 16-bit register containing address of 64KB
segment with program stack. By default, the processor assumes that all data
referenced by the stack pointer (SP) and base pointer (BP) registers is located in
the stack segment. SS register can be changed directly using POP instruction.
Data segment Register (DS):- It is a 16-bit register containing address of 64KB
segment with program data. By default, the processor assumes that all data
referenced by general registers (AX, BX, CX, DX) and index register (SI, DI) is
located in the data segment.
Extra segment Register (ES):- It is a 16-bit register containing address of 64KB
segment, usually with program data. By default, the processor assumes that the
DI register references the ES segment in string manipulation instructions. It is
possible to change default segments used by general and index registers by
prefixing instructions with a CS, SS,DS or ES prefix.
Pointer Registers:
SP Register (Stack Pointer): This is stack pointer register pointing to program
stack. It is used in conjunction with SS for accessing the stack segment.
BP Register (Base Pointer): This is base pointer register pointing to data in stack
segment. Unlike SP, we can use BP to access data in the other segments.
Index Registers:
SI Register (Source Index): This is used to point to memory locations in the data
segment addressed by DS. By incrementing the contents of SI one can easily
access consecutive memory locations.
DI Register (Destination Index): This register performs the same function as SI.
There is a class of instructions called string operations, that use DI to access the
memory locations addressed by ES.
Instruction Pointer: The Instruction Pointer (IP) points to the address of the next
instruction to be executed. Its content is automatically incremented when the
execution of a program proceeds further. The contents of the IP and Code
Segment Register are used to compute the memory address of the instruction
code to be fetched. This is done during the Fetch Cycle.
Flag Register: Status Flags determines the current state of the accumulator.
They are modified automatically by CPU after mathematical operations. This
allows to determine the type of the result. 8086 has 16-bit status register. It is
also called Flag Register or Program Status Word (PSW). There are nine status
flags and seven bit positions remain unused.
8086 has 16 flag registers among which 9 are active. The purpose of the FLAGS
register is to indicate the status of the processor. It does this by setting the
individual bits called flags. There are two kinds of FLAGS;
Status FLAGS and Control FLAGS. Status FLAGS reflect the result of an operation
executed by the processor. The control FLAGS enable or disable certain
operations of the processor.

You might also like