Programming
Model of 8086

 

Data
Registers:

We Will Write a Custom Essay Specifically
For You For Only $13.90/page!


order now

          15                           8              7                              0

AX

BX

CX

DX

               

AH

AL

BH

BL

CH

CL

Dh

DL

     

 

·        
Four 16-bit general purpose registers
used to store operands and results.

·        
Each can be accessed as a whole (AX,
BX, CX & DX)
or the upper and lower bytes can be accessed separately (AL, AH, BL, CL, CH, DL
& DH).

·        
AX is an implied operand for some
arithmetic operations.

·        
BX may be used as a base register in address
calculations.

·        
CX is an implied counter for certain
instructions.

·        
DX is sometimes used to hold the address
of I/O instructions.

 

 

Segment
Registers:

            15                                            0

                  CS

                  SS

                  DS 

                  ES  

 

·        
Used
to calculate physical memory addresses.

·        
CS
(Code Segment) is used in combination with IP to access the executing program
instructions.

·        
SS
(Stack Segment) is used in combination with SP to access the executing program
Stack.

·        
DS
(Data Segment) and ES (Extra Segment) are used to access the executing program
data.

Physical
Address.

 

 

·        
The
Segment, Pointer and other addressing registers are only 16 bits wide. On the
other hand, the address put on the bus by the 8086 (called Physical Address) is
20-bits. So, where do the missing 4-bits come from?

 

 

         
16bit

Effective Address or Offset

                                                                   +

          
16bit

Segment Address 

                                                       =

                   20bits

Physical Address          

 

 

Example:
(CS) = 123A, (IP) = 341B

Therefore,
next instruction fetched at:

 

   341B
Offset

+
123A0 Segment Address

=
157BB
Physical Address

 

 

Program
Status Word (PSW).

 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OF DF IF
TF SF ZF AF PF CF The 8086 PSW contains 16 bits: 9 Flags & 7 not used.


Flags are divided into conditional and control.

• Conditional Flags
reflect the result of the previous operation       involving the ALU

• Control
Flags control the execution of special functions or instructions.

 • SF (Sign Flag) is equal to the most
significant bit (MSB) of the result (2’s complement numbers has a “1” as MSB).

• ZF (Zero
Flag) is ‘1’ if the result is zero.

• PF (Parity
Flag) is ‘1’ if the low order 8-bits of the result contain an even number of
‘1s’.

• CF (Carry Flag) is ‘1’ if an
addition causes a carryout or a subtraction causes a borrow. X86 Assembly
Language Programming for the PC 23

• AF
(Auxiliary Flag) is ‘1’ if an addition causes a carry-out or a subtraction
causes a borrow in/by bit 3. This flag is used exclusively for BCD arithmetic.
• OF (Overflow Flag) is set if the result is out of range. • DF (Direction
Flag) is used by string manipulation instructions. If ‘1’ auto-increment;
otherwise, autodecrement. • IF (Interrupt Flag) if set, maskable interrupts are
recognized. • TF (Trap Flag) if set, a “trap” is executed after each
instruction (control is transferred to a subroutine after each instruction).