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.
Segement
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.
Comments
Post a Comment