第2章 微處理器內(nèi)部結(jié)構(gòu)_第1頁
第2章 微處理器內(nèi)部結(jié)構(gòu)_第2頁
第2章 微處理器內(nèi)部結(jié)構(gòu)_第3頁
第2章 微處理器內(nèi)部結(jié)構(gòu)_第4頁
第2章 微處理器內(nèi)部結(jié)構(gòu)_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第2章 Intel 80 x86微處理器的結(jié)構(gòu) 主要內(nèi)容 8086/8088微處理器內(nèi)部結(jié)構(gòu) 80386微處理器的結(jié)構(gòu) Pentium微處理器的結(jié)構(gòu) 2.1 Intel 8086/8088微處理器的結(jié)構(gòu) 一、 8086/8088的功能結(jié)構(gòu) (執(zhí)行單元與總線接口單元) 二、8086/8088的寄存器結(jié)構(gòu) 三、8086/8088的存儲器組織 一、執(zhí)行單元與總線接口單元 (8086 CPU) 注:8086 CPU數(shù)據(jù)總線16位,指令隊(duì)列為6個字節(jié);8088 CPU數(shù)據(jù)總線8位,指令隊(duì)列為4個字節(jié)。 (一)總線接口單元BIU (Bus Interface Unit) 功能:負(fù)責(zé)與 Memory、I/O

2、 端口傳送數(shù)據(jù)。 取指令時,從存儲器指定地址取出指令送入指令隊(duì)列排隊(duì)。 執(zhí)行指令時,根據(jù)EU命令對指定存儲器單元或I/O端口存取數(shù)據(jù)。 組成: 4 個段地址寄存器(CS、DS、ES、SS) 16位指令指針寄存器IP 20位的地址加法器 (16d段地址+偏移地址物理地址) 6字節(jié)(8086)或4字節(jié)(8088)的指令隊(duì)列 總線控制電路: 處理器與外界總線聯(lián)系的轉(zhuǎn)接電路。包括三組總線:20 位地址總 線, 8 位(8086)/16位(8086)雙向數(shù)據(jù)總線,一組控制總線。 (一)總線接口單元BIU (Bus Interface Unit) (cont.) 指令隊(duì)列 8086 的指令隊(duì)列為6個字節(jié),

3、 8088 的指令隊(duì)列為4個字節(jié)。 不論是8086還是8088都會在執(zhí)行指令的同時從內(nèi)存中取下 一條或幾條指令,取來的指令放在指令隊(duì)列中,使 BIU 具 有預(yù)取指令的功能,是一種先進(jìn)先出(FIFO)的數(shù)據(jù)結(jié)構(gòu)。 (二)執(zhí)行單元EU ( Execution Unit ) 功能 執(zhí)行指令,進(jìn)行全部算術(shù)邏輯運(yùn)算、完成偏移地址的計(jì)算 向總線接口單元BIU提供指令執(zhí)行結(jié)果的數(shù)據(jù)和偏移地址,并對通用寄存 器和標(biāo)志寄存器進(jìn)行管理。 組成: 4個通用寄存器:AX、BX、CX、DX 4個專用寄存器:BP、SP、SI、DI 標(biāo)志寄存器(PSW): 9個標(biāo)志位,其中6個條件標(biāo)志位用于存放結(jié)果狀態(tài), 算術(shù)邏輯單元:

4、16 位加法器,用于對寄存器和指令操作數(shù)進(jìn)行算術(shù)或邏輯運(yùn)算, EU 控制系統(tǒng): 接受從總線接口單元的指令隊(duì)列中取來的指令代碼,對其譯碼和向 EU 內(nèi)各有關(guān)部分發(fā)出時序命令信號,協(xié)調(diào)執(zhí)行指令規(guī)定的操作。 (三)流水線工作方式 8086/8088取指部分與執(zhí)行部分是分開的。 在一條指令的執(zhí)行過程中可以取出下一條(或多條)指令,指令 在指 令隊(duì)列中排隊(duì); 在一條指令執(zhí)行完成后,就可以立即執(zhí)行下一條指令,減少CPU為取指令 而等待的時間,提高CPU的利用率和整個運(yùn)行速度。 8086/8088微處理器: BIU和EU分開,取指和執(zhí)行可以重迭, 大大減少了等待取指所需的時間,提高CPU的利用率。 取指取指

5、取指取指取指取指取指取指得到數(shù)據(jù)得到數(shù)據(jù) 等待等待執(zhí)行執(zhí)行執(zhí)行執(zhí)行執(zhí)行執(zhí)行執(zhí)行執(zhí)行 (三)、流水線工作方式(cont.) 對于8080與8085及較早的8位微處理器: 程序執(zhí)行由取指令和執(zhí)行指令的循環(huán)來完成的, 每條指令執(zhí)行完后CPU必須等到下條指令取出來后才能執(zhí)行。 取指取指執(zhí)行執(zhí)行取指取指執(zhí)行執(zhí)行.取指取指執(zhí)行執(zhí)行 時間坐標(biāo)時間坐標(biāo) 二、8086/8088的寄存器結(jié)構(gòu) AHAL BHBL CHCL DHDL SP BP SI DI IP FLAGS CS DS SS ES 通用寄存器組 累加器 基址寄存器 計(jì)數(shù)寄存器 數(shù)據(jù)寄存器 堆棧指針 基址指針 源變址寄存器 目的變址寄存器 指令指針

6、標(biāo)志寄存器 代碼段寄存器 數(shù)據(jù)段寄存器 堆棧段寄存器 附加段寄存器 數(shù)據(jù)寄存器 地址指針、 變址寄存器 控制寄存器 段寄存器 15 8 7 0 AX BX CX DX 二、8086/8088的寄存器結(jié)構(gòu)(cont.) 1、通用寄存器 : 數(shù)據(jù)寄存器、地址指針寄存器、變址寄存器 數(shù)據(jù)寄存器包括: AX 、BX 、CX 、DX 地址指針寄存器包括: SP 、 BP 變址寄存器包括: SI 、 DI 2、段寄存器:CS 、 SS 、 DS 、 ES 3、控制寄存器 :IP 、PSW (一)通用寄存器 (1)數(shù)據(jù)寄存器 AX:(Accumulator)作為累加器。 它是算術(shù)運(yùn)算的主要寄存器,所有I/O

7、指令都使用這一寄 存器與外部設(shè)備交換數(shù)據(jù)。 BX : Base用作基址寄存器使用。 在計(jì)算內(nèi)存儲器地址時,經(jīng)常用來存放基址。 CX : Count可以作計(jì)數(shù)寄存器使用。 在循環(huán)LOOP指令和串處理指令中用作隱含計(jì)數(shù)器。 DX : Data可以作為數(shù)據(jù)寄存器使用。 一般在雙字長乘除法運(yùn)算時,把DX和AX組合在一起存放 一個雙字長(32位)數(shù),DX用來存放高16位; 對某些I/O操作DX可用來存放I/O的端口地址(口地址 256)。 (一)通用寄存器(cont.) (2)地址指針與變址寄存器 SP、BP、SI、DI 四個16位寄存器。以字為單位在運(yùn)算過 程中存放操作數(shù),經(jīng)常用以在段內(nèi)尋址時提供偏移

8、地址。 SP(stack pointer)堆棧指針寄存器 用來指示棧頂?shù)钠频刂? 必須與SS段寄存器聯(lián)合使用確定實(shí)際地址。 BP(base pointer)基址指針寄存器 可以與SS寄存器聯(lián)合使用來確定堆棧段中某一存儲器單元地址。 變址寄存器(SI 、 DI) SISource Index Register 源變址寄存器。 DIDestination Index 目的變址寄存器。 使用場合:常用于變址尋址。 一般與DS聯(lián)用,用來確定數(shù)據(jù)段中某一存儲單元的地址。 串操作中,DS:SI尋址源操作數(shù),ES:DI尋址目的操作數(shù) , SI、DI具 有自動增量和自動減量功能. (二)段寄存器 段寄存器:

9、 4個16位段寄存器CS、DS、SS、ES。 用來識別當(dāng)前可尋址的四個段,不可互換使用。 CSCode Segment Register 代碼段寄存器 用來識別當(dāng)前代碼段(程序一般放在代碼段)。 DSData Segment Register數(shù)據(jù)段寄存器 用來識別當(dāng)前數(shù)據(jù)段。 SSStack Segment Register堆棧段寄存器, 用來識別當(dāng)前堆棧段。 ESExtra Segment Register附加段寄存器, 用來識別當(dāng)前附加段。 (三) 控制寄存器 控制寄存器:IP 、 PSW IPInstruction Pointer指令指針寄存器 用來存儲代碼段中的偏移地址; 程序運(yùn)行過程

10、中IP始終指向下一次要取出的指令偏移地 址。IP要與CS寄存器相配合才能形成真正的物理地址。 PSW(Processor States Word Program) 程序狀態(tài)字寄存器, 16位寄存器。 由狀態(tài)標(biāo)志、控制標(biāo)志構(gòu)成。 只用了其中9位, 6位條狀態(tài)標(biāo)志 , 3位控制標(biāo)志。 狀態(tài)標(biāo)志寄存器(PSW) 標(biāo)志寄存器-狀態(tài)標(biāo)志位 用來記錄程序中運(yùn)行結(jié)果的狀態(tài)信息,作為后續(xù)條件轉(zhuǎn)移指令的轉(zhuǎn)移 控制條件。 狀態(tài)標(biāo)志位(條件碼)包括6位:CF 、 PF 、 AF 、 ZF 、 SF 、 OF 。 OF(Overflow Flag)溢出標(biāo)志(一般指帶符號數(shù)的補(bǔ)碼溢出) OF=1:在帶符號數(shù)運(yùn)算過程中,

11、結(jié)果超過了機(jī)器表示的范圍,稱 為溢出。 OF=0:在帶符號數(shù)運(yùn)算過程中,結(jié)果未超過機(jī)器表示范圍,稱為 無溢出。 字節(jié)允許范圍 -128+127,字運(yùn)算范圍 -32768 +32767 。 SF(Sign Flag)符號標(biāo)志 SF=1:記錄運(yùn)算結(jié)果的符號為負(fù)。 SF=0:記錄運(yùn)算結(jié)果的符號為正。 ZF(Zero Flag)零標(biāo)志 ZF=1:運(yùn)算結(jié)果為0。 ZF=0:運(yùn)算結(jié)果不為0。 標(biāo)志寄存器-狀態(tài)標(biāo)志位 CF(Carry Flag)進(jìn)位標(biāo)志 CF=1:記錄運(yùn)算時從最高有效位產(chǎn)生進(jìn)位或借位。 CF=0:記錄運(yùn)算時從最高有效位不產(chǎn)生進(jìn)位/借位。 AF(Auxiliary Carry Flag)輔助

12、進(jìn)位標(biāo)志 AF=1:記錄運(yùn)算時D3位(半個字節(jié))產(chǎn)生進(jìn)位或借位。 AF=0:記錄運(yùn)算時D3位(半個字節(jié))不產(chǎn)生進(jìn)位或借位。 PF(Parity Flag)奇偶標(biāo)志 PF=1: 結(jié)果操作數(shù)低8位中有偶數(shù)個1。 PF=0: 結(jié)果操作數(shù)低8位中有奇數(shù)個1。 用來為機(jī)器中傳送信息時可能產(chǎn)生的誤碼提供檢驗(yàn)條件。 控制標(biāo)志位 對控制標(biāo)志位進(jìn)行設(shè)置后,對其后的操作起控制作用。 控制標(biāo)志位包括3位: TF、 IF 、 DF 。跟蹤(陷阱)標(biāo)志TF、中斷標(biāo)志IF 、 方向標(biāo)志 DF 。 TF(Trap Flag)跟蹤(陷阱)標(biāo)志位 TF=1 ,每執(zhí)行一條指令后,自動產(chǎn)生一次內(nèi)部中斷,使CPU處于單步執(zhí)行指令工

13、作方式,便于進(jìn)行程序調(diào)試,用戶能檢查程序。 TF=0, CPU正常工作,不產(chǎn)生陷阱。 IF(Interupt Flag)中斷標(biāo)志位 IF=1, 允許外部可屏蔽中斷。CPU可以響應(yīng)可屏蔽中斷請求。 IF=0, 關(guān)閉中斷。CPU禁止響應(yīng)可屏蔽中斷請求。 IF的狀態(tài)對不可屏蔽中斷和內(nèi)部軟中斷沒有影響。 DF(Direction Flag)方向標(biāo)志位 DF=1,每次串處理操作后使變址寄存器SI和DI減量,使串處理從高地址向低地址 方向處理。 DF=0,每次串處理操作后使變址寄存器SI和DI增量, 使串處理從低地址向高地址 方向處理。 DF方向標(biāo)志位是在串處理指令中控制處理信息的方向用的。 例1:執(zhí)行兩

14、個數(shù)的加法,分析對標(biāo)志位的影響。 標(biāo)志標(biāo)志: : 運(yùn)算結(jié)果最高位為運(yùn)算結(jié)果最高位為0 0SF=0SF=0; 運(yùn)算結(jié)果運(yùn)算結(jié)果0 0 ZF=0ZF=0 低低8 8位中位中1 1的個數(shù)為奇數(shù)個的個數(shù)為奇數(shù)個 PF=0PF=0; 最高位沒有進(jìn)位最高位沒有進(jìn)位 CF=0CF=0 D3D3位向位向D4D4位無進(jìn)位位無進(jìn)位 AF=0AF=0; 次高位向最高位沒有進(jìn)位次高位向最高位沒有進(jìn)位 ,最高位向前沒有進(jìn)位,最高位向前沒有進(jìn)位 , , OF=0OF=0。 1 10 00 00 01 11 10 01 10 00 00 01 10 01 10 00 0 0 00 01 11 10 00 01 10 00

15、00 00 01 11 10 00 01 1+ + 0 01 11 11 11 10 01 10 01 10 01 10 01 10 01 10 0 例2:執(zhí)行兩個數(shù)的加法,分析對標(biāo)志位的影響。 標(biāo)志標(biāo)志: : 運(yùn)算結(jié)果最高位為運(yùn)算結(jié)果最高位為1 1, SF=1 SF=1 ; 運(yùn)算結(jié)果本身不為運(yùn)算結(jié)果本身不為0 0, ZF=0 ZF=0 ; 最高位向前無進(jìn)位,最高位向前無進(jìn)位, CF=0 CF=0 次高位向最高位產(chǎn)生進(jìn)位次高位向最高位產(chǎn)生進(jìn)位, ,而最高位向前沒有進(jìn)位,而最高位向前沒有進(jìn)位, OF=1 OF=1 ; 結(jié)果低結(jié)果低8 8位含偶數(shù)個位含偶數(shù)個1 1, PF=1 PF=1 ; D3D

16、3位向位向D4D4位有進(jìn)位位有進(jìn)位, AF=1 , AF=1 。 在絕大多數(shù)情況下,一次運(yùn)算后并不影響所有標(biāo)志,在絕大多數(shù)情況下,一次運(yùn)算后并不影響所有標(biāo)志, 程序也并不需要對所有的標(biāo)志作全面的關(guān)注。程序也并不需要對所有的標(biāo)志作全面的關(guān)注。 一般只是在某些操作后一般只是在某些操作后, ,對其中某個標(biāo)志進(jìn)行檢測。對其中某個標(biāo)志進(jìn)行檢測。 0 01 10 01 10 00 00 00 01 11 11 10 00 01 11 10 0 0 01 10 00 00 01 10 01 10 01 11 10 01 10 01 10 0+ + 1 11 10 00 00 01 10 01 11 10 0

17、0 01 11 10 00 01 1 AF=1AF=1 OF=1OF=1 三、8086/8088的存儲器組織 (一)存儲器結(jié)構(gòu) (二)存儲器的分段結(jié)構(gòu)和物理地址的形成 (三)信息分段存儲與段寄存器 (一)存儲器結(jié)構(gòu)(一)存儲器結(jié)構(gòu) 存儲單元的地址和內(nèi)容存儲單元的地址和內(nèi)容 存儲器位編號:存儲器位編號: 8086/80888086/8088字長字長1616位,由二個字節(jié)組成,位編號如下:位,由二個字節(jié)組成,位編號如下: 高位字節(jié)高位字節(jié) MSBMSB(15158 8位)位)低位字節(jié)低位字節(jié)LSBLSB(7 70 0位)位) 8086/80888086/8088內(nèi)部的內(nèi)部的 ALU ALU 能進(jìn)行

18、能進(jìn)行16 16 位運(yùn)算。位運(yùn)算。 有關(guān)地址寄存器如有關(guān)地址寄存器如 SPSP、IPIP、BPBP、SISI、DI DI 等都是等都是1616位的。位的。 0 01 12 23 34 45 56 67 7 0 01 12 23 34 45 56 67 78 89 9101011111212131314141515 (一)、存儲器結(jié)構(gòu)(一)、存儲器結(jié)構(gòu)(cont.cont.) . 1100 1111B1100 1111B . 物理地址物理地址內(nèi)容內(nèi)容 00000H00000H 00001H00001H 00002H00002H 00006H00006H FFFFFHFFFFFH 存儲單元地址,按

19、字節(jié)編址 存儲單元的的內(nèi)容:一個存儲單元有效的信息。 機(jī)器字長是16位,大部分?jǐn)?shù)據(jù)以字節(jié)為單位表示。 一個字存入存儲器占有相繼的二個單元: 低位字節(jié)存入低地址,高位字節(jié)存入高地址。 字單元的地址采用它的低地址來表示。 例:例:字單元字單元 : :(0004H0004H)=1234H, =1234H, 字節(jié)單元字節(jié)單元 : :(0004H0004H)=34H=34H 同一個地址既可以看作字節(jié)單元地址,又可看作 字單元地址,需要根據(jù)使用情況確定。 字單元地址:可以是偶數(shù)也可以是奇數(shù), 34H34H 12H12H 1EH1EH 2FH2FH 0000H0000H 0001H0001H 0002H00

20、02H 0003H0003H 0004H0004H 0005H0005H 0006H0006H . 1234H1234H 1235H1235H 1236H1236H . (一)存儲器結(jié)構(gòu)(cont.) (二)存儲器的分段結(jié)構(gòu)和物理地址的形成(二)存儲器的分段結(jié)構(gòu)和物理地址的形成 8086/8088有20條地址總線,直接尋址能力為 220=1M字節(jié)。 用16進(jìn)制數(shù)表示1M字節(jié)的地址范圍應(yīng)為0000HFFFFFH。 (1)8086/ 8088內(nèi)部20位物理地址形成 (2)邏輯地址與物理地址 (1)存儲器地址分段 8086/8088地址總線是20位的,CPU中的寄存器是16位的,20位地址無 法用1

21、6位寄存器表示,必須分段。 程序員在編制程序時把存儲器劃分成段。 段內(nèi)地址16位,每個段的大小最大可達(dá)64KB; 實(shí)際可以根據(jù)需要來確定段大小,可以是1,100,1000等在64K范圍 內(nèi)的任意字節(jié)數(shù)。 IBM PC機(jī)對段的起始地址有限制, 即段不能從任意地址開始:必須從任一小段(paragraph)的首地址 開始。 從0地址開始每16字節(jié)為一小段 (2)20位物理地址形成 物理地址: 在1M字節(jié)存儲器里,每個存儲單元都有一個唯一的20位 地址作為該存儲單元的物理地址。 CPU訪問存儲器時,必須先確定所要訪問的存儲單元 的物理地址才能取出(或存入)該單元中的內(nèi)容。 20位物理地址形成:由16位

22、段地址和16位偏移地址組 成。 段地址:只取段起始地址高16位值。 偏移地址:指在段內(nèi)某內(nèi)存單元物理地址相對段起始地址 的偏移值。 邏輯地址與物理地址概念如下頁圖所示。 邏輯地址:由段基址和段內(nèi)偏移地址組成的地址, 段基址和段內(nèi)偏移地址都是16位的無符號二進(jìn)制數(shù),在程 序設(shè)計(jì)時使用。 物理地址:存儲器的絕對地址(20位的實(shí)際地址), 范圍從00000HFFFFFH , 是由CPU訪問存儲器時由地址總 線發(fā)出的地址。 存儲器管理:將程序中邏輯地址轉(zhuǎn)移為物理地址的機(jī)構(gòu)。 物理地址計(jì)算方法: 即把段地址左移4位再加上偏移地址值形成物理地址,寫成: 物理地址= 16d段地址+偏移地址。 每個存儲單元只有唯一的物理地址。 但可由不同的段地址和不同的偏移地址組成。 16位段地址0000 16位偏移地址 15 0 15 0 + 20位物理地址 19 0 16位段地址0000 16位偏移地址 15 0 15 0 20位物理地址 19 0 存儲器典型的分段結(jié)構(gòu) (二)(二)存儲器的分段結(jié)構(gòu)和物理地址的形成(cont.) 邏輯地址來源 操作類型正常使用(隱含) 段基址 可替換 段地址 偏移 地址 物理地址計(jì)算 取指令CS無IP(CS)16d+(IP) 堆棧操作SS無SP(SS) 16d+(SP) BP間址SSCS

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論