• 沒有找到結果。

本章目標

N/A
N/A
Protected

Academic year: 2022

Share "本章目標"

Copied!
23
0
0

加載中.... (立即查看全文)

全文

(1)

林銘波編著 --- 全華科技圖書公司

第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位元暫存器

通用暫存器

狀態與指令暫存器

(2)

林銘波編著 --- 全華科技圖書公司

第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)

林銘波編著 --- 全華科技圖書公司

第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 ... ... ... ...

... ... ... ...

(4)

林銘波編著 --- 全華科技圖書公司

第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

(5)

林銘波編著 --- 全華科技圖書公司

第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

(6)

林銘波編著 --- 全華科技圖書公司

第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

(7)

林銘波編著 --- 全華科技圖書公司

第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

(8)

林銘波編著 --- 全華科技圖書公司

第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指定的雙運算元 )指令

(9)

林銘波編著 --- 全華科技圖書公司

第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

=

 

 

 

 

(10)

林銘波編著 --- 全華科技圖書公司

第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)

(11)

林銘波編著 --- 全華科技圖書公司

第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

 

 

 + 

 

 

(12)

林銘波編著 --- 全華科技圖書公司

第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)

(13)

林銘波編著 --- 全華科技圖書公司

第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)

(14)

林銘波編著 --- 全華科技圖書公司

第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. 倍率基底指標相對定址

(15)

林銘波編著 --- 全華科技圖書公司

第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

(16)

林銘波編著 --- 全華科技圖書公司

第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

=

 

 

 

 

×

 

 

 

  ,

,

,

,

(17)

林銘波編著 --- 全華科技圖書公司

第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

=

 

 

 +

 

 

 ,

, , ,

, ,

,

,

(18)

林銘波編著 --- 全華科技圖書公司

第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

=

 

 

 

  +

 

 

 

 

×

 

 

 

  ,

, , ,

, ,

,

,

(19)

林銘波編著 --- 全華科技圖書公司

第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)

位址長度 前標

運算元長 指令前標 度前標

(20)

林銘波編著 --- 全華科技圖書公司

第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) 通用暫存器

(21)

林銘波編著 --- 全華科技圖書公司

第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)

(22)

林銘波編著 --- 全華科技圖書公司

第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

(23)

林銘波編著 --- 全華科技圖書公司

第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

參考文獻

相關文件

[r]

莎劇中「弄人」的打諢(見 附錄二)與《史記》優孟故 事、宋代「二聖鐶故事」中 的優伶相類;但「莎劇」中

填表人 簽章欄 負責人 簽章欄 單位 印信欄..

中國白話文學由新文學運動肇始,作家即努力求新求變。第二次世

January/Kindergarten%20space.html.. More than one way: An approach to teaching that supports playful learning. Project Zero: A Pedagogy of Play working paper .Retrieved

微算機原理與應用 第6

[r]

[r]