实习项目cpu中暂存器的种类
一、實習項目:CPU中暫存器的種類
二、相關知識:
為了提高CPU的執行速度與效率,在CPU內部也有記憶體存在,稱之為暫存器。 (1) PC(程式計數器):存放正要執行的運算碼的位址。
(2) IR(指令暫存器):存放正要執行的運算碼。
(3) F(旗標暫存器):存放ALU運算的狀態。
(4) 一般暫存器:存放ALU運算的中間結果,如AX,BX,CX,DX等。 (5) SP(堆疊指標):為一種後進先出、線性的資料結構,常應用在副程式呼叫及中斷處理。 (6) MAR(記憶體位址暫存器):到主記憶體中存取資料,必頇先將位址存到MAR中。 (7) MBR(記憶體緩衝暫存器):到主記憶體中I/O的資料暫時放到MBR中。 (8) MDR(記憶資料暫存器):儲存機器碼指令的位址。
三、範例:
處理器中之指含暫存器是用來儲存何種資料? (A)位址 (B)指令之運算碼 (C)狀B 1
態旗標 (D)指令之運算元。[技專87]
在8086微處理機器中,若使用AX暫存器時,其AX代表之功用為何? (A)狀態C 2
旗標暫存器 (B)8位元堆疊指標暫存器 (C)16位元累加暫存器 (D)16位元段暫
存器。[技專87]
在CPU中的暫存器,何者之主要功能是儲存機器碼指令的位址, (A)指令暫存C 31
器(IR) (B)程式計數器(PC) (C)記憶資料暫存器(MDR) (D)通用暫存器
(GR)。,學測93,
, 一般暫存器:Register:比較
類別 8086/8088暫存器(16 bit) 80386/80486暫存器(32 bit)
通用暫存器 AX,BX,CX,DX EAX,EBX,ECX,EDX
指標索引暫存器 SP,BP,SI,DI,IP ESP,EBP,ESI,EDI,EIP
區段暫存器 CS,DS,ES,SS CS,DS,ES,SS,FS,GS
旗標暫存器 FLAG EFLAG
, AX?(AH、AL),BX?(BH、BL),…
, E:擴充(Extended ),EAX,EBX,… 將16位元暫存器擴充為32位元暫存器。 一、通用暫存器(General Register):
通用暫存器包括AX,BX,CX,DX等四個16 bit的暫存器,此類暫存器,又可以分為兩個8 bit來使用,如AX可分為兩個8 bit的AH與AL來使用,在資料傳送運算處理上,比較有彈性,所以通用暫存器在使用上較其他暫存器為多。
1. AX暫存器(Accumulater Register):又稱累加器,它除了一般的加減乘除運算、邏輯運算、
字串運算外,外界I/O資料也頇透過它來傳送,所以在運算處理上,大多使用累加器。 2. BX暫存器(Base Register) :又稱基底暫存器,它除了可做資料運算外,也可以當作一個索
引,以加強定址功能,也就是說可以直接當做記憶體位址的運算元使用。 3. CX暫存器(Count Register):又稱為計數暫存器,除了做一般資料運算外,可用來存放迥圈
1
的次數、字串處理重覆次數、以及資料位移或旋轉約次數。
4. DX暫存器(Data Register):又稱為資料暫存器,除了做一般資料運算處理外,在乘除運
算時,有時頇和AX搭配使用,以增加運算能力,其最特殊的功能是在做I/O運算時,
可用來存放I/O埠的位址。
二、指標(Pointer)和索引(Index)暫存器:指標索引暫存器多用來儲存記憶體的位址。
1. SP暫存器(Stack Pointer):又稱堆疊指標暫存器,此指標內乃存放著指向堆疊頂端的最
新資料儲存的位址,在堆疊內資料有進出時,其內容會自動加減,常用指令為PUSH,
POP。
, PUSH:將資料推入堆疊中,資料推入之後SP值會減2。
, POP:將資料從堆疊中取出,資料取出之後SP值會加2。
, 請特別注意:堆疊器運算不會搬走(move)資料也不會清除堆疊器內的資料,CPU做的
只是更新SP(減2或加2)暫存器之內容。
, 資料在記憶體的儲存方式是”低位組儲存在較低的記憶體位址上,高位組儲存在較高
的記憶體位址上”。
例2-1 , 2-2 如右圖,若執行前,
AX=1234H,SS=1050H,SP=08H,
則連續執行下列指令後,AX、
BX、SP、堆疊內容為何,
PUSH AX
POP AX
POP BX
sol:AX = 5678H,BX = BBAAH
SP = 0AH
2. BP暫存器(Base Pointer):又稱基底指標暫存器,可用於存取堆疊段內的資料,也可用
於其它區域資料的間接定址、傳輸及運算。
3. IP暫存器(Instruction Pointer):又稱指令指標暫存器,負責掌管CPU執行程式的
流程
快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计
,
當CPU執行完一個指令後,IP便指向下一個指令的位址,按著CPU便會往IP所
指的位址去讀取所要執行的指令。
4. SI暫存器(Source Index):又稱來源索引暫存器,通常做為資料來源記憶區的索引。
5. DI暫存器(Destination Index):又稱目的索引暫存器,通常做為資料目的記憶區的索引。 範例:
E 35 已知8086CPU的三個暫存器AX、ES、DI的內容個不相同,若將AX、ES、
DI的內容,依次壓入(push)堆疊中(組合語言執行的先後順序為PUSH AX、
PUSH ES、PUSH DI),緊接著再依次讀取(pop)堆疊。則下列何種讀取堆疊的先
後順序,不會改變暫存器AX、ES、DI的內容,(A)POP AX、 POP ES (B)POP
AX (C)POP DI 、POP AX (D)POP ES (E)POP DI、POP ES。[技專85] C 30. 微算機中Intel 8088 CPU指令執行時,試問下列那個指令會把CS暫存器和IP
暫存器的內容放入堆疊中,(A)PUSHF(B)POPF(C)CALL(D)RET。,學測90, C 26. 下列關於堆疊的敘述,何者正確, (A)存取方式為先進先出(FIFO)(B)執行
2
MOV指令時,會使用到堆疊(C)執行CALL指令時,會使用到堆疊(D)執行JUMP
指令時,會使用到堆疊。,學測91,
D 35. Intel 8088CPU在執行下列組合語言程式的機器碼之前,其內部暫存器
AX,BX,CX的內容分別為2036H,7248H,8590H,程式執行後暫存器AX,BX,CX
的內容應為:
PUSH AX
PUSH BX
PUSH CX
POP AX
POP CX
POP BX
(A)AX,2036H,BX,7248H,CX,8590H (B)AX,7248H,BX,2036H,
CX,8590H (C)AX,8590H,BX,7248H,CX,2036H (D)AX,8590H,
BX,2036H,CX,7248H。,學測91,
D 35 執行下列8088組合語言之片段程式後,在四個暫存器A、B、C及D中,那二
個暫存器的內容會對調, (A)A與B (B)C與D (C)D與A (D)B與C。
PUSH A
PUSH C
PUSH D
PUSH B
POP C
POP D
POP B
POP A ,學測93,
三、區段暫存器(Segment Register)
8088之記憶體空間在實際模態時,可擴充到1MB,因其CPU均為16位元暫存器,在定
址時,最多能使用到2的16次方等於64KB。所以用兩個暫存器來配合定址到1M,一個謂
之區段暫存器存放段位址,另一個暫存器是存差距位址,如此:
記憶體實際位址=區段位址 ×16(左移4bit)十差距位址。
1〃CS暫存器(Code Segment):又稱程式段暫存器,存放程式指令的段位址,指令執行之
差距位址放在IP內,所以CS:IP合併使用,指到指令存放在記憶體中之實際位
址。
2〃DS暫存器(Data Segment):又稱資料段暫存器,存放我們設定資料的段位址,資料的
排列是由DS:0000開始依序存放,或配合SI來使用。
3〃ES暫存器(Extra Segment):又稱額外段暫存器,當資料段存放超過64KB,則可使用
來存放資料,在字串運算時,必頇配合DI來使用。
4〃SS暫存器(Stack Segment):又稱堆疊段暫存器,存放堆疊段的段位址,而堆疊段的差
距位址是存放在SP內,所以堆疊段的存取資料之實際位址是SS:SP。
3
5〃FS,GS暫存器::FS:旗標節區,GS:廣域節區:又稱額外段暫存器,功能與ES
相同。
note:
, 1. EA(effective memory address):有效記憶位址,PA(phsical address):實際位址
? PA,CS0,IP,DS0,SI (或XX),ES0,DI,SS0,SP(或BP)
2. CS:IP ,,Code Segment:Instruction Pointer;程式段暫存器:指標暫存器
DS:SI ,,Data Segment:Source Index ;資料段暫存器:來源索引暫存器
ES:DI ,,Extra Segment:Destination Index ;額外段暫存器:目的索引暫存器
SS:SP ,,Stack Segment:Stack Pointer ;堆疊段暫存器:堆疊指標暫存器
範例:
對於8088/8086CPU而言,若IP=O004H,CS=O1OOH,DS=02OOH,則CPU所指到E 13
的指令位址是在記憶體何處?(A)0104H (B)01040H (C)0204H (D)02040H
(E)01004H。[技專86]
對於8086,8088CPU而言,若IP,0004H,CS,0100H,DS,0200H,則CPU所A 28.
指到的指令位址是在記憶體中何處,(A)01004H (B)02004H (C)0104H
(D)0204H。 ,學測88,
Intel 8088CPU內部暫存器BX,CS,DS,SS及ES的內容分別為1002H,3270H,B 36.
2015H, 1280H及1502H,指令MOV[BX], AL會將AL暫存器的內容寫入那一個記
憶體位址, (A)33702H (B)21152H (C)13802H (D)16022H。,學測91,
若要定址到實際位址320C0H,下列選項何者有誤? (A)CS=2B4DH,IP=6BF0H (B) D 27
CS=300AH , IP=2020H (C)CS=3000H,IP=20C0H (D) CS=2ABCH,IP=8500H。,學
測92,
在80x86系統中,記憶體片段如圖,若暫存器D 28
DS=0001H,BX=l000H,則執行完指令MOV AX,
02H[BX]後,AX暫存器的內容為:(A)0120H (B)
0403H (C) 0605H (D) 0807H。,學測92,
在8088CPU的定址中,已知右圖為某片段記憶體內容,B 39
若BP,1000H,SI,0002H,則指令MOV AX,[BP][SI]2
執行後,AX,, (A)0405H (B)0504H (C)0403H
(D)0304H。 ,學測93,
四、旗標暫存器(Flag Register)
在8088內的旗標暫存器是16 bit,但在實際模態下只有9個bit被使用(如下圖),9個旗
標又分兩大部分,一部分是情況旗標(CP,PF,AF,ZF,SF,OF,共6個),另一部分是控
制旗標(TF,IF,DF,共3個)。
4
1〃進位旗標(Carry Flag,CF):在加法或減法運算中,若最高位元產生進位或借位,則
該旗標內容自動設為1。
2〃極位旗標(Parity Flag,PF):在指令運算後的結果值,含"1"的位元個數若為偶數時,
則該旗標內容自動設為1
3〃輔助進位旗標(Auxiliary carry Flag,AF):算術指令運算時,若儲存結果的第3位元產
生進位或借位時,此旗標內容自動設為1。
4〃零旗標(Zero Flag,ZF):當運算的結果為0時,則需旗標內容自動設為1 5〃符號旗標(Sign Flag,SF):在有號數的運算中,當運算結果的最高位元為1時(表示負
數),則該旗標內容自動設為1。
6〃溢位旗標(Overflow Flag,OF):主要是用在有號數的運算中,其溢位旗標發生的狀況
有三種:
(1)如果兩同號數值相加或兩異號數值相減,所得結果超出運算元所能代表的範圍。
(2)做乘除運算時,所得的積或商超過運算元存放範圍。
(3)在移位或旋轉指令時,最高位元值受到更動(0變成1或1變成0)時,以上三種
狀況有任一種發生時,則OF自動設為1
7〃單步旗標(Trap Flag,TF):這是一個控制旗標。如果此旗標被設定為1,程式執行時
將一次執行一個指令,這種作業型態主要用於除錯作業的工作中。 8〃中斷旗標(Interrupt Flag,IF):是一個控制旗標,當此旗標內容被設定為1時,則CPU
可接受外來的中斷,若IF為0時,CPU將無法接受外來中斷。 9〃方向旗標(Direction Flag,DF):是一個控制旗標,在字串運算時,若DF為0時,則
字串運算處理時,CPU會由低位址之字串處理到高位址字串,DF為1則反之。
, 旗標符號表 , 條件 ,
旗標位元名稱 清除 ? 旗標=0 設定 ? 旗標=1
OF (Overflow ,溢位) 否 ? NV 是 ? OV
DF (Direction, 方向) 增加 ? UP 減少 ? DN
IF (Interrupt, 中斷) 禁能 ? DI 致能 ? EI
未顯示符號 TF (單步)
SF (Sign,符號) 正號 ? PL 負號 ? NG
ZF (Zero,零位) 否 ? NZ 是 ? ZR
AF (Auxiliary,輔助進位) 否 ? NA 是 ? AC
PF (Parity,同位元) 奇 ? PO 偶 ? PE
CF (Carry,進位) 否 ? NC 是 ? CY
未定義位元 X
, 顯示字元 ,
5
例、 當執行下列加法運算 1. (10010001)+(00000110),2. (10011001)+(10001110)求22 22
CF、PF、AF、ZF、SF、OF,
sol:1. (10010001)+ (00000110)= (10010111) 22 2
? CF = 0,PF = 0,AF = 0,ZF = 0,SF = 1,OF = 0 。
12. (10011001)+ (10001110)= (00100111) 22 2
? CF = 1,PF = 1,AF = 1,ZF = 0,SF = 0,OF = 1。 範例:
通常設定下列那一個旗標,可使一微處理機在執行完每一指時,自動地產生內A 11
部中斷,使指令一個一個地執行,以便偵錯? (A)TF(Trap)陷阱 (B)ZF(Zero)
零 (C)SF(Sign)符號 (D)OF(Overflow)溢位 (E)CF(Carry)進位。[技專86]
下列組合語言程式以單步方式執行完畢之後,CPU內部ZERO及CARRY旗標各為: C 34.
MOV AX,3056H
MOV BL, 41H
SUB AX,15H
CMP AL,BL
(A)ZERO,0且CARRY,0 (B)ZERO,0且CARRY,1 (C)ZERO,1且CARRY,0
(D)ZERO,1且CARRY,1。,學測91,
執行下列8088組合語言之片段程式後,以下選項何者有誤, ,學測93, C 32
AL,90H
SHL AL,1
MOV BL,AL
SUB AL,AL
(A)AL,00H (B)BL,20H (C)CF(carry-flag),0 (D)ZF(zero-flag),1
CPU內的旗標暫存器中之IF,1時,則表示此CPU將: (A)進入單步執行模式 C 40
(B)退出單步執行模式 (C)可接受外部中斷請求 (D)無法接受外部中斷請
求。,學測93,
四、實習結果與問題討論:
依右圖8088的結構方塊圖回答下列問題:
(1)8088的內部區分為那兩個單元: , 。
(2) BIU的功能是從記憶體中之某一位址讀取指令或資料放
入指令佇列中,包含那些元件: , , , , 。 (3)EU之功能是到指令佇列中去讀取內容,若為指令則解碼並
執行,包含那些元件: , , , , ,
, , , 。
(4) A-BUS是屬於何種匯流排: 。
B-BUS是屬於何種匯流排: 。
C-BUS是屬於何種匯流排: 。 (5)8088之佇列有: Bytes,8086之佇列有: Bytes。
6
(5)有效記憶位址(EA)或實際位址(PA):起始位址,有效位址=段暫存器(左移4Bit),有效位址
1.指令:CS:
2.資料:DS:
3.堆疊:SS: 堆疊頂端
或 SS: 堆疊任意位址
4.計算:DS: 字串來源
或 ES: 字串目的
(6)旗標之判別:
例、1.當執行下列加法運算 1. (10010001)+(00000110),2. (10011001)+(10001110)求CF、22 22
PF、AF、ZF、SF、OF,
sol:1. (10010001)+ (00000110)= 22
? CF = ,PF = ,AF = ,ZF = ,SF = ,OF = 。
2. (10011001)+ (10001110)= 22
? CF = ,PF = ,AF = ,ZF = ,SF = ,OF = 。
7