Lect 4: Instruction Set and Addressing Modes

Download Report

Transcript Lect 4: Instruction Set and Addressing Modes

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
Basic
Instruction
Set
80286
80386
Protected Mode
System control
Instruction set
System control
Instruction set
Basic +
Extended
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
IP
0100
CS
DS
SS
ES
FS
GS
XXXX
ABCD
ABCD
AX
BX
CX
DX
SP
BP
SI
DI
01000
01001
01002
Memory
Content
8B
C3
XX
Instruction
MOV AX, BX
Immediate Addressing
Address
80386
MPU
0000
IP
0100
CS
DS
SS
ES
FS
GS
15
XX
AX
BX
CX
DX
SP
BP
SI
DI
01000
01001
01002
Memory
Content
B0
15
XX
Instruction
MOV AL, 15H
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
XXXX
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
03234
03235
ED
BE
BEED
MOV CX, [1234H]
16-bit Memory Operand Addressing
– Register Indirect Addressing Mode
• PA = Segment Base : Indirect Address {BX,BP,SI,DI}
• example : MOV
AX, [SI]
0000
IP
0100
0200
CS
DS
SS
ES
FS
GS
XXXX
AX
BX
CX
DX
1234
SP
BP
SI
DI
01000
01001
01002
01003
01004
8B
04
XX
XX
XX
03234
03235
ED
BE
BEED
MOV AX,[SI]
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
ED
1000
1234
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
04234
04235
+
Element 1
Base Register
Element 0
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
XX
1000
2000
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
05234
05235
BE
+
Element 1
Displacement
Element 0
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   
SS  CX  BX  1
    CX   
DS DX   2 8  bit displacement 
P A    :    DX     

ES
SP
4
32
bit
displaceme
nt


    BP   
FS  BP    8 
    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