2. 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.
3. An addressing mode means the method by which
an operand can be specified in a register or a
memory location
8086provide a seven Addressing Modes:
(1) Register Addressing
(2) Immediate Addressing
(3) Direct Addressing
(4) Register Indirect Addressing
(5) Based Indexed Addressing
(6) Register Relative Addressing
(7) Relative Based Indexed Addressing
4. 8-bit 8-bit 8-bit
OP CODE OPERAND
byte 1 to 2 byte
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.
5. 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
MOV ES, AX
ADD AL, BH
; copy the contents of DX into BX
; copy the contents of AX into ES
; add the contents of BH to
contents of AL
destination registers must have the same size
6.
7. 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.
8. Example:
MOV AX, 2550H
MOV CX, 625
MOV BL, 40H
; move 2550H into AX
; load the decimal value 625 into
CX
; 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!
9.
10. 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
11. Example:
Find the physical address of the memory location and its
contents after the execution of the following, assuming that DS
= 1512H.
AL, 3BH
[3518], AL
MOV
MOV
Sol
ution
:
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. Fayleoz Fc. aMa.tEil-oSonusy with address 18638H will contain the
value 3BH.
12.
13. 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.
14. 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]
MOV [DI], AH
; move contents of DS:SI into CL
; move contents of AH into DS:DI
15. 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.
16.
17. 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
Physical Address = DSx10 + BX+SI
MOV AH, [BP+DI] ; move contents of the SS:BP+SI into AH
Physical Address = SSx10 + BP+DI
MOV [BP+SI], AL ; move contents of AL into SS:BP+SI
= SSx10 + BP+SI
18.
19. 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
Physical Address = DSx10 +SI+5
MOV AH, [DI+1] ; move contents of the DS:DI+1 into AH
Physical Address = DSx10 + DI+1
MOV [BP+2], AL ; move contents of AL into SS:BP+2
= SSx10 + BP+2
20. Example:
Assume that DS = 4500, SS = 2000, BX = 2100, SI = 1486, DI =
8500, BP= 7814, andAX = 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
2 DS:SI+10
3 DS:DI+4
4- SS:BP+12
location 47120 = (12) and 47121 = (25)
location 46496 = (12) and 46497 = (25 )
location 4D504 = (12) and 4D505 = (25)
location 27826 = (12) and 27827 = (25)
21.
22. 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
PhysicalAddress = DSx10 + BX+SI+10H
23. 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
Address = SSx10 +LIST+ BP+SI+4
24.
25. Segment Register CS DS ES SS
Offset Register IP SI, DI, BX SI, DI, BX SP, BP
The following Table provides a summary of the
offset registers that can be used with the four
segment registers of the 8086