Addressing Mode
MOHD. YAMANI IDRIS/ NOORZAILY
MOHAMED NOOR 1
8086 Microprocessor Register
8086 Registers Category
Category Bit Register Name
General Purpose Register 16 AX,BX,CX,DX
General Purpose Register 8 AH,AL,BH,BL,CH,CL,DH,DL
Pointer Register 16 SP (Stack Pointer)
BP (Base Pointer)
Index Register 16 SI (Source Index)
DI (Destination Index)
Segment Register 16 CS (Code Segment)
DS (Data Segment)
SS (Stack Segment)
ES (Extra Segment)
Instruction Pointer Register 16 IP (Instruction Pointer)
Status Register (Flag) 16 DR (Flag Register)
MOHD. YAMANI IDRIS/ NOORZAILY
MOHAMED NOOR 2
General Purpose Registers
This register is used for general data manipulation
Even CPU able to operate on the data stored in memory, the
same data can be process much faster if it is in register
The function for 16-bit 8086 microprocessor register is as
follows
Register Function
AX Accumulator Register
For arithmetic, logic and data transfer operation
BX Base Register
Also as address register
CX Count Register
Used for loop counter, shift and rotate bits
DX Data Register
Used in division and multiplication also I/O operation
MOHD. YAMANI IDRIS/ NOORZAILY
MOHAMED NOOR 3
8-bit Data Division from 16-bit
16-bit register can be divided into two 8-bit
register (i.e AX=AH&AL, BX=BH&BL,
CX=CH&CL, DX=DH&DL)
Figure 1: 8-bit Data Division from 16-bit
MOHD. YAMANI IDRIS/ NOORZAILY
MOHAMED NOOR 4
Segment Register
Main memory management in 8086 use segment
concept
The following show the usage of segment in memory
Segment Usage
Code (CS) Space to store program that will be executed
Data (DS) Space to store data that will be processed
Stack (SS) Special space to store information needed by
microprocessor to execute subroutine or
interrupt service
Extra (ES) Function is the same as DS
MOHD. YAMANI IDRIS/ NOORZAILY
MOHAMED NOOR 5
Instruction Pointer Register (IP)
Register which stores instruction address to
be executed
Each time instruction is fetch from memory to
be executed in processor, IP content will be
added so that it always show to the next
instruction
If branch instruction, the IP content will be
loaded with new value which is the branch
address
MOHD. YAMANI IDRIS/ NOORZAILY
MOHAMED NOOR 6
Index Register and Pointer
This registers is used for storing relative shifting
value for memory address location
There are 2 pointer register:
Stack Pointer (SP) – point to the top stack
Base Pointer (BP) – used for fetch data in data segment
There are 2 index register:
Source Index (SI) – contains offset address for source
operand in data segment
Destination Index (DI) - contains offset value for
destination operand in DS
MOHD. YAMANI IDRIS/ NOORZAILY
MOHAMED NOOR 7
Flag/Status Register
Flag bit status register is used to determine
flow control when conditional branch
instruction is executed
R = Register SF = Sign Flag
U = Undefined ZF = Zero Flag
OF = Overflow Flag AF = Auxiliary Flag
DF = Direction Flag PF = Parity Flag
IF = Instruction Flag CF = Carry Flag
TF = Trap Flag
MOHD. YAMANI IDRIS/ NOORZAILY
MOHAMED NOOR 8
Addressing Mode
Concept from Computer Science
Are an aspect of the Instruction Set
Architecture (ISA) in most CPU design
How machine language instruction in that
architecture identify operand of each
instruction
Primarily interest the compiler writer and
those who write code directly in assembly
language
MOHD. YAMANI IDRIS/ NOORZAILY
MOHAMED NOOR 9
Addressing Mode
Addressing Mode is a technique to determine which operand to
be fetched. (Operand = argument for an operator or for machine
language instruction)
Addressing mode is used for:
Give flexible programming to user using pointers to memory,
counter for loop control, index for data and program replacement
Reduce bit numbers in address field for an instruction
There are 7 types of addressing mode in 8086 register:
Register addressing mode
Immediate addressing mode
Direct addressing mode
Indirect addressing mode
Base relative addressing mode
Index relative addressing mode
Base index relative addressing mode
MOHD. YAMANI IDRIS/ NOORZAILY
MOHAMED NOOR 10
Addressing Mode
Addressing Mode Advantage Disadvantage
Register No memory reference Limited address space
Immediate No memory reference Limited operand
magnitude
Direct Easy Limited address space
Indirect Large address space More reference to
memory
Base relative Flexible Complex
Index relative Flexible Complex
Base index relative Flexible Complex
MOHD. YAMANI IDRIS/ NOORZAILY
MOHAMED NOOR 11
Register Addressing Mode
Simplest mode and often used
Involved register usage
Data obtained from operation is stored in other
register
EA = R
EA = Effective Address (EA) for one location
which contain reference operand
R = Address field content in instruction which refer
to register (R)
MOHD. YAMANI IDRIS/ NOORZAILY
MOHAMED NOOR 12
Register Addressing Mode
Figure: Register Addressing Mode (EA=R)
MOHD. YAMANI IDRIS/ NOORZAILY
MOHAMED NOOR 13
Register Addressing Mode
Example:
Copy DX value to BX
Source operand
Destination operand
MOHD. YAMANI IDRIS/ NOORZAILY
MOHAMED NOOR 14
Register Addressing Mode
MOHD. YAMANI IDRIS/ NOORZAILY
MOHAMED NOOR 15
Immediate Addressing Mode
Data is coded directly into machine code instruction
Operand for source is a constant and is part of instruction
Operand = A (where A = content for address field in instruction
Figure: Immediate Addressing Mode (Operand = A)
Example: Load value 2550H to AX
Source operand
Destination operand
MOHD. YAMANI IDRIS/ NOORZAILY
MOHAMED NOOR 16
Immediate Addressing Mode
Can’t be used with data segment (DS) and flag register (DF)
Invalid Example:
Load value directly to DS
Source operand
Destination operand
This problem can be overcome by loading 0123H to one
general purpose register and then the register value is copied
to segment register as the following:
MOHD. YAMANI IDRIS/ NOORZAILY
MOHAMED NOOR 17
Immediate Addressing Mode
MOHD. YAMANI IDRIS/ NOORZAILY
MOHAMED NOOR 18
Direct Addressing Mode
Operand is stored in memory location, commonly data segment
(DS)
Source operand is the address not immediate data (written in [ ])
This address is effective address which is the address of 16-bit
offset for operand storage location (from current DS value)
Effective address need to be coupled with DS content to get the true
operand address (physical address)
EA = A
EA = Effective address for
location that contains
referred operand
A = Content for address field in
one instruction
MOHD. YAMANI IDRIS/ NOORZAILY
MOHAMED NOOR 19
Direct Addressing Mode
Example
Effective Address given is = 2400. If DS content is 2000 therefore physical
address is
Physical Address = Segment Address + Effective Address
MOHD. YAMANI IDRIS/ NOORZAILY
MOHAMED NOOR 20
Indirect Addressing Mode
R= content for address
field in instruction
which referred to
register
This mode use register as substitute to constant (in direct
addressing mode) to determine 16-bit offset address for an operand
Offset address where data is placed might be in base pointer
register (BP), base register (BX), index register (DI,SI)
In ambiguity case, assembler use BYTE PTR and WORD PTR to
show the size of data address using memory pointer
MOHD. YAMANI IDRIS/ NOORZAILY
MOHAMED NOOR 21
Indirect Addressing Mode
It is often used to access data table from memory
Example:
Effective Address given is = 1122. If DS content is 1010 therefore physical
address is
Physical Address = Segment Address + Effective Address
MOHD. YAMANI IDRIS/ NOORZAILY
MOHAMED NOOR 22
Base Relative Addressing Mode
Operand located in address obtained from addition of 8 or 16 bit
displacement into one of BX or BP and the result is then combined
with segment data (DS/SS)
This 8 or 16- bit displacement must be specified in operand field and
translated as signed two’s compliment
For 8-bit, displacement must in the range of -128 to +127
For 16-bit, displacement must in the range of -32768 to +32767
Effective Address = [Base register] + displacement
Physical Address = DS/SS = [Base register] + displacement
MOHD. YAMANI IDRIS/ NOORZAILY
MOHAMED NOOR 23
Base Relative Addressing Mode
Example:
Effective Address = Register [BX] + displacement
If DS content is 4000 therefore physical address is:
Physical Address = Segment Address + Effective Address
MOHD. YAMANI IDRIS/ NOORZAILY
MOHAMED NOOR 24
Indexed Relative Addressing Mode
The same as base addressing except that index register (SI/DI) is
used
Operand is at given address by signed 8 or 16-bit displacement
addition to one of SI or DI and the result is then added with segment
register (DS=Default)
Example
MOV DX, ARRAY [SI]
Effective address = register [SI] + ARRAY
= 5000 + 1234H
= 6234H
If DS content is 2000, therefore the physical address is
Physical address = Segment address + Effective address
= 20000H + 6234H
=26234H
MOHD. YAMANI IDRIS/ NOORZAILY
MOHAMED NOOR 25
Indexed Relative Addressing Mode
MOHD. YAMANI IDRIS/ NOORZAILY
MOHAMED NOOR 26
Base Indexed Relative Addressing Mode
Combine base addressing mode and indexed addressing mode
Base register (BX?BP) is added to index register (DI/SI) as positive
integer (each register is in the range of 0 to 65535)
As default, segment address is obtained from DS except for BP
register which is obtained form SS
Effective Address = [base address] + [index register] + displacement
Example
Let say BX = 1000X, SI = 2000H, BETA = 1234H, DS =1200H
Effective Address = register [BX] + register [SI] + ARRAY
Physical Address = Segment address + Effective address
MOHD. YAMANI IDRIS/ NOORZAILY
MOHAMED NOOR 27
Base Indexed Relative Addressing Mode
MOHD. YAMANI IDRIS/ NOORZAILY
MOHAMED NOOR 28