Sie sind auf Seite 1von 14

Lect 3: Instruction Set and Addressing Modes

386 Instruction Set (3.4)


Basic Instruction Set : 8086/8088 instruction set Extended Instruction Set : 80286; several new instructions and additional addressing modes 80386 specific instruction set:
8086/8088 80286
System control Instruction set Basic Instruction Set Basic + Extended Instruction Set

80386
Protected Mode System control Instruction set Basic + Extended+ 80386 specific Instruction Set

Real Mode

386 Instruction Set (3.4)


Addressing Modes of 386DX (3.5)
Addressing Modes: a method of specifying an operand Operands : in REG, Memory, I/O ports, and within Instruction * Control Transfer : direct, indirect addressing the modes available register addressing : REG immediate addressing: within Instruction direct addressing register indirect addressing MEM or I/O based addressing indexed addressing based indexed addressing

Addressing Modes
Register Operand Addressing Mode can be accessed in byte, word, or double word sizes. MOV AX, BX Byte: AL, AH, BL, BH, CL, CH, DL, DH Word: AX, BX, CX, DX, SP, BP, SI, DI, CS, DS, SS, ES, FS, GS Double Word: EAX, EBX, ECX, EDX, ESP, EBP, ESI, EDI See Fig 3.8 in page 64 Immediate Operand Addressing an operand is part of the instruction MOV AL, 15H 8 bits, 16 bits, and 32 bits in length See Fig 3.10 in page 67

Register Addressing
Address 80386 MPU 0000 0100 IP CS DS SS ES FS GS 01000 01001 01002 Memory Content 8B C3 XX Instruction MOV AX, BX

XXXX ABCD ABCD

AX BX CX DX SP BP SI DI

Immediate Addressing
Address 80386 MPU 0000 0100 IP CS DS SS ES FS GS 01000 01001 01002 Memory Content B0 15 XX Instruction MOV AL, 15H

15 XX

AX BX CX DX SP BP SI DI

Direct Addressing
16-bit Memory Operand Addressing Modes
16-bit addressing modes and 32-bit addressing modes Physical address = Segment Base: EA(effective address) Segment Base Address(SBA) : the starting location of the segment EA : the offset of the operand from the beginning of the segment of memory EA = Base + Index + Displacement Base = BX or BP, Index = SI or DI, displacement = 8-bit or 16-bit

16-bit Memory Operand Addressing


Direct Addressing Mode PA = Segment Base : Direct Address MOV CX, [1234H]
0000 0100 0200 IP CS DS SS ES FS GS AX BX CX DX SP BP SI DI 01000 01001 01002 01003 01004 8B 0E 34 12 XX MOV CX, [1234H]

XXXX

03234 03235

ED BE

BEED

16-bit Memory Operand Addressing


Register Indirect Addressing Mode PA = Segment Base : Indirect Address {BX,BP,SI,DI} example : MOV AX, [SI]
0000 0100 0200 IP CS DS SS ES FS GS AX BX CX DX SP BP SI DI 01000 01001 01002 01003 01004 8B 04 XX XX XX MOV AX,[SI]

XXXX

03234 03235

ED BE

1234

BEED

16-bit Memory Operand Addressing


Based Addressing Mode
PA = Segment Base : {BX or BP} + {8-bit or 16-bit displacement} Base register : the beginning of a data structure (See Fig 3.16 (b) in page 74 Example: MOV [BX]+1234H, AL
0000 0100 0200 IP CS DS SS ES FS GS AX BX CX DX SP BP SI DI 01000 01001 01002 01003 01004 88 07 34 12 XX MOV [BX]+1234H, AL

Displacement

Element n-1 Data Structure

ED 1000

04234 04235

+ Element 1 Base Register Element 0

1234

16-bit Memory Operand Addressing


Indexed Addressing Mode PA = Segment Base : {SI, DI}+{8-bit or 16-bit displacement} Displacement : the starting address of an array; Index: selects the specific element in the array Example: MOV AL, [SI]+2000H
0000 0100 0200 IP CS DS SS ES FS GS AX BX CX DX SP BP SI DI 01000 01001 01002 01003 01004 8A 44 34 12 XX MOV AL, [SI]+1234H

Index Register

Element n-1 Array of data

XX 1000

05234 05235

BE

+ Element 1 Displacement Element 0

2000

16-bit Memory Operand Addressing


Based-Indexed Addressing Mode PA= Seg Base: {BX, BP}+{SI,DI}+{8-bit or 16-bit displacement} to access complex data structures See fig 3.20 in page 80 Example: MOV AH, [BX][SI]+1234H opcode : 8A 44 34 12

32-bit Memory Operand Addressing Modes


Enhanced in two ways Scale factor : EA = base + (index x scale factor) + displacement PA = Segment Base: EA
AX AX CS BX BX 1 SS CX CX  bit displacement 2 8 DS DX PA ! :  DX v  4 32 ES - bit displacement SP BP 8 FS BP SI GS SI DI DI

32-bit Memory Operand Addressing Modes


See fig 3.23 in page 83: change 16-bit displacement to 32-bit displacement How can we specify the 32-bit extension modes? Default (D) bit in the code segment descriptor 2 prefixes to the instruction set Operand size prefix Address size prefix

Das könnte Ihnen auch gefallen