You are on page 1of 29

Addressing Modes in

Microprocessor
8086/8088
Prof. Fayez F. M. El-Sousy
Department of Electrical Engineering
College of Engineering
Salman bin Abdulaziz University
Al-Kharj, Saudi Arabia
Prof. Fayez F. M. El-Sousy

Objectives of Addressing Modes in


Microprocessor 8086/8088
Upon completion of this chapter, you will be able to:
Explain the operation of each data-addressing
mode.
Use the data-addressing modes to form assembly
language statements.
Explain the operation of each program memoryaddressing mode.
Use the program memory-addressing modes to
form assembly and machine language statements.
Prof. Fayez F. M. El-Sousy

Objectives of Addressing Modes in


Microprocessor 8086/8088
Select the appropriate addressing mode to
accomplish a given task.
Detail the difference between addressing
memory data using real mode and protected
mode operation.
Describe the sequence of events that place data
onto the stack or remove data from the stack.
Explain how a data structure is placed in
memory and used with software.
Prof. Fayez F. M. El-Sousy

Addressing Modes in Microprocessor


8086/8088
Types of Addressing Modes:
(1) Data Addressing Modes
(2) Program-Memory Addressing
Modes
(3) Stack-Memory Addressing Modes

Prof. Fayez F. M. El-Sousy

1- Data Addressing Modes in


Microprocessor 8086/8088
An addressing mode means the method by which
an operand can be specified in a register or a
memory location
8086/8088 provide a seven Addressing Modes:
Modes
(1) Register Addressing
(2) Immediate Addressing
(3) Direct Addressing
(4) Register Indirect Addressing
(5) BasePlusIndex Addressing
(6) Register Relative Addressing
(7) Base RelativePlusIndex Addressing

Prof. Fayez F. M. El-Sousy

Opcode and Operand in Microprocessor


8086/8088
An opcode is a short of operation code
An opcede is a singe instruction can be executed by the CPU.
In machine language it is a binary or hexadecimal value such
as B7 loaded into the instruction register.
In assembly language mnemonic form an opcode is a
command such as MOV or ADD or JMP.
Example:
MOV AX, 1000H ; MOV is the opcode.
; AX (register) is an operand.
Operands are manipulated by the opcode. In this example,
the operands are the register AX and the value 1000H.
8-bit
OP CODE
Prof. Fayez F. M. El-Sousy
1 byte

8-bit

8-bit
OPERAND
1 to 2 byte

Register Addressing Mode


Transfers a copy of a byte or word from the source register
or memory location to the destination register or memory
location.
Use of registers to hold the data to be manipulated
Memory is not accessed when this addressing mode is
executed
Example:
MOV BX, DX ; copy the contents of DX into BX
MOV ES, AX ; copy the contents of AX into ES
ADD AL, BH ; add the contents of BH to
contents of AL
Prof. Fayez F. M. El-Sousy
Source and destination registers must have the same size

Register Addressing Mode

Prof. Fayez F. M. El-Sousy

Immediate Addressing Mode


Transfers the source, an immediate byte or word
of data, into the destination register or memory
location
The source operand is a constant
The operand comes immediately after the opcode
For this reason, this addressing mode executes
quickly
Immediate addressing mode can be used to load
information into any of the registers except the
segment registers and flag registers.
Prof. Fayez F. M. El-Sousy

Immediate Addressing Mode


Example:
MOV AX, 2550H ; move 2550H into AX
MOV CX, 625
; load the decimal value 625 into
CX
MOV BL, 40H
; load 40H into BL
The data must first be moved to a general-purpose
register and then to the segment register.
Example:
MOV AX, 2550H
MOV DS, AX
MOV DS, 0123H
; illegal instruction!
Prof. Fayez F. M. El-Sousy

Immediate Addressing Mode

Prof. Fayez F. M. El-Sousy

Direct Addressing Mode


Moves a byte or word between a memory location and
a register.
The data is in some memory location(s) and the
address of the data in memory comes immediately
after the instruction
This address is the offset address
Example:
MOV AX, [2400] ; move contents of DS:2400H
into AX
The physical address is calculated by combining the
contents of offset location 2400 with DS
Prof. Fayez F. M. El-Sousy

Direct Addressing Mode


Example:
Find the physical address of the memory location and its
contents after the execution of the following, assuming that DS
= 1512H.
MOV AL, 3BH
MOV [3518], AL
Solution:
First 3BH is copied into AL,
Then in line two, the contents of AL are moved to logical
address DS:3518 which is 1512:3518.
Shifting DS left and adding it to the offset gives the physical
address of 18638H (15120H + 3518H = 18638H).
After the execution of the second instruction, the memory
Prof. Fayez F. M. El-Sousy
location with address 18638H will contain the value 3BH.

Direct Addressing Mode

Prof. Fayez F. M. El-Sousy

Register Indirect Addressing Mode


Transfers a byte or word between a register and a
memory location addressed by an index or base
register
The address of the memory location where the
operand resides is held by a register
The registers used for this purpose are SI, DI, and BX
They must be combined with DS in order to generate
the 20-bit physical address.

Prof. Fayez F. M. El-Sousy

Register Indirect Addressing Mode


Example:
MOV AX, [BX]

; moves into AX the contents of


the memory location pointed
to by DS:BX, 1000:1234
The physical address is calculated as
1000x10+1234=11234H
The same rules apply when using register SI or DI.
Example:
MOV CL, [SI]
; move contents of DS:SI into CL
MOV [DI], AH
; move contents of AH into DS:DI
Prof. Fayez F. M. El-Sousy

Register Indirect Addressing Mode


Example:
Assume that DS = 1120, SI = 2498, and AX = 17FE Show
the contents of memory locations after the execution of
MOV [SI], AX
; move contents of AX into DS:SI
Solution:
The contents of AX are moved into memory locations
with logical address DS:SI and DS:SI + 1;
The physical address starts at DS (shifted left) + SI =
13698. According to the little endian convention,
Low address 13698H contains FE, the low byte,
High address 13699H will contain 17, the high byte.

Prof. Fayez F. M. El-Sousy

Register Indirect Addressing Mode

Prof. Fayez F. M. El-Sousy

Base-Plus-Index Addressing Mode


Transfers a byte or word between a register and the memory location
addressed by a base register (BP or BX) plus an index register (DI or
SI).
Combining based and indexed addressing modes.
One base register and one index register are used.
Examples:
MOV [BX+DI], CL ; move contents of CL into DS:BX+DI
Physical Address = DSx10 + BX+DI

MOV CH, [BX+SI]

; move contents of the DS:BX+SI into CH

MOV AH, [BP+DI]

; move contents of the SS:BP+SI into AH

MOV [BP+SI], AL

; move contents of AL into SS:BP+SI

Physical Address = DSx10 + BX+SI


Physical Address = SSx10 + BP+DI
Physical Address = SSx10 + BP+SI

Prof. Fayez F. M. El-Sousy

Base-Plus-Index Addressing Mode

Prof. Fayez F. M. El-Sousy

Register Relative Addressing Mode


Moves a byte or word between a register and the memory location
addressed by an index or base register plus a displacement.
The data in a segment of memory are addressed by adding the
displacement to the contents of a base or an index register (BP, BX, DI,
or SI).
Examples:
MOV AX, [BX+4] ; move contents of DS:BX+4 into AX
Physical Address = DSx10 + BX+4

MOV CH, [SI+5]

; move contents of the DS:SI+5 into CH

MOV AH, [DI+1]

; move contents of the DS:DI+1 into AH

Physical Address = DSx10 +SI+5

Physical Address = DSx10 + DI+1

MOV [BP+2], AL

; move contents of AL into SS:BP+2

Physical Address = SSx10 + BP+2

Prof. Fayez F. M. El-Sousy

Register Relative Addressing Mode


Example:
Assume that DS = 4500, SS = 2000, BX = 2100, SI = 1486, DI =
8500, BP= 7814, and AX = 2512. Show the exact physical
memory location where AX is stored in each of the following. All
values are in hex.
1- MOV [BX+20], AX
2- MOV [SI+10], AX
3- MOV [DI+4], AX
4- MOV [BP+12], AX
Solution:
Physical Address = segment reg. x 10 + (offset reg.) +
displacement
1- DS:BX+20
location 47120 = (12) and 47121 = (25)
2- DS:SI+10
location 46496 = (12) and 46497 = (25 )
3- DS:DI+4
location 4D504 = (12) and 4D505 = (25)
Prof. Fayez F. M. El-Sousy
4- SS:BP+12
location 27826 = (12) and 27827 = (25)

Register Relative Addressing Mode

Prof. Fayez F. M. El-Sousy

Base Relative-Plus-Index
Addressing Mode
The base relative-plus-index addressing mode is similar to the
base-plus-index addressing mode, but adds a displacement
besides using a base register and an index register to form the
memory address.
This type of addressing mode often addresses a two-dimensional
array of memory data.
The data in a segment of memory are addressed by adding the
displacement to the contents of a base and an index register (BP,
BX, DI, or SI).
Examples:
MOV [BX+DI+1], AX ; move contents of AX into
DS:BX+DI+1
Physical Address = DSx10 + BX+DI+1H
MOV AX, [BX+SI+10] ; move contents of the DS:BX+SI+10
into AX
Prof. Fayez
F. M. El-Sousy Address = DSx10 + BX+SI+10H
Physical

Base Relative-Plus-Index
Addressing Mode
MOV AH, [BP+DI+3]

; move contents of the SS:BP+SI+3


into AH
Physical Address = SSx10 + BP+DI+3H

MOV [BP+SI+6], AL

; move contents of AL into


SS:BP+SI+6
Physical Address = SSx10 + BP+SI+6

MOV AX, FILE[BX+DI] ; move contents of the


DS:FILE+BX+DI into AX
Physical Address = DSx10 + BX+DI+FILE
MOV LIST[BP+SI+4], DH ; move contents of DH into
SS:LIST+BP+SI+4
Prof. Fayez F. M. El-Sousy
Physical Address = SSx10 +LIST+ BP+SI+4

Base Relative-Plus-Index
Addressing Mode

Prof. Fayez F. M. El-Sousy

Offset Registers for Various Segments


The following Table provides a summary of the
offset registers that can be used with the four
segment registers of the 8086/8088.
Segment Register

CS

Offset Register

IP

Prof. Fayez F. M. El-Sousy

DS

ES

SS

SI, DI, BX SI, DI, BX SP, BP

2- Program-Memory Addressing Modes


in Microprocessor 8086/8088
Program memory-addressing modes, used with
the JMP and CALL instructions, consist of
three distinct forms:
1- Direct Program Memory Addressing
2- Relative Program Memory Addressing
3- Indirect Program Memory Addressing
These three addressing forms are introduced in
the next Chapter (5) using the JMP instruction
to illustrate their operation.
Prof. Fayez F. M. El-Sousy

3- Stack-Memory Addressing Modes in


Microprocessor 8086/8088
The stack plays an important role in all
microprocessors.
It holds data temporarily and stores return addresses
for procedures.
The stack memory is a LIFO (last-in, first-out) memory,
which describes the way that data are stored and
removed from the stack.
Data are placed onto the stack with a PUSH instruction
and removed with a POP instruction.
The CALL instruction also uses the stack to hold the
return address for procedures and a RET (return)
instruction to remove the return address from the stack.
Prof. Fayez F. M. El-Sousy

You might also like