林銘波編著 --- 全華科技圖書公司
第3章 CPU規劃模式
3.1
本章目標
• 了解80x86在實址模式的規劃模態
• 了解80x86的資料類型與記憶器組織
• 了解80x86的16位元與32位元定址方式
• 了解80x86的指令格式與編碼方法
• 了解80x86的實址模式與保護模式的位址形成方式
微算機原理與應用 第3章 CPU規劃模式
80x86規劃模式
AH BH CH DH
AL BL CL DL EAX
EBX ECX EDX EBP ESP ESI EDI
EFLAGS EIP
SS (堆疊節區) CS (指令節區) AX BX CX DX BP SP SI DI
FLAGS IP 0 7 0
7 8位元暫存器
0
15 16位元暫存器
31 0 32位元暫存器
通用暫存器
狀態與指令暫存器
林銘波編著 --- 全華科技圖書公司
第3章 CPU規劃模式
3.3
80x86通用暫存器的特殊功能
暫存器 一般功能 特殊功能
EAX, AX, AL 累積器(ACC) 乘、除與 I/O ;表格轉換(AL) ;十進制算術
EBX, BX 基底暫存器 表格轉換
ECX, CX, CL 計數器 字元串運算;迴路計數器;動態與循環移位
EDX, DX 資料暫存器 乘、除與間接 I/O 定址
ESP, SP 堆疊指示器 堆疊運算;指標暫存器
EBP, BP 基底指示器 基底暫存器;指標暫存器
ESI, SI 來源指標 字元串來源;指標暫存器
EDI, DI 標的指標 字元串標的;指標暫存器
微算機原理與應用 第3章 CPU規劃模式
80x86狀態暫存器
0 0 0 0 OF DF IF TF SF ZF 0 AF 0 PF 0 CF
保留位元,設定為0 進位旗號
同位旗號 輔助進位旗號 零旗號 符號旗號 TRAP旗號 中斷致能/抑制旗號 方向旗號 溢位旗號
林銘波編著 --- 全華科技圖書公司
第3章 CPU規劃模式
3.5
80x86記憶器組織
雙語句[0000H]=67452301H 雙語句[0001H]=89674523H
(a) 80x86與8088邏輯結構 及8088實際結構 }
}
位址 00000 00001 00002 00003 00004 00005
FFFFF FFFFE FFFFD FFFFC
資料 01 23 45 67 89 AB
CD EF A8 79 ...
語句[0000H]=2301H 位元組[0002H]=45H 語句[0003H]=8967H 位元組[0005H]=ABH
(b) 8086實際結構
00000 00002 00004 00006
FFFFC FFFFE 00001
00003 00005 00007
FFFFD FFFFF
...
23 67 AB 76
EF 79
...
01 45 89 23
CD A8
微算機原理與應用 第3章 CPU規劃模式
80x86記憶器組織
(c) 80286實際結構 000000 000002 000004 000006
FFFFFC FFFFFE 000001
000003 000005 000007
FFFFFD FFFFFF
...
23 67 AB 76
EF 79
...
01 45 89 23
CD A8
... ... ... ...
00000000 00000004 00000008
FFFFFFFC FFFFFFF8 FFFFFFF4
(d) 80386/80486實際結構
00000000 00000008 00000010
FFFFFFE8 ... ... ... ...
... ... ... ...
林銘波編著 --- 全華科技圖書公司
第3章 CPU規劃模式
3.7
對正與非對正語句---例題3.2-1
0111 0001 1011 0001 記憶器
71H B1H 位址
(HEX) 030CB 030CC
(b)位址=030CBH 0110 1011
1001 0101 記憶器
6BH 95H 位址
(HEX) 002CC 002CD
(a)位址=002CCH
微算機原理與應用 第3章 CPU規劃模式
對正與非對正雙語句---例題3.2-2
(a)位址 = 020CBH 0001 1011 0101 0010 位址 記憶器
(HEX) 020CB 020CC 020CD 020CE
0110 0100 1010 0111
1BH 52H 64H A7H
(b)位址 = 020ACH 0001 1011 0101 0010 位址 記憶器
(HEX) 020AC 020AD 020AE 020AF
0110 0100 1010 0111
1BH
52H
64H
A7H
林銘波編著 --- 全華科技圖書公司
第3章 CPU規劃模式
3.9
80x86未帶號整數
D7 D0
MSB LSB
(a) 未帶號位元組整數 D15 (b) 未帶號語句整數
MSB
D0 LSB
(c) 未帶號雙語句整數 MSB
D0 LSB
D31
微算機原理與應用 第3章 CPU規劃模式
80x86帶號整數
D7 D0
MSB(符號位元) LSB
(a) 帶號位元組整數 D15 (b) 帶號語句整數
MSB(符號位元)
D0 LSB
MSB(符號位元)
(c) 帶號雙語句整數
D0 LSB
D31
林銘波編著 --- 全華科技圖書公司
第3章 CPU規劃模式
3.11
80x86 BCD資料類型
(a) 併裝 BCD
D7 D0
1 2 4 4 3 1 2 4 4 3
BCD 數字 BCD 數字
(b) 未併裝 BCD
D7 D0
1 2 4 4 3
BCD 數字
微算機原理與應用 第3章 CPU規劃模式
字元串資料類型
例題 3.2-6 (字元串資料類型)
由表 1.1-1 所示的 ASCII 字元,找出代表下列字元串的 ASCII 字元:"Microprocessor Peinciples"。
解 解 解
解::::以十六進制表示 ASCII 字元,則該字元串與 ASCII 字元的對應關係如下:
M i 4D
c r o p r o c e s s o r
69 63 72 6F 70 72 6F 63 65 73 73 6F 72 20 P r
50
i n c i p l e s
72 69 6E 63 69 70 6C 65 73
林銘波編著 --- 全華科技圖書公司
第3章 CPU規劃模式
3.13
8086邏輯對實際位址的轉換
(a)實際位址的計算 0000
15 0
節區基底位址 有效位址
19 0
實際位址 +
0 15
(b) 指令摘取 0000
15 0
CS
IP
19 0
指令實際位址 +
0 15
(c) 變數參考 0000
15 0
DS
有效位址
19 0
資料實際位址 +
0 15
位址 小
大
記憶器
位移位址 節區位址
(d) 記憶器中的節區:位移 位址格式
微算機原理與應用 第3章 CPU規劃模式
記憶器參考類型的預設節區暫存器
參考類型 節區暫存器 另外節區 有效位址
指令摘取 CS(指令碼節區) 沒有 IP
堆疊運算 SS(堆疊節區) 沒有 SP
變數(除了下項) DS(資料節區) CS, ES, FS, GS, SS 有效位址 BP 作為基底暫存器 SS(堆疊節區) CS, ES, DS, FS, GS 有效位址 字元串來源 DS(資料節區) CS, ES, FS, GS, SS SI
字元串標的 ES(資料節區) 沒有 DI
林銘波編著 --- 全華科技圖書公司
第3章 CPU規劃模式
3.15
8086記憶器節區分配例
記憶器 0300H
1600H 1980H 1600H CS
DS SS ES
位址 03000H
12FFFH
16000H 19800H
25FFFH 297FFH
64 k位元組
64 k位元組
64 k位元組 CS節區
DS與ES節區 SS節區
微算機原理與應用 第3章 CPU規劃模式
MOD R/M位元組
0 1 2 3 4 5 6
7 位元數目
MOD REG R/M (a) 雙運算元指令
0 1 2 3 4 5 6
7 位元數目
MOD OPCODE R/M
(b) 單運算元(或另一運算元由opcode指定的雙運算元 )指令
林銘波編著 --- 全華科技圖書公司
第3章 CPU規劃模式
3.17
定址方式
定址方式:運算元的取得方式
• 暫存器定址
• 立即資料定址
• 直接定址
• 暫存器間接定址
• 暫存器相對定址
• 基底指標定址
• 基底指標相對定址
• IP相對定址
微算機原理與應用 第3章 CPU規劃模式
暫存器間接定址
00 reg 100 op code
MOD R/M 位元組 記憶器
BX
p p q q SI
DI + b b b b0
p p q q(EA) (DS)
EA BX
DI SI
=
林銘波編著 --- 全華科技圖書公司
第3章 CPU規劃模式
3.19
暫存器相對定址
EA BX BP SI DI
disp8 disp16
=
+
微算機原理與應用 第3章 CPU規劃模式
暫存器相對定址
(a) 使用8位元位移位址 (mode = 01)時 01 reg 110
op code
MOD R/M 位元組 記憶器
運算元 t t t t t + 1
t t t t t SI
BX
p p q q BP
DI
b b b b SS
dd
8位元位移 位址(disp8)
b b b b0 p p q q +
t t t t t (EA) (SS) (PA) s s d d (disp8) z z z z +
(BP)
林銘波編著 --- 全華科技圖書公司
第3章 CPU規劃模式
3.21
暫存器相對定址
(b) 使用16位元位移位址 (mode = 10)時 10 reg 110
op code
MOD R/M 位元組 記憶器
運算元 t t t t t + 1
t t t t t SI
BX
p p q q BP
DI
b b b b SS
dd
16位元位移位 址(disp16) ee
b b b b0 p p q q +
t t t t t (EA) (SS) (PA) e e d d (disp16) z z z z +
(BP)
微算機原理與應用 第3章 CPU規劃模式
基底指標定址
00 reg 000 op code
MOD R/M 位元組 記憶器
SI
BX p p q q
BP DI
x x y y p p q q + x x y y (BX)
(SI)
EA BX
BP SI
= DI
+
林銘波編著 --- 全華科技圖書公司
第3章 CPU規劃模式
3.23
基底指標相對定址
(a) 使用8位元位移位址 (mode = 01)時 01 reg 000
op code
MOD R/M 位元組 記憶器
運算元 t t t t t + 1
t t t t t SI
BX p p q q BP
DI
b b b b DS
x x y y
dd
8位元位移 位址(disp8)
b b b b0 p p q q +
t t t t t (EA) (DS) (PA) x x y y z z z z +
(BX) (SI) s s d d (disp8)
EA BX
BP SI DI
disp8 disp16
=
+
+
微算機原理與應用 第3章 CPU規劃模式
基底指標相對定址
(b) 使用16位元位移位址 (mode = 10)時 10 reg 000
op code
MOD R/M 位元組 記憶器
運算元 t t t t t + 1
t t t t t SI
BX p p q q BP
DI
b b b b DS
x x y y
dd
b b b b0 p p q q +
t t t t t (EA) (DS) (PA) x x y y z z z z +
(BX) (SI) e e d d (disp16)
ee
16位元位移位 址(disp16)
林銘波編著 --- 全華科技圖書公司
第3章 CPU規劃模式
3.25
IP相對定址
(a) 使用8位元位移位址時
op code 記憶器
運算元 t t t t t + 1
t t t t t IP
p p q q IP
b b b b CS
dd
8位元位移 位址(disp8)
b b b b0 p p q q +
t t t t t (EA) (SS) (PA) s s d d (disp8) z z z z + z z z z (IP)
微算機原理與應用 第3章 CPU規劃模式
IP相對定址
op code 記憶器
運算元 t t t t t + 1
t t t t t IP
p p q q IP
b b b b CS
dd
b b b b0 p p q q +
t t t t t (EA) (SS) (PA) e e d d (disp16) z z z z + z z z z (IP)
ee
16位元位移位 址(disp16)
林銘波編著 --- 全華科技圖書公司
第3章 CPU規劃模式
3.27
32位元定址方式
EA
EAX, ESP EBX, EBP ECX, ESI EDX, EDI
EAX, - EBX, EBP
ECX, ESI EDX, EDI
1 2 4 8
d8 d32
=
+
×
+
−
基底位址 指標位址 SF 位移位址
微算機原理與應用 第3章 CPU規劃模式
32位元定址方式
選用不同的位址成分組合產生了不同的定址分式:
1. 直接定址:只使用d32的位址成分。
2. 暫存器間接定址
3. 暫存器相對定址(或稱為基底定址) 4. 倍率指標定址
5. 倍率指標相對定址
6. 倍率基底指標定址
7. 倍率基底指標相對定址
林銘波編著 --- 全華科技圖書公司
第3章 CPU規劃模式
3.29
16位元與32位元定址方式的指標與基底暫存器
16 位元定址方式 32 位元定址方式
基底暫存器 BX, SP 任何 32 位元通用暫存器
指標暫存器 SI, DI 除了 ESP 外的任何 32 位元通用暫存器 倍率因數 無(皆為 1) 1, 2, 4, 8
位移位址 0, 8, 16 位元 0, 8, 32 位元
微算機原理與應用 第3章 CPU規劃模式
暫存器間接定址
EA
EAX ESP EBX EBP ECX ESI EDX EDI
=
, , , ,
例題 3.3-8 (暫存器間接定址)
假設 EBX = 00002471H , DS = 0120H,則使用暫存器間接定址方式的運算元有效 位址為
EA = 2471H(16 位元) 而實際位址為
PA = DS × 16 + EA(20 位元) = 01200H + 2471H
林銘波編著 --- 全華科技圖書公司
第3章 CPU規劃模式
3.31
暫存器相對定址(基底定址)
例題 3.3-9 (暫存器相對定址)
假設 DS = 5542H , EBX = 0000247H ,位移位址為 22ADH ,則在使用暫存器相 對定址方式下的運算元有效位址為
EA = EBX + 22ADH(16 位元) = 24F4H
而實際位址為
PA = DS × 16 + EA(20 位元) = 55420H + 24F4H = 57914H
EA
EAX ESP EBX EBP ECX ESI EDX EDI
d8
= d32
+
,
, , ,
微算機原理與應用 第3章 CPU規劃模式
倍率指標定址
例題 3.3-10 (倍率指標定址)
假設 DS = 0453H , ESI = 00000521H , SF 為 2 ,則在使用倍率指標定址方式下 的運算元有效位址為
EA = 0521H×2 = 0A42H 而實際位址為
PA = DS × 16 + EA(20 位元) = 04530H + 0A42H = 04F72H
EA
EAX - - - EBX EBP
ECX ESI EDX EDI
1 2 4 8
=
×
,
,
,
,
林銘波編著 --- 全華科技圖書公司
第3章 CPU規劃模式
3.33
倍率指標相對定址
例題 3.3-11 (倍率指標相對定址)
假設 DS = 0453H , ESI = 00000521H , SF 為 2 ,位移位址為 0105H ,則在使用 倍率指標相對定址方式下的運算元有效位址為
EA = 0521H × 2 + 0105H(16 位元) = 0B47H
而實際位址為
PA = DS × 16 + EA(20 位元) = 04530H + 0B47H = 05077H
EA
EAX - - - EBX EBP
ECX ESI EDX EDI
1 2 4 8
d8
= d32
×
+
,
, , ,
微算機原理與應用 第3章 CPU規劃模式
基底指標定址
例題 3.3-12 (基底指標定址)
假設基底暫存器 EBX = 00004321H ,指標暫存器 ECX = 000025A6H , DS = 0521H ,則在使用基底指標定址方式下的運算元有效位址為:
EA = 4321 + 25A6H (16 位元) = 68C7H
而實際位址為
PA = DS × 1 + EA (20 位元) = 05210H + 68C7H
EA
EAX ESP EBX EBP ECX ESI EDX EDI
EAX - - - EBX EBP
ECX ESI EDX EDI
=
+
,
, , ,
, ,
,
,
林銘波編著 --- 全華科技圖書公司
第3章 CPU規劃模式
3.35
基底指標相對定址
例題 3.3-13 (基底指標相對定址)
假設基底暫存器 ECX = 0000278AH ,指標暫存器 ESI = 00004726H , DS = 5541H ,位移位址 = 00002371H ,則在使用基底指標相對定址方式下的運算元有效位 址為
EA = 278AH + 4726H + 2371H (16 位元) = 9221H
而實際位址
PA = DS × 16 + EA(20 位元) = 55410H + 9221H = 5E631H
EA
EAX ESP EBX EBP ECX ESI EDX EDI
EAX - - - EBX EBP
ECX ESI EDX EDI
d8
= d32
+
+
,
, , ,
, ,
, ,
微算機原理與應用 第3章 CPU規劃模式
倍率基底指標定址
例題 3.3-14 (倍率基底指標定址)
假設基底暫存器 EBX = 00004321H ,指標暫存器 ECX = 000025A6H , SF = 4 , DS = 0521H ,則在使用倍率基底指標定址方式下的運算元有效位址為:
EA = 4321 + 25A6H × 4 (16 位元) = D9B9H
而實際位址為
PA = DS × 1 + EA (20 位元) = 05210H + D9B9H = 12BC9H
EA
EAX ESP EBX EBP ECX ESI EDX EDI
EAX - - - EBX EBP
ECX ESI EDX EDI
1 2 4 8
=
+
×
,
, , ,
, ,
,
,
林銘波編著 --- 全華科技圖書公司
第3章 CPU規劃模式
3.37
倍率基底指標相對定址
例題 3.3-15 (倍率基底指標相對定址)
假設基底暫存器 ECX = 0000278AH,指標暫存器 ESI = 00004726H , SF = 2 , DS
= 5541H ,位移位址 = 00002371H ,則在使用倍率基底指標相對定址方式下的運算元 有效位址為
EA = 278AH + 4726H × 2 + 2371H (16 位元) = D947H
而實際位址
PA = DS × 16 + EA(20 位元) = 55410H + D947H = 62D57H
EA
EAX ESP EBX EBP ECX ESI EDX EDI
EAX - - - EBX EBP
ECX ESI EDX EDI
1 2 4 8
d8
= d32
+
×
+
,
, , ,
, ,
, ,
微算機原理與應用 第3章 CPU規劃模式
80x86基本指令格式
指令前標 節區超越
前標 opcode MOD R/M 位移位址 立即資料 位元組數(0或1) (0或1) (1或2) (0或1) (0,1或2) (0,1或2)
(a) 8086/80286
節區超越
前標 opcode MOD R/M 位移位址 立即資料
位元組數
SIB
(0或1) (0或1) (1或2) (0或1) (0或1) (0,1,2,4) (0,1,2,4)
(0或1) (0或1)
位址長度 前標
運算元長 指令前標 度前標
林銘波編著 --- 全華科技圖書公司
第3章 CPU規劃模式
3.39
80386 CPU節區描述子
基底位址
(31:24) G D 0 A V L 基底位址
(15:0)
節區長度 (15:0) 節區長度
(19:16)
基底位址 (23:16) DP L
P S 類型
(TYPE)
31 24 23 22 21 20 19 16 15 14 13 12 11 8 7 0
A
微算機原理與應用 第3章 CPU規劃模式
MOD R/M位元組
通用暫存器 REG w = 0 w = 1
000 AL AX(EAX) 001 CL CX(ECX) 010 DL DX(EDX)
REG 節區暫存器 011 BL BX(EBX)
00 ES 100 AH SP(ESP)
01 CS 101 CH BP(EBP)
10 SS 110 DH SI(ESI)
11 DS 111 BH DI(EDI)
(a) 節區暫存器 (b) 通用暫存器
林銘波編著 --- 全華科技圖書公司
第3章 CPU規劃模式
3.41
16位元MOD R/M位元組定址方式
11 MOD
R/M 00 01 10
w = 0 w = 1 000 BX + SI(DS) BX+SI+d8(DS) BX+SI+d16(DS) AL AX(EAX) 001 BX+DI(DS) BX+DI+d8(DS) BX+DI+d16(DS) CL CX(ECX) 010 BP+SI(SS) BP+SI+d8(SS) BP+SI+d16(SS) DL DX(EDX) 011 BP+DI(SS) BP+DI+d8(SS) BP+DI+d16(SS) BL BX(EBX) 100 SI(DS) SI+d8(DS) SI+d16(DS) AH SP(ESP) 101 DI(DS) DI+d8(DS) DI+d16(DS) CH BP(EBP) 110 addr(DS) BP+d8(DS) BP+d16(DS) DH SI(ESI) 111 BX(DS) BX+d8(DS) BX+d16(DS) BH DI(EDI)
微算機原理與應用 第3章 CPU規劃模式
32位元MOD R/M位元組定址方式
11 MOD
R/M 00 01 10
w = 0 w = 1 000 EAX(DS) EAX+d8(DS) EAX+d32(DS) AL AX(EAX) 001 ECX(DS) ECX+d8(DS) ECX+d32(DS) CL CX(ECX) 010 EDX(DS) EDX+d8(DS) EDX+d32(DS) DL DX(EDX) 011 EBX(DS) EBX+d8(DS) EBX+d32(DS) BL BX(EBX)
100 SIB 定址 SIB 定址 SIB 定址 AH SP(ESP)
101 d32(DS) EBP+d8(SS) EBP+d32(SS) CH BP(EBP) 110 ESI(DS) ESI+d8(DS) ESI+d32(DS) DH SI(ESI) 111 EDI(DS) EDI+d8(DS) EDI+d32(DS) BH DI(EDI)
林銘波編著 --- 全華科技圖書公司
第3章 CPU規劃模式
3.43
SIB位元組定址方式
MOD
base 00 01 10
000 EAX+SF*IR(DS) EAX+SF*IR+d8(DS) EAX+SF*IR+d32(DS) 001 ECX+SF*IR(DS) ECX+SF*IR+d8(DS) ECX+SF*IR+d32(DS) 010 EDX+SF*IR(DS) EDX+SF*IR+d8(DS) EDX+SF*IR+d32(DS) 011 EBX+SF*IR(DS) EBX+SF*IR+d8(DS) EBX+SF*IR+d32(DS) 100 ESP+SF*IR(SS) ESP+SF*IR+d8(SS) ESP+SF*IR+d32(SS) 101 d32+SF*IR(DS) EBP+SF*IR+d8(SS) EBP+SF*IR+d32(SS) 110 ESI+SF*IR(DS) ESI+SF*IR+d8(DS) ESI+SF*IR+d32(DS) 111 EDI+SF*IR(DS) EDI+SF*IR+d8(DS) EDI+SF*IR+d32(DS) 註: 1. MOD 為 MOD R/M 位元組中之 MOD 位元。
2. base 與 index 及 SS 為 SIB 位元組中的位元群。
3. 當 index = 100 時 SS 必須為 00 ,否則有效位址無法確定。
4. SS 與指標暫存器(IR)的編碼方式如下:
SS = 00 01 10 11 index = 000 001 010 011 100 101 110 111 SF = ×1 ×2 ×4 ×8 IR = EAX ECX EDX EBX --- EBP ESI EDI
微算機原理與應用 第3章 CPU規劃模式
80286的位址轉換
選擇子 位移位址
節區描述子暫存器
欲存取 的節區
節區描述子
GDTR或 LDTR
實際位址 運算元 加法器
+
基底位址
GDT或LDT
林銘波編著 --- 全華科技圖書公司
第3章 CPU規劃模式
3.45
80386 CPU的有效位址對實際位址的轉換
運算元 實際記憶器
分頁記憶器 管理單元 節區記憶器
管理單元 指標
基底位址 位移位址
×
+ 1,2,4,8
節區暫存器
線性位址 實際位址
有效位址
描述子指標
32位元 32位元
32位元
有效位址計算單元
微算機原理與應用 第3章 CPU規劃模式
80386 CPU的線性位址對實際位址的轉換
CR0 CR1 CR2
+
+
+
頁區目錄 分頁表 位移位址
31 21 11 0
線性位址
31 0 31 0
31 0
使用者記憶器
運算元
分頁表 10
10
12
雙層次分頁系統
22 12