addresing modes

Post on 27-Oct-2014

24 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Chapter 3: 8088/80x86 Addressing

Modes

Qi Cheng

2

Chapters 3: Overview

• Memory/IO addressing details focus on locations of two operands

• Instruction addressing

• Stack addressing

3

3.4 MOV Instruction

MOV Destination, Source (Move byte or word data)

Note: Destination and Source should be of the same size.

e.g., MOV AL,30H ; AL 30HMOV DL,AL ; DL AL

but notMOV DX,AL ; illegal

Note that MOV DS,1000H is an illegal instruction (not defined).

initializing segment register:

MOV AX,1000HMOV DS,AX

4

3.5 Addressing Modes

way to define addresses of operands

By default, CPU uses DS as segment register (because operands are data), and offset should be specified in instructions.

BP and SP use SS as segment register.

Physical address: combination of segment register content and an offset

5

(1) Immediate addressing

Example: What is the function of MOV CX,7?Sol: CX=16bit, then 7=0007H,

Machine code: B9 07 00 (3 bytes)

(2) Register addressing

Example: If AX=1000H, BL=80H, what is the result of MOV AL,BL?Sol: BLAL, result is AX=1080H.

Machine code: 88 B8 (2 bytes)

3.5 Addressing Modes

6

3.5 Addressing Modes

7

3.5 Addressing Modes

8

(3) Direct addressing (square brackets refer to memory location(s))

Example: MOV [7000H],AX ? If DS=1000H.Sol:

copy 16-bit number in AX 2 memory locations DS:7000H, DS:7001H

but where?

Physical address=10000H+7000H=17000H.

Result: copy AL to 17000H and AH to 17001H.

Machine code: A3 00 70 (3 bytes)

3.5 Addressing Modes

9

3.5 Addressing Modes

MOV [7000H],BX ? If DS=1000H.

Can you have MOV 7000H,BX ? Why?

10

(4) Register indirect addressing (square brackets refer to memory location(s))

Example: Assume that SI=2000H, DS=0800H. MOV DL,[SI] ?Sol:

copy 8-bit number in a memory location DL

but where?

Physical address = 08000 H+2000H = 0A000H.

Result: copy the number in 0A000H to DL

Machine code: 8A 14 (2 bytes)

MOV DL, ES:[SI] ?MOV ES:[DI],AL ?

3.5 Addressing Modes

11

(5) Based addressing (square brackets refer to memory location(s))

Example: MOV AX,[BX+4] ? if DS=0100H, BX=0600H.Sol:

copy 16-bit number in 2 memory locations AX

but where?

Physical address=01000H+0600H+0004H=01604H

Result: copy the number in 01604H to AL the number in 01605H to AH

Machine code: 8B 47 04 (3 bytes)

3.5 Addressing Modes

12

(5) Based addressing (square brackets refer to memory location(s))

Example: MOV AX,[BP+4] ? if SS=0200H, BP=0100H.Sol:

copy 16-bit number in 2 memory locations AX SS:0104H, SS:0105Hbut where?

Physical address=02000H+0100H+00004H=02104H

Result: copy the number in 02104H to AL the number in 02105H to AH

Machine code:

3.5 Addressing Modes

13

3.5 Addressing Modes

More examples on segment override prefix:

MOV AX, [3000H] ( AX 16-bit number in DS:3000H, DS:3001H)

MOV AX, ES:[3000H] ( AX 16-bit number in ES:3000H, ES:3001H)

MOV AX, SS:[3000H] ( AX 16-bit number in SS:3000H, SS:3001H)

MOV AX, CS:[3000H] ( AX 16-bit number in CS:3000H, CS:3001H)

14

3.5 Addressing Modes

Examples for arithmetic/bit instructions

15

3.5 Addressing Modes

Examples for program transfer instructions

16

(7) Indexed addressing (left as exercise)

(8) Based indexed addressing (left as exercise)

(9) Based indexed with displacement addressing (left as exercise)

(10) String addressing

MOVSB move a string one byte

before after

SI 8760H 8761HDI 7860H 7861HDS not affected in this exampleES not affected in this example

3.5 Addressing Modes (week 5)

17

3.5 Addressing Modes

18

(11) Port addressing (review)

8088IN AL,40HOUT 80H,AL

Total no. of ports is 256.

80x86 MOV DL,80HIN AX,38HOUT DL,AX

Total no. of ports is 65,536.

(12) 32-bit addressing

not covered in this subject

3.5 Addressing Modes

19

3.5 Addressing Modes (supp.)

(1) Instruction addressing: way to specify the address of next instructions

JMP, JZ,…CALLRET, IRET

CPU uses CS and IP to generate address of instructions. Continuous execution of instructions is accomplished by adjusting IP

(2) Stack addressing: way to specify the address of data in stackPUSH, POP

CPU uses SS and SP to generate address of top memory location in stack.

20

Instruction Addressing

Use of CS & IP

3.5 Addressing Modes (supp.)

21

Stack Addressing

Use of SS & SP

3.5 Addressing Modes (supp.)

22

Stack Addressing

Use of SS & SP

3.5 Addressing Modes (supp.)

23

Summary—direct & indirect addressing

Direct ---the instruction specifies the addressIndirect ---the instruction specifies where to find the address

Memory indirect---A memory location contains the addressRegister indirect---A register contains the address

Indirect addressing is needed for array/list processing

Summary—register indirect addressing

[BX],[BP] Based [SI],[DI] Index[BX+disp],[BP+disp] Based + displacement [SI+disp],[DI+disp] Index + displacement

3.5 Addressing Modes (summary)

24

3.5 Addressing Modes (summary)

Type of Memory Reference Default Segment Base Alternate Segment Base Offset

Instruction Fetch/Program transfer CS None IP

Stack Operation SS None SP

Data Transfer (except following) DS CS, ES, SS Physical Address

- String Source DS CS, ES, SS SI

- String Destination ES None DI

- BP used as Base Register SS CS, DS, ES Physical Address

- BX Used as Base Register DS CS, ES, SS Physical Address

Type of Memory Reference Default Segment Base Alternate Segment Base Offset

Arithmetic operations DS IP

Logic operations DS SP

Shift/rotate operations DS CS, ES, SS Physical Address

CS, ES, SS

CS, ES, SS

25

Chapter 3: Summary

1 Addressing modes

top related