0% found this document useful (0 votes)
11 views

Addressing Modes 2

The document provides a comprehensive overview of the 80x86 addressing modes, detailing 17 different methods to access memory, including register, immediate, displacement, and various indexed modes. It explains the syntax and functionality of each addressing mode, along with examples to illustrate their use. The conclusion summarizes the key addressing modes discussed throughout the document.
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
0% found this document useful (0 votes)
11 views

Addressing Modes 2

The document provides a comprehensive overview of the 80x86 addressing modes, detailing 17 different methods to access memory, including register, immediate, displacement, and various indexed modes. It explains the syntax and functionality of each addressing mode, along with examples to illustrate their use. The conclusion summarizes the key addressing modes discussed throughout the document.
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/ 37

80x86 ADDRESSING MODES

Dr. Nikhil Kumar Marriwala


ROAD MAP
➢ Introduction
➢ Register Addressing Mode
➢ Immediate Addressing Mode
➢ Memory Addressing Mode
➢ Displacement Addressing Mode
➢ Register Indirect Mode
➢ Indexed Addressing Mode
➢ Base Indexed Addressing Mode
➢ Base Index Plus displacement addressing mode
➢ Program Memory addressing Modes
➢ Stack Addressing Modes

Prepared By:- Dr. Nikhil Kumar Marriwala 2


Data Memory Addressing Mode
80x86 Memory Addressing Modes
The 8086 provides 17 different ways to access memory. This
may seem like quite a bit at first, but fortunately most of the
address modes are simple variants of one another so they're
very easy to learn.
The addressing modes provided by the 8086 family include
displacement-only, base, displacement plus base, base plus
indexed, and displacement plus base plus indexed.
Variations on these five forms provide the 17 different addressing
modes on the 8086. See, from 17 down to five. It's not so bad
after all!

Prepared By:- Dr. Nikhil Kumar Marriwala 3


Register addressing Mode
1) 80x86 Register Addressing Modes
By specifying the name of the register as an operand to the instruction, you may access
the contents of that register. Consider the 8086 mov (move) instruction:
mov destination, source
This instruction copies the data from the source operand to the
destination operand. The only restriction is that both operands must be
the same size. Now let's look at some actual 8086 mov instructions:

mov ax, bx ;Copies the value from BX into AX


mov dl, al ;Copies the value from AL into DL
mov si, dx ;Copies the value from DX into SI
mov sp, bp ;Copies the value from BP into SP
mov dh, cl ;Copies the value from CL into DH
mov ax, ax ;Yes, this is legal!

Prepared By:- Dr. Nikhil Kumar Marriwala 4


Remember, the registers are the best place to keep
often used variables.
There are two restrictions on the use of the segment
registers with the mov instruction. First of all, you may
not specify cs as the destination operand, second, only
one of the operands can be a segment register. You
cannot move data from one segment register to another
with a single mov instruction. To copy the value of cs to
ds, you'd have to use some sequence like:
mov ax, cs
mov ds, ax

Prepared By:- Dr. Nikhil Kumar Marriwala 5


Immediate Addressing Mode
2) Immediate Addressing Mode:-
This addressing mode transfers the source –immediate byte or
word of data into the destination register or memory location.
➢ Example:- MOV AL, 22H
This instruction copies a byte sized 22H into register AL.
In the 80386 and above, a double-word of immediate data can be
transferred into a register or memory location.
➢ MOV ESI,12345678H
This instruction copies a double-word sized 1234578H into
register ESI.

Prepared By:- Dr. Nikhil Kumar Marriwala 6


Displacement Mode
3) The Displacement Only Addressing Mode
4) The displacement-only addressing mode consists of a 16 bit constant that
specifies the address of the target location. The instruction mov al,ds:[8088h]
loads the al register with a copy of the byte at memory location 8088h.
Likewise, the instruction mov ds:[1234h],dl stores the value in the dl register to
memory location 1234h:

Prepared By:- Dr. Nikhil Kumar Marriwala 7


The displacement-only addressing mode is perfect for accessing
simple variables.
Intel named this the displacement-only addressing mode because
a 16 bit constant (displacement) follows the mov opcode in
memory.
In that respect it is quite similar to the direct addressing mode on
the x86 processors . There are some minor differences, however.
First of all, a displacement is exactly that- some distance from
some other point. On the x86, a direct address can be thought of
as a displacement from address zero. On the 80x86 processors,
this displacement is an offset from the beginning of a segment (the
data segment in this example).

Prepared By:- Dr. Nikhil Kumar Marriwala 8


By default, all displacement-only values provide offsets into the data
segment. If you want to provide an offset into a different segment, you
must use a segment override prefix before your address.
For example, to access location 1234h in the extra segment (es) you
would use an instruction of the form mov ax,es:[1234h]. Likewise, to
access this location in the code segment you would use the instruction
mov ax, cs:[1234h]. The ds: prefix in the previous examples is not a
segment override.
Prepared By:- Dr. Nikhil Kumar Marriwala 9
Register Indirect Mode
4) The Register Indirect Addressing Modes
The 80x86 CPUs let you access memory indirectly through a register using the
register indirect addressing modes. There are four forms of this addressing
mode on the 8086, best demonstrated by the following instructions:
mov al, [bx]
mov al, [bp]
mov al, [si]
mov al, [di]
As with the x86 [bx] addressing mode, these four addressing modes
reference the byte at the offset found in the bx, bp, si, or di register,
respectively. The [bx], [si], and [di] modes use the ds segment by default. The
[bp] addressing mode uses the stack segment (ss) by default.

Prepared By:- Dr. Nikhil Kumar Marriwala 10


You can use the segment override prefix symbols if you wish to access
data in different segments. The following instructions demonstrate the
use of these overrides:
mov al, cs:[bx]
mov al, ds:[bp]
mov al, ss:[si]
mov al, es:[di]
Intel refers to [bx] and [bp] as base addressing modes and bx and bp
as base registers (in fact, bp stands for base pointer). Intel refers to the
[si] and [di] addressing modes as indexed addressing modes (si stands
for source index, di stands for destination index).

Prepared By:- Dr. Nikhil Kumar Marriwala 11


Prepared By:- Dr. Nikhil Kumar Marriwala 12
Indexed Addressing Mode
5) Indexed Addressing Modes
The indexed addressing modes use the following syntax:
mov al, disp[bx]
mov al, disp[bp]
mov al, disp[si]
mov al, disp[di]
If bx contains 1000h, then the instruction mov
cl,20h[bx] will load cl from memory location
ds:1020h. Likewise, if bp contains 2020h, mov
dh,1000h[bp] will load dh from location ss:3020.
Prepared By:- Dr. Nikhil Kumar Marriwala 13
The offsets generated by these addressing modes are
the sum of the constant and the specified register. The
addressing modes involving bx, si, and di all use the
data segment, the disp[bp] addressing mode uses the
stack segment by default. As with the register indirect
addressing modes, you can use the segment override
prefixes to specify a different segment:
mov al, ss:disp[bx]
mov al, es:disp[bp]
mov al, cs:disp[si]
mov al, ss:disp[di]

Prepared By:- Dr. Nikhil Kumar Marriwala 14


Prepared By:- Dr. Nikhil Kumar Marriwala 15
You may substitute si or di in the figure above
to obtain the [si+disp] and [di+disp]
addressing modes.
Note that Intel still refers to these addressing
modes as based addressing and indexed
addressing.

Prepared By:- Dr. Nikhil Kumar Marriwala 16


Based Indexed Addressing Mode
6) Based Indexed Addressing Modes
The based indexed addressing modes are simply combinations
of the register indirect addressing modes. These addressing
modes form the offset by adding together a base register (bx or
bp) and an index register (si or di). The allowable forms for these
addressing modes are
mov al, [bx][si]
mov al, [bx][di]
mov al, [bp][si]
mov al, [bp][di]

Prepared By:- Dr. Nikhil Kumar Marriwala 17


Suppose that bx contains 1000h and si contains 880h.
Then the instruction
mov al,[bx][si]
would load al from location DS:1880h. Likewise, if bp
contains 1598h and di contains 1004, mov ax,[bp+di]
will load the 16 bits in ax from locations SS:259C and
SS:259D.
The addressing modes that do not involve bp use the
data segment by default. Those that have bp as an
operand use the stack segment by default.

Prepared By:- Dr. Nikhil Kumar Marriwala 18


Prepared By:- Dr. Nikhil Kumar Marriwala 19
Based Index + Displacement Mode
7) Based Indexed Plus Displacement Addressing Mode
These addressing modes are a slight modification of the
base/indexed addressing modes with the addition of an eight bit
or sixteen bit constant. The following are some examples of
these addressing modes:

Prepared By:- Dr. Nikhil Kumar Marriwala 20


mov al, disp[bx][si]
mov al, disp[bx+di]
mov al, [bp+si+disp]
mov al, [bp][di][disp]
You may substitute di in the figure above to produce the
[bx+di+disp] addressing mode

Prepared By:- Dr. Nikhil Kumar Marriwala 21


You may substitute di in the figure above to
produce the [bp+di+disp] addressing mode.
Suppose bp contains 1000h, bx contains 2000h,
si contains 120h, and di contains 5. Then mov
al,10h[bx+si] loads al from address DS:2130;
mov ch,125h[bp+di] loads ch from location
SS:112A; and mov bx,cs:2[bx][di] loads bx from
location CS:2007.
Prepared By:- Dr. Nikhil Kumar Marriwala 22
Prepared By:- Dr. Nikhil Kumar Marriwala 23
Program Memory Addressing modes
NEAR JUMPS and CALLS
Intrasegment Direct -- IP relative displacement
(CS does not change) new IP = old IP + displacement
Allows program relocation with
no change in code.
Indirect -- new IP is in memory or a register.
All addressing modes apply.
FAR
Intersegment Direct -- new CS and IP are encoded in
(CS changes) the instruction.

Indirect -- new CS and IP are in memory.


All addressing modes apply
except immediate and register.

Prepared By:- Dr. Nikhil Kumar Marriwala 24


I-23
Stack Memory Addressing Mode

Push
Pop

Prepared By:- Dr. Nikhil Kumar Marriwala 25


Method to Remember all The Modes
An Easy Way to Remember the 8086 Memory Addressing Modes
There are a total of 17 different legal memory addressing modes on the 8086:
disp, [bx], [bp], [si], [di], disp[bx], disp[bp], disp[si], disp[di], [bx][si], [bx][di],
[bp][si], [bp][di], disp[bx][si], disp [bx][di], disp[bp][si], and disp[bp][di]. You could
memorize all these forms so that you know which are valid (and, by omission,
which forms are invalid). However, there is an easier way besides memorizing
these 17 forms. Consider the chart:

Prepared By:- Dr. Nikhil Kumar Marriwala 26


If you choose zero or one items from each of the columns and wind
up with at least one item, you've got a valid 8086 memory
addressing mode. Some examples:
Choose disp from column one, nothing from column two, [di] from
column 3, you get disp[di].
Choose disp, [bx], and [di]. You get disp[bx][di].
Skip column one & two, choose [si]. You get [si]
Skip column one, choose [bx], then choose [di]. You get [bx][di]
Likewise, if you have an addressing mode that you cannot construct
from this table, then it is not legal. For example, disp[dx][si] is illegal
because you cannot obtain [dx] from any of the columns above.

Prepared By:- Dr. Nikhil Kumar Marriwala 27


8086 Instruction Format

Prepared By:- Dr. Nikhil Kumar Marriwala 28


Table For Register Field

Prepared By:- Dr. Nikhil Kumar Marriwala 29


Table for Mod Field

Prepared By:- Dr. Nikhil Kumar Marriwala 30


Prepared By:- Dr. Nikhil Kumar Marriwala 31
Examples for Decoded Instructions

Prepared By:- Dr. Nikhil Kumar Marriwala 32


Prepared By:- Dr. Nikhil Kumar Marriwala 33
Prepared By:- Dr. Nikhil Kumar Marriwala 34
Conclusion
We can Now conclude to say that we have studied all the
different addressing modes present in 80x86 family of
processors. The various addressing modes that we have
seen are as follows:-
Introduction, Register Addressing Mode, Memory
Addressing Mode, Displacement Addressing Mode,
Register Indirect Mode, Indexed Addressing Mode, Base
Indexed Addressing Mode, Base Index Plus displacement
addressing mode, Program memory addressing Modes

Prepared By:- Dr. Nikhil Kumar Marriwala 35


Queries

Any questions related to the topic


can be mailed to me at
[email protected]

Or the problem can be sought out


here only in the class.

Prepared By:- Dr. Nikhil Kumar Marriwala 36


THANKS!

Prepared By:- Dr. Nikhil Kumar Marriwala 37


4/20/2025 Er. Nikhil Marriwala 37

You might also like