微機第2章 IA32結(jié)構(gòu)微處理器及其體系結(jié)構(gòu)_第1頁
微機第2章 IA32結(jié)構(gòu)微處理器及其體系結(jié)構(gòu)_第2頁
微機第2章 IA32結(jié)構(gòu)微處理器及其體系結(jié)構(gòu)_第3頁
微機第2章 IA32結(jié)構(gòu)微處理器及其體系結(jié)構(gòu)_第4頁
微機第2章 IA32結(jié)構(gòu)微處理器及其體系結(jié)構(gòu)_第5頁
已閱讀5頁,還剩210頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

IA-32結(jié)構(gòu)微處理器及其

體系結(jié)構(gòu)

第二章

微處理器的主要性能指標2.1

8086/8088微處理器2.280186,80286,80386,Pentium和PentiumPro,II,III,4微處理器2.3目錄內(nèi)部結(jié)構(gòu)寄存器結(jié)構(gòu)引腳特性,8088與8086的比較時鐘和總線周期工作方式總線操作時序存儲器組織I/O端口組織2.1微處理器的主要性能指標2.1.1字長2.1.2指令數(shù)2.1.3運算速度2.1.4訪存空間2.1.5高速緩存大小2.1.6虛擬存儲空間2.1.7是否構(gòu)成多處理器系統(tǒng)2.1.8工藝形式及其他2023/1/1442.1微處理器的主要性能指標(1)字長決定計算機的運算能力和運算精度(CPU)內(nèi)部數(shù)據(jù)通道和外部數(shù)據(jù)通道指令數(shù)量指令數(shù)量愈多,表示該機的功能愈強IA-32微處理器指令的向上擴展,保持兼容性運算速度衡量的基本指令:寄存器加法指令基本指令執(zhí)行時間的影響因素MIPS(MillionInstructionsPerSecond)單字長定點指令平均執(zhí)行速度訪存空間能訪問的存儲單元數(shù),由地址總線寬度決定2023/1/1452.1微處理器的主要性能指標(2)高速緩存大小虛擬存儲空間是否能構(gòu)成多處理器系統(tǒng)工藝形式及其他IA-32處理器性能對照P35

8086CPU從功能上來說分成兩大部分:總線接口單元BIU(BusInterfaceUnit)和執(zhí)行單元EU(ExecutionUnit)。BIU負責(zé)8086CPU與存儲器之間的信息傳送。取指階段:BIU負責(zé)從內(nèi)存的指定單元取出指令,送至指令流隊列中排隊(8086的指令流隊列是6個字節(jié));執(zhí)行指令時所需的操作數(shù),也由BIU從內(nèi)存的指定區(qū)域取出,傳送給EU部分去執(zhí)行。

EU部分負責(zé)指令的執(zhí)行。主要由數(shù)據(jù)寄存器、指針寄存器與算術(shù)邏輯單元(ALU)組成。取指部分與執(zhí)行指令部分是分開的,二者可以重疊進行

在8086中,由于BIU和EU是分開的,所以,取指和執(zhí)行可以重疊進行。8086指令執(zhí)行順序

2.2.38086微處理器的執(zhí)行環(huán)境

作用:描述處理器如何執(zhí)行指令及如何存儲和操作數(shù)據(jù)。執(zhí)行環(huán)境包括:內(nèi)存(地址空間)、通用數(shù)據(jù)寄存器、段寄存器、標志寄存器(FLAGES)和指令指針寄存器等。2.3.1基本執(zhí)行環(huán)境概要

在8086處理器上執(zhí)行的程序或任務(wù)都需要有一組執(zhí)行指令的資源用于存儲代碼、數(shù)據(jù)和狀態(tài)信息。這些資源構(gòu)成了8086處理器的執(zhí)行環(huán)境。

地址空間:8086處理器上運行的任一任務(wù)或程序能尋址1MB(220)字節(jié)的線性地址空間。

基本程序執(zhí)行寄存器:八個通用寄存器四個段寄存器標志寄存器FLAGSIP(指令指針)寄存器組成了執(zhí)行通用指令的基本執(zhí)行環(huán)境。這些指令執(zhí)行字節(jié)、字整型數(shù)的基本整數(shù)算術(shù)運算,處理程序流程控制,在字節(jié)串上操作并尋址存儲器。

堆棧(stack):為支持過程或子程序調(diào)用并在過程或子程序之間傳遞參數(shù),堆棧和堆棧管理資源包含在基本執(zhí)行環(huán)境中。堆棧定位在內(nèi)存中。

I/O端口:8086結(jié)構(gòu)支持數(shù)據(jù)在處理器和輸入輸出(I/O)端口之間的傳送。8086處理器的基本執(zhí)行環(huán)境如圖所示。2.2.3.2基本的程序執(zhí)行寄存器

處理器為了應(yīng)用程序編程提供了14個基本程序執(zhí)行寄存器。(重點)這些寄存器能分組如下:

通用寄存器:這八個寄存器能用于存放操作數(shù)和指針。

段寄存器:這些寄存器最多能保存四個段選擇子(段基址)。

FLAGS(程序狀態(tài)和控制)寄存器:FLAGS寄存器存放正在執(zhí)行的程序的狀態(tài),并允許有限地(應(yīng)用程序級)控制處理器。

IP(指令指針)寄存器:IP寄存器存放著下一條要執(zhí)行的指令的偏移地址。

1.通用寄存器八個32位通用寄存器AX、BX、CX、DX、SI、DI、BP和SP用于處理以下項: 邏輯和算術(shù)操作的操作數(shù); 用于地址計算的操作數(shù); 內(nèi)存指針。注意:SP寄存器保存堆棧指針,通常不要用于其它目的。數(shù)據(jù)寄存器:AX、BX、CX、DX,用以存放操作數(shù)。可分別作為AH、BH、CH和DH(高字節(jié))以及AL、BL、CL和DL(低字節(jié))8位寄存器引用。指針寄存器:SI、DI、BP、SP,可以存放操作數(shù),但主要用作地址指針。SP:堆棧指針,與段寄存器SS配合確定堆棧在內(nèi)存中的位置。BP(BasePointerRegister):尋址堆棧操作數(shù)時,也是尋址堆棧段。SI(SourceIndexRegister)和DI(DestinationIndexRegister)常用于串操作。

2.段寄存器段寄存器(CS、DS、SS、ES)保存16位段選擇子(段基址)。一個段選擇子是標志內(nèi)存中一個段的特殊指針。代碼段寄存器CS:用于存放正在執(zhí)行或正待處理的程序段的起始地址的高16位(程序段段基址)。CS和IP組成下一條要執(zhí)行指令的邏輯地址。數(shù)據(jù)段寄存器DS:

用于存放正在處理或正待處理的數(shù)據(jù)段的起始地址的高16位(數(shù)據(jù)段段基址)堆棧段寄存器SS:用于存放正在處理或正待處理的堆棧段的起始地址的高16位(堆棧段段基址)附加段段寄存器ES:用于存放正在處理或正待處理的附加數(shù)據(jù)段的起始地址的高16位(附加數(shù)據(jù)段段基址)

當(dāng)使用分段存儲模式時,初始,每一個段寄存器用不同的段選擇子加載,所以每個段寄存器指向線性地址空間中的不同的段。如圖2-6所示。任何時候,一個程序能訪問多至線性地址空間中的四個段。要訪問沒有被段寄存器指向的段,程序必須首先把要訪問的段的段選擇子加載至一個段寄存器。

每個段寄存器與三種存儲類型之一相關(guān):代碼、數(shù)據(jù)或堆棧。CS寄存器不能由應(yīng)用程序直接加載,而是由改變程序控制的指令或內(nèi)部處理器指令(例如,過程調(diào)用、中斷處理)隱含加載。DS和ES寄存器需要用指令加載。SS寄存器需要用指令加載。3.FLAGS寄存器16位FLAGS寄存器包含一組狀態(tài)標志、一組控制標志。下圖定義此寄存器中的標志。

(1)狀態(tài)標志FLAGS寄存器的狀態(tài)標志(位0、2、4、6、7和11)CF、AF、PF、ZF、SF、OF。指示算術(shù)指令,例如ADD、SUB、MUL和DIV指令執(zhí)行結(jié)果的一些特征。狀態(tài)標志的功能如下:①進位標志CF(CarryFlag)當(dāng)結(jié)果的最高位(字節(jié)操作時的D7或字操作時的Dl5、雙字操作的D31)產(chǎn)生一個進位或借位,則CF=1,否則為0。用于多字節(jié)數(shù)的加、減法運算。移位和循環(huán)指令也能夠把存儲器或寄存器中的最高位(左移時)或最低位(右移時)放入標志CF中。

①若算術(shù)操作的結(jié)果作為無符號整數(shù)對待,CF標志指示超出范圍(進位或借位);執(zhí)行多精度整數(shù)算術(shù)運算時,CF用于與帶進位加(ADC)和帶借位減(SBB)指令一起產(chǎn)生適當(dāng)?shù)倪M位或借位。②輔助進位標志AF(AuxitiaryCarryFlag)字節(jié)操作時,低半字節(jié)(一個字節(jié)的D3)向高半字節(jié)有進位或借位,則AF=1,否則為0。標志用于十進制算術(shù)運算指令中。③溢出標志OF(OverflowFlag)在算術(shù)運算中,帶符號數(shù)的運算結(jié)果超出了8位、16位帶符號數(shù)能表達的范圍。字節(jié)運算,>+127或<-128,在字運算時>+32767或<-32768超出范圍此標志置位(OF=1),否則復(fù)位(OF=0)。主要用于帶符號數(shù)的運算。溢出的判斷方法:

正數(shù)和正數(shù)相加得負負數(shù)和負數(shù)相加的正正數(shù)和負數(shù)相減得負負數(shù)和正數(shù)相減得正則OF=1,否則OF=0④符號標志SF(SignFlag)指令執(zhí)行的結(jié)果的最高位(字操作時為D15)為1,則SF=1;否則,SF=0。在IA-32結(jié)構(gòu)微處理器中,符號數(shù)是用補碼表示的,所以S表示結(jié)果的符號,SF=0為正,SF=1為負。

⑤奇偶校驗標志PF(ParityFlag)若操作結(jié)果中“1”的個數(shù)為偶數(shù),則PF=1,否則PF=0。用于檢查在數(shù)據(jù)傳送過程中是否發(fā)生錯誤。⑥零標志ZF(ZeroFiag)若運算的結(jié)果為0,則ZF=1,否則ZF=0.注意:1、在這些狀態(tài)標志中,只有進位標志CF能用指令直接進行修改,STC(設(shè)置進位位)、CLC(清除進位位)和CMC(進位位取反)。也可以用位操作指令(BT、BTS、BTR和BTC)拷貝規(guī)定位至CF標志。

2、不同標志反應(yīng)不同類型操作數(shù)的結(jié)果狀態(tài)

CF反映無符號數(shù)是否超出范圍。當(dāng)執(zhí)行多精度整數(shù)算術(shù)運算時,CF用于與帶進位加(ADC)和帶借位減(SBB)指令一起產(chǎn)生適當(dāng)?shù)倪M位或借位。OF反映有符號數(shù)是否超出范圍。AF反映BCD數(shù)是否有進位、借位。SF反映符號整數(shù)的符號。ZF標志反映符號整數(shù)或無符號整數(shù)是否為0。

(2)控制標志FLAGS寄存器的控制標志(位8、9、10)指示程序和機器運行的狀況??刂茦酥镜墓δ苋缦拢孩俜较驑酥綝(DirectionFlag)指示串操作時源串的源變址和目的串的目的變址的變化方向。DF=1,源變址和目的變址減量(減1)。DF=0,源變址和目的變址增量(加1),用于串操作。②中斷允許標志IF(Interrupt-enableFlag)用于控制CPU能否相應(yīng)可屏蔽中斷請求。若置IF=1,則允許CPU去接收外部的可屏蔽的中斷請求;(STI)若使IF=0,則屏蔽上述的中斷請求;對內(nèi)部產(chǎn)生的中斷不起作用。(CLI)

③追蹤標志TF(TraceFlag)/單步中斷標志置TF=1,程序執(zhí)行當(dāng)前指令后暫停。置TF=0,程序執(zhí)行當(dāng)前指令后不暫停。用于調(diào)試程序,每執(zhí)行完一條指令都可以停下來檢查執(zhí)行結(jié)果的狀態(tài)。 4.指令指針指令指針(IP)寄存器包含下一條要執(zhí)行的指令在當(dāng)前段中的偏移。CS和IP一起形成下一條要執(zhí)行指令的20位物理地址。通常,它是順序增加的(IP自動加1);但在執(zhí)行JMP、Jcc、CALL、RET和IRET等指令時,它可以向前或向后移動若干條指令。

IP寄存器不能直接由軟件訪問,它由控制傳送指令(例如,JMP、Jcc、CALL和RET)、中斷和異常隱含控制。讀IP寄存器的唯一方法是執(zhí)行一條CALL指令,然后從堆棧中讀指令指針的返回值。IP寄存器能由修改過程堆棧上指令指針的返回值并執(zhí)行返回指令(RET或IRET)來間接修改。2.3.3存儲器組織處理器在它的總線上尋址的存儲器稱為物理存儲器。物理存儲器按字節(jié)序列組織。每個字節(jié)賦予一個唯一的地址,稱為物理地址。物理地址空間的范圍從0~220–1(1MB)的最大值。事實上與8086處理器一起工作的任何操作系統(tǒng)和執(zhí)行程序都使用處理器的存儲管理設(shè)施訪問存儲器。(分段特性)

8086的尋址范圍:8086有20條地址線,它的直接尋址能力為220=1M字節(jié)。地址從00000H到FFFFFH。分段管理:1M的內(nèi)存分成若干段,每段最大64KB。段起始地址一般要求低4位為0,高16位成為段基址(段地址),段基址存放在段寄存器中。偏移地址(有效地址)指每一段內(nèi)某個內(nèi)存單元的物理地址相對于段起始地址的位移量。(16位)邏輯地址:一般將段基址和段內(nèi)偏移地址稱作偏移地址。根據(jù)邏輯地址可以確定物理地址。20位物理地址形成:對于8086來說,ALU、尋址用寄存器都是十六位,尋找操作數(shù)的范圍最多只能是64K字節(jié)。把整個1M字節(jié)存儲器以64K為范圍分為若干段。在形成20位物理地址時,段寄存器中的16位數(shù)自動左移4位,然后與16位偏移量相加,形成20位的物理地址。

取指令的時候,則自動選擇代碼段寄存器CS,再加上由IP所決定的16位偏移量,計算得到要取的指令的物理地址。堆棧操作時,則自動選擇堆棧段寄存器SS,再加上由SP所決定的16位偏移量,計算得到堆棧操作所需要的20位物理地址。

每當(dāng)涉及到一個操作數(shù),則自動選擇數(shù)據(jù)段寄存器DS或附加段寄存器ES,再加上16位偏移量,計算得到操作數(shù)的20位物理地址。而16位偏移量,可以是包含在指令中的直接地址,也可以是某一個16位地址寄存器的值,也可以是指令中的位移量加上16位地址寄存器中的值等等,這取決于指令的尋址方式。

在不改變段寄存器值的情況下,尋址的最大范圍是64KB。若有一個任務(wù),它的程序長度、堆棧長度以及數(shù)據(jù)區(qū)長度都不超過64KB,則可在程序開始時,分別給DS、SS、ES置值,然后在程序中就可以不再考慮這些段寄存器,程序就可以在各自的區(qū)域中正常地進行工作。若某一個任務(wù)所需的總的存儲器長度(包括程序長度、堆棧長度和數(shù)據(jù)長度等)不超過64KB,則可在程序開始時使CS、SS、DS相等,程序也能正常地工作。2023/1/14322.2

8086微處理器2.2.1內(nèi)部結(jié)構(gòu)2.2.2寄存器結(jié)構(gòu)2.2.3引腳特性2.2.4

8088與8086的比較2.2.5時鐘和總線周期2.2.6工作方式2.2.7總線操作時序2.2.8存儲器組織2.2.9

I/O端口組織2023/1/14332.2.1

8086內(nèi)部結(jié)構(gòu)運算器通用寄存器組控制單元內(nèi)存儲器或I/O接口16位算術(shù)邏輯單元ALU;1、算術(shù)/邏輯運算

2、計算偏移地址EA16位狀態(tài)標志寄存器FLAG;16位數(shù)據(jù)暫存器;8個16位通用寄存器組接收指令,完成指令譯碼,形成相應(yīng)控制信號,以完成指令操作EU功能從BIU指令隊列中讀取指令;由EU控制電路對指令進行譯碼分析,指出操作性質(zhì)及對象;在EU中計算出操作數(shù)的16位地址偏移量送給BIU,由BIU的∑形成20位絕對地址;將取來的操作數(shù)經(jīng)系統(tǒng)數(shù)據(jù)總線送ALU進行指定操作;運算結(jié)果經(jīng)內(nèi)部總線送到指定位置;EU2023/1/14342.2.1

8086內(nèi)部結(jié)構(gòu)運算器通用寄存器組控制單元指令隊列地址加法器專用寄存器組控制器分時共用總線內(nèi)存儲器或I/O接口6個字節(jié)指令隊列ISQISQ中有指令時,EU開始執(zhí)行;ISQ有兩個空字節(jié)時,條件允許則BIU自動取指;當(dāng)EU在執(zhí)行指令過程中,需要對存儲器或I/O接口進行存取,則BIU將在執(zhí)行完取指的總線周期后的下一個總線周期,進行存取操作;當(dāng)EU執(zhí)行轉(zhuǎn)移、調(diào)用和返回指令完畢,將清除ISQ,并要求BIU重新開始取指令;16位指令偏移地址寄存器IP,程序不能直接進行存取,但可以修改程序運行中自動修改;轉(zhuǎn)移、調(diào)用、中斷和返回指令能改變IP值,并將原IP值入棧,或由堆?;謴?fù)原值;4個16位段寄存器CS,DS,SS,ES;與EU通訊的內(nèi)部寄存器;功能:實現(xiàn)CPU與存儲器或I/O口之間的數(shù)據(jù)傳送。取指:指令隊列中出現(xiàn)兩個字節(jié)為空時(BIU未進入存取操作數(shù)的總線周期),自動按CS值和IP值組成20位實際地址到存儲器中去取指令,一次取兩個字節(jié)指令存放到指令隊列中;執(zhí)行轉(zhuǎn)移指令時ISQ復(fù)位,從新地址重新取指。取操作數(shù):由EU從指令隊列中取指令,并根據(jù)EU請求BIU將20位操作地址傳送給存儲器;取來操作數(shù)經(jīng)總線控制邏輯傳送到內(nèi)部EU數(shù)據(jù)總線,由EU完成內(nèi)部操作;保存結(jié)果:操作結(jié)果若EU提出請求,則由BIU負責(zé)產(chǎn)生20位實際目標地址,將結(jié)果寫入存儲器里;BIU形成20位物理地址的加法器∑物理地址PA=(段首地址*16(相當(dāng)于左移4位))+偏移地址左移4位,如0FEF3H左移4位變?yōu)?FEF30H隊列總線為8位2023/1/1435執(zhí)行部件EU組成運算器16位算術(shù)邏輯單元ALU;算術(shù)/邏輯運算計算偏移地址EA16位狀態(tài)標志寄存器FLAG;16位數(shù)據(jù)暫存器;8個16位通用寄存器組(AX,BX,CX,DX,SP,BP,SI,DI)EU控制電路完成指令譯碼,形成相應(yīng)控制信號,以完成指令操作功能從BIU指令隊列中讀取指令;由EU控制電路對指令進行譯碼分析,指出操作性質(zhì)及對象;在EU中計算出操作數(shù)的16位地址偏移量送給BIU,由BIU的∑形成20位絕對地址;將取來的操作數(shù)經(jīng)系統(tǒng)數(shù)據(jù)總線送ALU進行指定操作;運算結(jié)果經(jīng)內(nèi)部總線送到指定位置;2023/1/1436總線接口單元BIU部件6個字節(jié)指令隊列ISQ;ISQ中有指令時,EU開始執(zhí)行;ISQ有兩個空字節(jié)時,BIU自動取指;當(dāng)EU在執(zhí)行指令過程中,需要對存儲器或I/O接口進行存取,則BIU將在執(zhí)行完取指的總線周期后的下一個總線周期,進行存取操作;當(dāng)EU執(zhí)行轉(zhuǎn)移、調(diào)用和返回指令完畢,將清除ISQ,并要求BIU重新開始取指令;16位指令偏移地址寄存器IP,程序不能直接進行存取,但可以修改程序運行中自動修改;轉(zhuǎn)移、調(diào)用、中斷和返回指令能改變IP值,并將原IP值入棧,或由堆棧恢復(fù)原值;4個16位段寄存器CS,DS,SS,ES;形成20位物理地址的加法器∑物理地址PA=(段首地址*16(相當(dāng)于左移4位))+偏移地址左移4位,如0FEF3H左移4位變?yōu)?FEF30H與EU通訊的內(nèi)部寄存器;總線控制邏輯分時共用總線2023/1/1437總線接口單元BIU功能:實現(xiàn)CPU與存儲器或I/O口之間的數(shù)據(jù)傳送。取指:指令隊列中出現(xiàn)兩個字節(jié)為空時(BIU未進入存取操作數(shù)的總線周期),自動按CS值和IP值組成20位實際地址到存儲器中去取指令,一次取兩個字節(jié)指令存放到指令隊列中;執(zhí)行轉(zhuǎn)移指令時ISQ復(fù)位,從新地址重新取指。取操作數(shù):由EU從指令隊列中取指令,并根據(jù)EU請求BIU將20位操作地址傳送給存儲器;取來操作數(shù)經(jīng)總線控制邏輯傳送到內(nèi)部EU數(shù)據(jù)總線,由EU完成內(nèi)部操作;保存結(jié)果:操作結(jié)果若EU提出請求,則由BIU負責(zé)產(chǎn)生20位實際目標地址,將結(jié)果寫入存儲器里;2023/1/1438并行工作方式在16位微處理器中,8086微處理器首先采用了預(yù)取指令技術(shù),提前把指令從存儲器中取到微處理器中,每次執(zhí)行指令的時候直接在微處理器內(nèi)部就可以獲得指令,從而大大提高微處理器的性能。預(yù)取指令技術(shù)是通過設(shè)置預(yù)取指令緩沖隊列來實現(xiàn)的。8086CPU工作順序是:取指令,執(zhí)行指令同時進行。并行工作。2023/1/14392.2.2

8086寄存器結(jié)構(gòu)在8086/8088CPU中,有14個16位寄存器,可把寄存器分成以下幾類:通用寄存器組數(shù)據(jù)寄存器;指針和變址寄存器;控制寄存器:存放程序地址和其他控制信息段基址寄存器:存放各段的信息;2023/1/14402.2.2

8086寄存器結(jié)構(gòu)用來存放操作數(shù)及中間結(jié)果的通用寄存器稱為數(shù)據(jù)寄存器共4個16位寄存器(AX、BX、CX、DX),可分為獨立尋址的8個8位寄存器(AL、AH;BL、BH;CL、CH;DL、DH)有些存儲器有特殊功能:AX和AL為累加器;BX作為基址寄存器,在XLAT指令中存放表首地址;CX為計數(shù)寄存器,控制循環(huán)DX為數(shù)據(jù)寄存器,用在DIV等指令中寄存器用途AX字乘法,字除法,字I/OAL字節(jié)乘,字節(jié)除,字節(jié)I/O,十進制算術(shù)運算AH字節(jié)乘,字節(jié)除BX轉(zhuǎn)移CX串操作,循環(huán)次數(shù)CL變量移位,循環(huán)控制DX字節(jié)乘,字節(jié)除,間接I/O數(shù)據(jù)寄存器2023/1/14412.2.2

8086寄存器結(jié)構(gòu)指針和變址寄存器用于存放地址的偏移量,與段寄存器中的內(nèi)容由地址產(chǎn)生器中生成20位的物理地址指針寄存器系統(tǒng)中有兩個16位的指針寄存器SP和BP,指示當(dāng)前堆棧段中數(shù)據(jù)的偏移地址SP是堆棧指針寄存器,指PUSH、POP指令操作時棧頂?shù)钠频刂?。由它和堆棧段寄存器SS一起來確定堆棧在內(nèi)存中的位置;BP是基數(shù)指針寄存器,指堆棧段中一個數(shù)據(jù)區(qū)基址的偏移地址。變址寄存器系統(tǒng)中有兩個16位的變址寄存器SI和DI,存放當(dāng)前數(shù)據(jù)段中數(shù)據(jù)的偏移地址。其中SI是源變址寄存器,DI是目的變址寄存器,都用于指令的變址尋址方式。除SP外,也可像數(shù)據(jù)寄存器一樣存放16位的數(shù)據(jù)。指針和變址寄存器2023/1/1442CSDSSSES代碼段寄存器數(shù)據(jù)段寄存器附加段寄存器堆棧段寄存器

段寄存器對內(nèi)存進行操作時,內(nèi)存一般可分成4個邏輯段:

代碼段、數(shù)據(jù)段、堆棧段、附加數(shù)據(jù)段

每個段存放不同性質(zhì)的數(shù)據(jù),進行不同的操作。主要用來存放4個邏輯段的段基址。代碼段數(shù)據(jù)段堆棧段附加段CSDSESSS2.2.2

8086寄存器結(jié)構(gòu)段寄存器2023/1/1443CSDSSSES代碼段寄存器數(shù)據(jù)段寄存器附加段寄存器堆棧段寄存器

段寄存器主要用來存放4個邏輯段的段基址。代碼段數(shù)據(jù)段堆棧段附加段CSDSESSS2.2.2

8086寄存器結(jié)構(gòu)段寄存器代碼段:存放程序指令。數(shù)據(jù)段:用于存放當(dāng)前運行程序所使用的數(shù)據(jù)。堆棧段:用來存放專用數(shù)據(jù)。對該區(qū)域的數(shù)據(jù)的存取遵循“先進后出”規(guī)則。附加數(shù)據(jù)段:需要第二個數(shù)據(jù)段時可以使用附加數(shù)據(jù)段。2023/1/144401500H20000H42000H51000H0150H5100H4200H2000HCSDSSSES代碼段數(shù)據(jù)段堆棧段附加段00000H0FFFFFH段基址51000H每個段的起始地址可用段寄存器來指明,程序可從4個段寄存器指明的邏輯段中存取指令和數(shù)據(jù)。2.2.2

8086寄存器結(jié)構(gòu)段寄存器2023/1/1445為了方便編寫程序,4個段寄存器是隱含使用的,但也允許段超越。2.2.2

8086寄存器結(jié)構(gòu)段寄存器2023/1/14461.標志寄存器FLAGS15

14

131211OF10DF9IF8TF7SF6ZF54AF32PF10CF9個標志位,存放CPU的兩類標志:

狀態(tài)標志(6個),在每次運算后產(chǎn)生,用來表示運算結(jié)果的特征,包括CF、PF、AF、ZF、SF和OF;

控制標志(3個),由指令設(shè)置,用來控制CPU的操作,包括IF、DF和TF。2.2.2

8086寄存器結(jié)構(gòu)控制寄存器2023/1/14471.標志寄存器FLAGS(狀態(tài)標志位)OF(OverflowFlag):溢出標志

OF=1:兩個有符號數(shù)的運算結(jié)果超出范圍,結(jié)果錯誤。

OF=0:沒有溢出,結(jié)果正確。

OF=CS⊕CP(⊕表示異或運算)

進行無符號數(shù)運算時也會產(chǎn)生新的OF標志,此時無意義。CF(CarryOutFlag):進位/借位標志

CF=1:兩個無符號數(shù)的加法運算有“進位”,或者是減法運算

有“借位”,需要對它們的“高位”進行補充處理。

CF=0:沒有產(chǎn)生進位或借位。進行有符號數(shù)運算時也會產(chǎn)生新的CF標志,此時無意義。15

14

131211OF10DF9IF8TF7SF6ZF54AF32PF10CF2.2.2

8086寄存器結(jié)構(gòu)控制寄存器2023/1/14481.標志寄存器FLAGS(狀態(tài)標志位)15

14

131211OF10DF9IF8TF7SF6ZF54AF32PF10CF2.2.2

8086寄存器結(jié)構(gòu)控制寄存器

SF(SignFlag):符號標志,

SF=1,表示運算結(jié)果的最高位為“1”。

對于有符號數(shù)運算

OF=0時,結(jié)果正確:

SF=1表示運算結(jié)果為負

SF=0表示運算結(jié)果非負(正或零)

OF=1時,結(jié)果是錯誤的,符號位和正確值相反例如,兩個負數(shù)相加產(chǎn)生溢出,此時SF=0。對于無符號數(shù)運算,SF無意義(但是可以看出結(jié)果的大小規(guī)模)2023/1/14491.標志寄存器FLAGS(狀態(tài)標志位)15

14

131211OF10DF9IF8TF7SF6ZF54AF32PF10CF2.2.2

8086寄存器結(jié)構(gòu)控制寄存器PF(ParityFlag):奇偶標志,可以用來進行“奇偶校驗”

PF=1

運算結(jié)果的低8位中有偶數(shù)個“1”(Even)

PF=0

運算結(jié)果的低8位中有奇數(shù)個“1”(Odd)ZF(ZeroFlag):零標志ZF=1

運算結(jié)果為零,減法運算后結(jié)果為零意味著兩個參加

運算的數(shù)大小相等。ZF=0

運算結(jié)果非零。

AF:輔助進位標志,兩個BCD數(shù)運算時b3位上的進位,供運算

后“調(diào)整”結(jié)果用,對其他數(shù)的運算沒有意義。2023/1/1450上述運算后:

CF= AF= PF= SF= OF= ZF=(1)(AL)+(

AH)運算結(jié)果對狀態(tài)標志位的影響2.2.2

8086寄存器結(jié)構(gòu)控制寄存器0(無進位);1(有輔助進位);1(運算結(jié)果有4個1);1(運算結(jié)果符號位為1);1(有溢出);0(運算結(jié)果不為0)。2023/1/1451上述運算后:

CF= AF= PF= SF= OF= ZF=運算結(jié)果對狀態(tài)標志位的影響(1)(AL)-(

AH)2.2.2

8086寄存器結(jié)構(gòu)控制寄存器1(有借位);1(有輔助借位);1(運算結(jié)果中有6個1);1(符號位為1);0(無溢出);0(運算結(jié)果不為0)。52有符號計算(補碼)及標志位的動作例1:[-66-92]補=[-66]補+[-92]補=10111110B+10100100B則:CF=1,AF=1,SF=0,PF=0,ZF=0,OF=1說明:OF=1表示溢出,-66-92=-158<-128例2:[20-30]補=[20]補+[-30]補

=00010100B+11100010B=11110110B=[-10]補則:CF=0,PF=1,AF=0,ZF=0,SF=1,OF=0

10111110+101001001,0110,0010p12023/1/14531.標志寄存器FLAGS(控制標志位)15

14

131211OF10DF9IF8TF7SF6ZF54AF32PF10CF2.2.2

8086寄存器結(jié)構(gòu)控制寄存器DF(DirectionFlag):方向標志

DF=0執(zhí)行字符串指令后,用加法修改源或目的地址指針

DF=1用減法來修改地址指針

IF(InterruptEnableFlag):中斷允許標志

IF=1允許處理器響應(yīng)“可屏蔽中斷請求”信號,稱為“開中斷”

IF=0不允許處理器響應(yīng)“可屏蔽中斷請求”信號,稱為“關(guān)中斷”。

TF(TraceFlag):單步(跟蹤)標志

TF=1時,每執(zhí)行完一條指令都會產(chǎn)生一次“1號”中斷,該程序被暫停執(zhí)行。它用于程序的調(diào)試2023/1/14541.標志寄存器FLAGS內(nèi)容的說明:在DEBUG環(huán)境中用一些符號表示其中標志位的內(nèi)容: 標志名取邏輯真取邏輯假

OF OV NV DF DN UP IF EI DI SF NG PL ZF ZR NZ AF AC NA PF PE PO CF CY NC*DEBUG中不提供TF標志的說明。2.2.2

8086寄存器結(jié)構(gòu)控制寄存器2023/1/14552.指令指針寄存器IP

存放即將執(zhí)行的指令的偏移地址,與CS共同確定即將執(zhí)行的指令的物理地址。程序運行過程中,BIU自動修改IP中的內(nèi)容,使它始終指向?qū)⒁獔?zhí)行的下一條指令。轉(zhuǎn)移、調(diào)用、中斷和返回指令能改變IP值,并將原IP值入棧,或由堆?;謴?fù)原值;程序不能直接訪問IP。4A00H:1020H……4A00H:1022HMOVAX,1020H4A00H:1025HADDAX,Y執(zhí)行“MOVAX,1020H”時,IP=1025H

當(dāng)前正在執(zhí)行的指令2.2.2

8086寄存器結(jié)構(gòu)控制寄存器2023/1/14562.2.3 8086外部引腳8086/8088微處理器8086/8088微處理器是Intel公司推出的第三代CPU芯片,它們的內(nèi)部結(jié)構(gòu)基本相同,都采用16位結(jié)構(gòu)進行操作及存儲器尋址,但外部性能有所差異,兩種處理器都封裝在相同的40腳雙列直插組件中。2023/1/14572.2.3 8086外部引腳8086微處理器是40pin雙列直插式封裝;20根地址線/16根數(shù)據(jù)線分時復(fù)用:通過鎖存器和緩沖器(三態(tài)門)把微處理器的復(fù)用引腳分別連在系統(tǒng)的地址總線和數(shù)據(jù)總線上。一般的使用方法是:首先在復(fù)用引腳上傳送地址信號并保存在鎖存器中;然后再復(fù)用引腳傳送數(shù)據(jù)信號,并用緩沖器增強帶載能力。引腳的功能2023/1/14582.2.3 8086外部引腳8086微處理器設(shè)計了兩種工作方式,可以通過MN/MX引腳選擇是處于單一處理器的小工作模式(MN)還是處于多處理器的大工作模式(MX)。同樣是40根引腳,但是在不同工作模式時,部分引腳的定義又有所不同。引腳的功能2023/1/14592.2.3 8086外部引腳電源、地、時鐘信號40

Vcc+5V1和20 GND19 CLK 5MHz,占空比1/3,即高電平占1/3周期引腳的功能2023/1/14602.2.3 8086外部引腳引腳的功能(二)處理器控制信號17NMI:輸入,上升沿有效,不可屏蔽中斷請求引腳18INTR:輸入,高電平有效,可屏蔽中斷請求引腳每個指令周期最后一個狀態(tài)檢測該引腳;INTR&IF=1時相應(yīng)中斷申請21RESET:輸入,4個時鐘周期高電平有效,復(fù)位信號。使微處理器停止現(xiàn)行操作,并進行初始化:CS置為0FFFFH,其余寄存器清零、指令隊列清空。22READY:輸入,高電平有效,準備就緒引腳。當(dāng)進行總線操作時,該引腳有效才可以完成數(shù)據(jù)傳送操作,否則會一直等待該引腳為有效狀態(tài)。2023/1/14612.2.3 8086外部引腳引腳的功能(二)處理器控制信號23TEST

:輸入,低電平有效,測試引腳。當(dāng)它有效時,可以使微處理器退出WAIT指令的執(zhí)行。(中斷可以退出WAIT)32

RD:輸出,三態(tài),低電平有效,讀控制引腳,DMA時浮空33MN/MX:工作方式選擇引腳。接高電平表示工作在小模式,低電平表示工作在大模式。34BHE/S7

高八位數(shù)據(jù)總線允許引腳,輸出,三態(tài),低電平有效2023/1/14622.2.3 8086外部引腳引腳的功能(三)復(fù)用總線引腳2—16,39AD0~AD15地址/數(shù)據(jù)分時復(fù)用引腳,雙向,三態(tài)38,37,36,35A16~A19/S3~S6地址/狀態(tài)分時復(fù)用引腳,輸出,三態(tài)2023/1/146335~38輸出狀態(tài)信息。35S6:指示8086當(dāng)前是否與總線相連,S6=0,表示8086當(dāng)前與總線相連。36S5:表明中斷允許標志當(dāng)前的設(shè)置。S5=0,表示CPU中斷是關(guān)閉的,禁止一切可屏蔽中斷源的中斷請求;S5=1,表示CPU中斷是開放的,允許一切可屏蔽中斷源的中斷申請。37-38S4、S3:指出當(dāng)前使用段寄存器的情況。2.2.3 8086外部引腳S4、S3組合所對應(yīng)的段寄存器情況

S4S3段寄存器

00當(dāng)前正在使用ES01當(dāng)前正在使用SS10當(dāng)前正在使用CS11當(dāng)前正在使用DS引腳的功能2023/1/14642.2.3 8086外部引腳引腳的功能(三)復(fù)用總線引腳中斷響應(yīng)信號、地址鎖存控制信號變成指令隊列狀態(tài)輸出數(shù)據(jù)傳輸允許、數(shù)據(jù)傳輸方向控制、存儲器與接口選擇變成了3個狀態(tài)輸出(指示總線周期的操作類型)。大模式時通過總線控制器譯碼狀態(tài)信號產(chǎn)生等同的控制信號。寫控制信號變成總線封鎖信號總線保持的硬件握手信號1對變成2對2023/1/14652.2.48086與8088在引腳上的區(qū)別 8086微處理器 8088微處理器16位AD復(fù)用 8位AD復(fù)用(34)BHE高八位數(shù)據(jù)總線允許 定義為SS0狀態(tài)線(28)M/IO引腳選擇存儲器/接口電路 M/IO引腳選擇存儲器/接口電路8086與8088的指令隊列容量8086指令隊列隊列為6個字節(jié),一個總線周期可取2個字節(jié)的指令代碼放入ISQ8088指令隊列隊列為4個字節(jié),一個總線周期可取1個字節(jié)的指令代碼放入ISQ2023/1/14662.2.5

8086的時鐘和總線周期時鐘發(fā)生電路8284A總線周期序列2023/1/1467時鐘發(fā)生電路8284A2.2.5

8086的時鐘和總線周期2023/1/14682.2.5

8086的時鐘和總線周期時鐘發(fā)生電路8284A2023/1/1469時鐘發(fā)生電路8284A2.2.5

8086的時鐘和總線周期1 產(chǎn)生時鐘信號

OSC

內(nèi)部時鐘同頻信號,等于外接晶體頻率

CLK

內(nèi)部時鐘三分頻信號,占空比1/3

PCLK

內(nèi)部時鐘六分頻信號,占空比1/2

CSYNC

外部時鐘的同頻信號用于使系統(tǒng)中的多個8284A同步,以提供相位一致的時鐘

ASYNCREADY同步選擇。

低電平READY為兩級同步,否則為一級同步

F/C

時鐘輸入選擇

F/C

低電平

X1、X2

外接晶體(晶體振蕩器)

F/C

高電平

EFI

外接時鐘入端,外部震蕩源(脈沖發(fā)生器)應(yīng)為方波

8086PC機中14.31818MHz的外接晶體 CLK=4.77MHz供內(nèi)部振蕩器產(chǎn)生震蕩頻率,頻率要求是CPU時鐘頻率的3倍2023/1/14702 準備就緒信號兩組準備就緒信號。ASYNC為低電平時,表示READY輸出時插入一個時鐘周期延時。2.2.5

8086的時鐘和總線周期時鐘發(fā)生電路8284A2023/1/14713復(fù)位信號產(chǎn)生輸入RES經(jīng)過斯密特觸發(fā)器分頻以后,在時鐘同頻下產(chǎn)生RESET信號送給CPU的RESET引腳(不得少于4個時鐘周期),進行復(fù)位。通常有以下兩種情況會產(chǎn)生硬件復(fù)位信號:a 電源開關(guān)打開b 按下機箱上的Reset按鈕電路如下所示:+5VReset按鈕8284A的RES引腳2.2.5

8086的時鐘和總線周期時鐘發(fā)生電路8284A2023/1/14728086/8088CPU正常工作時,RESET引腳應(yīng)輸入低電平。一旦RESET引腳變?yōu)楦唠娖?,CPU進入復(fù)位狀態(tài),(8086/8088CPU要求加在RESET引腳上的正脈沖信號至少維持4個時鐘周期的高電平),RESET引腳恢復(fù)為正常的低電平,CPU進入啟動階段。在復(fù)位狀態(tài),CPU初始化,內(nèi)部的各寄存器被置為初態(tài):CS寄存器置為全“1”(0FFFFH);其他寄存器清零(0000H);指令隊列清空當(dāng)8086/8088復(fù)位后重新啟動時,便從內(nèi)存的0FFFF0H單元處開始執(zhí)行指令。一般在0FFFF0H單元存放一條無條件轉(zhuǎn)移指令,轉(zhuǎn)移到系統(tǒng)程序——引導(dǎo)和裝配程序(實現(xiàn)系統(tǒng)的初始化、引導(dǎo)監(jiān)控程序或引導(dǎo)操作系統(tǒng)等功能)。RESET引腳CPU正常工作系統(tǒng)加電或按下RESET鍵,RESET引腳變?yōu)楦唠娖?CPU進入復(fù)位狀態(tài)至少維持4個時鐘周期RESET引腳恢復(fù)為正常的低電平,CPU進入啟動階段。2.2.5

8086的時鐘和總線周期時鐘發(fā)生電路8284A2023/1/14732.2.5

8086的時鐘和總線周期指令周期:一條指令從其代碼被從內(nèi)存單元中取出到其所規(guī)定的操作執(zhí)行完畢,所用的時間,稱為相應(yīng)指令的指令周期??偩€周期:是指CPU與存儲器或外設(shè)進行一次數(shù)據(jù)傳送所需要的時間。“寫”和“讀”總線周期時鐘周期T:又稱為T狀態(tài),是一個時鐘脈沖的重復(fù)周期,是CPU處理動作的基本時間單位。它是由主頻來確定,大小等于系統(tǒng)主時鐘頻率的倒數(shù)。如8086的主頻為f=5MHz,則其時鐘周期:T=1/f=1/(5MHz)=200ns(1ns=10-9S)。等待周期TW

:是在一個總線周期的T3和T4之間,CPU根據(jù)Ready信號來確定是否插入TW,插入幾個TW??臻e周期Ti

:是指在二個總線周期之間的時間間隔(總線處在空閑狀態(tài))。關(guān)系:時鐘周期(T)作為基本時間單位,一個等待周期TW=T;一個空閑周期Ti=T;一個總線周期通常由四個T組成,分別稱為T1、T2、T3

、T4;一個指令周期由一到幾個總線周期組成??偩€周期序列2023/1/14742.2.5

8086的時鐘和總線周期典型的8086總線周期序列T1狀態(tài),發(fā)地址信息;T2狀態(tài),總線的高4位輸出狀態(tài)信息;低16位在“寫”周期輸出數(shù)據(jù)信息,“讀”周期則浮空;T3狀態(tài),高4位狀態(tài)信息,低16位數(shù)據(jù)信息;

T3之后,可能插入TW;在T4狀態(tài),結(jié)束。總線周期間可能插入空閑周期TI??偩€周期序列最小方式下總線讀周期中:在T1狀態(tài)送出地址及相關(guān)信號;

T2發(fā)出讀命令和8286控制命令;在T3、TW

等待數(shù)據(jù)的出現(xiàn);在T4狀態(tài)將數(shù)據(jù)讀入CPU,并使相關(guān)信號無效2023/1/1475兩個問題速度匹配:如果存儲器或外設(shè)沒有準備好,在T3狀態(tài)前通過的READY控制線向CPU發(fā)送一個READY無效信號,CPU則在T3狀態(tài)后插入等待狀態(tài)TW

;當(dāng)READY有效時,則自動進入T4??臻e狀態(tài)總線周期只用于CPU與存儲器或I/O之間傳送數(shù)據(jù)和供取指令,否則系統(tǒng)總線處于空閑狀態(tài)??臻e狀態(tài)時,總線狀態(tài)由前一個總線周期決定:高4位總線的狀態(tài)低16位總線狀態(tài):“讀”周期:浮空“寫”周期:數(shù)據(jù)信息2.2.5

8086的時鐘和總線周期總線周期序列2023/1/14762.2.5

8086的時鐘和總線周期總線周期序列2023/1/14772.2.6

8086的工作方式通過引腳33(MN/MX)確定8086的工作方式兩種工作方式:工作方式最小工作方式最大工作方式特點單處理器方式:只有一個CPU,所有控制信號直接由CPU產(chǎn)生多處理器方式:可以包含兩個及以上的CPU,如8087,8089;需要增加總線控制器8288;增加收發(fā)器8286;2023/1/1478最小工作方式2.2.6

8086的工作方式時鐘發(fā)生器8284A:產(chǎn)生時鐘信號CLK信號;同步外部發(fā)來的RESET和READY信號。地址鎖存器8282:鎖存20位地址信號和BHE信號。數(shù)據(jù)總線收發(fā)器8286:與CPU的DEN與DT/R引腳連接,對AD15-AD0中傳送的數(shù)據(jù)信息進行緩沖和驅(qū)動,并控制數(shù)據(jù)的傳送方向。DEN=0,允許數(shù)據(jù)經(jīng)數(shù)據(jù)總線收發(fā)器傳送。DT/R=0,CPU接收來自內(nèi)存或I/O接口的數(shù)據(jù)(輸入);DT/R=1,CPU向內(nèi)存或I/O接口發(fā)送數(shù)據(jù)(輸出)。所有的總線控制信號,M/IO、RD、WR、INTA、ALE、DT/R、DEN、BHE、HLDA等均由CPU直接產(chǎn)生,外部產(chǎn)生的INTR,NMI,HOLD,READY等請求信號直接送往8086。信號DT/R、DEN、ALE主要用于對外圍芯片的控制。2023/1/14792.2.6

8086的工作方式最小工作方式時鐘發(fā)生器8284A:產(chǎn)生時鐘信號CLK信號;同步外部發(fā)來的RESET和READY信號。地址鎖存器8282:鎖存20位地址信號和BHE信號。數(shù)據(jù)總線收發(fā)器8286:與CPU的DEN與DT/R引腳連接,對AD15-AD0中傳送的數(shù)據(jù)信息進行緩沖和驅(qū)動,并控制數(shù)據(jù)的傳送方向。2023/1/14802.2.6

8086的工作方式作用:鎖存數(shù)據(jù)、增強驅(qū)動能力8位單向三態(tài)緩沖器8282:輸出不反相;8283:輸出反相OE(9)為輸出允許控制信號,低電平有效,接地STB(11)為輸入鎖存選通信號,與8086的ALE連接10為接地GND,20為電源VCC2010VCCGND緩沖器2023/1/14818位雙向三態(tài)緩沖器8286:輸出不反相;8287:輸出反相OE為輸出允許控制信號,,低電平有效,接8086的DENT為傳送方向控制信號,接8086的DT/R(數(shù)據(jù)發(fā)/收)2010VCCGNDOE=0,導(dǎo)通

T=1A→BT=0A←BOE=1,不導(dǎo)通2.2.6

8086的工作方式緩沖器2023/1/148224INTA(三態(tài))(QS0:)中斷響應(yīng)信號輸出引腳,該信號為兩個連續(xù)的負脈沖。與INTR配合使用。25ALE(QS1)地址鎖存允許輸出信號引腳,ALE信號不能被浮空。26DEN(三態(tài)):數(shù)據(jù)允許輸出信號引腳,低電平有效,為數(shù)據(jù)總線收發(fā)器8286提供一個控制信號,表示CPU當(dāng)前準備發(fā)送或接收一項數(shù)據(jù)。27DT/R(三態(tài)):數(shù)據(jù)收發(fā)控制信號輸出引腳,CPU通過該引腳發(fā)出控制數(shù)據(jù)傳送方向的控制信號,當(dāng)該信號為高電平時輸出,否則,數(shù)據(jù)傳送方向相反。28M/IO(三態(tài)):

存儲器或I/O端口選擇信號輸出引腳,這是CPU區(qū)分進行存儲器訪問還是I/O訪問的輸出控制信號。29WR(三態(tài)):寫控制信號輸出引腳,低電平有效,與M/IO配合實現(xiàn)對存儲單元、I/O端口所進行的寫操作控制。30HLDA:總線保持響應(yīng)信號輸出引腳,高電平有效,表示CPU認可其他總線部件提出的總線占用請求,準備讓出總線控制權(quán)。31HOLD:總線保持請求信號輸入引腳,高電平有效。這是系統(tǒng)中的其它總線部件向CPU發(fā)來的總線請求信號輸入引腳2.2.6

8086的工作方式最小方式DMA置空2023/1/1483利用HOLD和HLDA信號實現(xiàn)總線保持中斷響應(yīng)信號及時序2.2.6

8086的工作方式最小方式2023/1/14842.2.6

8086的工作方式最大方式2023/1/14852.2.6

8086的工作方式最大方式2023/1/148624、25QS1、QS0:指令隊列狀態(tài)信號輸出引腳,組合給出了前一個T狀態(tài)中指令隊列的狀態(tài)QS1QS0性能00無操作01從指令隊列的第一個字節(jié)取走代碼10隊列為空11除第一個字節(jié)外,還取走了后續(xù)字節(jié)中的代碼26、27、28S0、S1、S2(三態(tài)):總線周期狀態(tài)信號輸出引腳,組合指出當(dāng)前總線周期中,所進行數(shù)據(jù)傳輸過程的類型無無2.2.6

8086的工作方式最大方式2023/1/148729LOCK(三態(tài)):總線封鎖輸出信號引腳,低電平有效,當(dāng)該引腳輸出低電平時,系統(tǒng)中其它總線部件就不能占用系統(tǒng)總線。信號是由指令前綴LOCK產(chǎn)生的,在LOCK前綴后面的一條指令執(zhí)行完畢之后,便撤消信號。在8086的2個中斷響應(yīng)脈沖之間,信號也自動變?yōu)橛行У牡碗娖剑苑乐蛊渌偩€部件在中斷響應(yīng)過程中,占有總線而使一個完整的中斷響應(yīng)過程被中斷。31、30RQ/GT0、

RQ/GT1:總線請求信號輸入/總線允許信號輸出引腳兩個引腳都是雙向的,請求與應(yīng)答信號在同一引腳上分時傳輸,方向相反。31腳比的30腳優(yōu)先級高。2.2.6

8086的工作方式最大方式2023/1/1488協(xié)處理器主處理器協(xié)處理器2.2.6

8086的工作方式最大方式2023/1/1489功能:譯碼產(chǎn)生總線控制、命令信號增強總線驅(qū)動能力2.2.6

8086的工作方式總線控制器8288IOB:總線方式控制信號

8288既可控制系統(tǒng)總線,又可控制I/O總線。當(dāng)IOB=0時,8288工作于系統(tǒng)總線工作方式。17引腳輸出作主控級聯(lián)允許信號MCE,高電平,用于中斷控制器8259A級聯(lián)控制當(dāng)IOB=1時,8288只用來控制I/O總線。17引腳輸出外設(shè)數(shù)據(jù)允許信號PDEN,低電平,作為數(shù)據(jù)收發(fā)器開啟信號,控制外部設(shè)備通過I/O總線傳送數(shù)據(jù)。2023/1/14902.2.6

8086的工作方式總線控制器8288CEN:命令允許信號,當(dāng)有多片8288協(xié)同工作時起片選作用CEN為高電平時,允許該8288發(fā)出全部控制信號。

CEN為低電平時,禁止該8288發(fā)出總線控制信號,同時使DEN和PDEN呈高阻狀態(tài)。

任何時候只有一片8288的CEN信號為高電平。AEN:地址允許信號,用于支持多總線結(jié)構(gòu)的同步控制信號。由總線仲裁器8289輸入,低電平有效。輸出總線控制信號注意DEN、MCE/PDEN2023/1/14912.2.6

8086的工作方式總線控制器8288輸出總線命令信號

:存儲器讀命令。:存儲器寫命令。:I/O讀命令。:I/O寫命令。:提前的存儲器寫命令。比提前一個時鐘周期輸出。:提前的I/O寫命令。比提前一個時鐘周期輸出。:中斷響應(yīng)信號。送往發(fā)出中斷請求的設(shè)備。2023/1/1492總線操作即:讀/寫存儲器或I/O端口,CPU通過系統(tǒng)總線與存儲器或I/O接口交換數(shù)據(jù)。按數(shù)據(jù)傳輸方向分為:

總線讀操作

CPU存儲器或I/O接口

總線寫操作

CPU存儲器或I/O接口

——由BIU完成總線操作寫入數(shù)據(jù)讀取數(shù)據(jù)2.2.78086總線操作時序2023/1/1493數(shù)據(jù)輸入地址輸出總線讀周期高阻態(tài)T1狀態(tài)2.2.78086總線操作時序1最小模式下的總線讀周期2023/1/1494T2狀態(tài)高阻態(tài)數(shù)據(jù)輸入地址輸出總線讀周期高阻態(tài)2.2.78086總線操作時序1最小模式下的總線讀周期2023/1/1495T3狀態(tài)高阻態(tài)數(shù)據(jù)輸入地址輸出總線讀周期高阻態(tài)2.2.78086總線操作時序1最小模式下的總線讀周期

T3狀態(tài)的前沿(下降沿),CPU檢測READY引腳信號:若READY為低電平,則表示系統(tǒng)中掛接的存儲器或外設(shè)不能如期送出數(shù)據(jù),要求CPU在T3和T4狀態(tài)之間插入1個或幾個等待狀態(tài)Tw。READY為高電平,表示數(shù)據(jù)已出現(xiàn)在數(shù)據(jù)總線上,進入T4。

TW狀態(tài):

進入TW狀態(tài)后,CPU在每個TW狀態(tài)的前沿(下降沿)采樣READY信號:若為低電平,則繼續(xù)插入等待狀態(tài)TW

。若READY信號變?yōu)楦唠娖?,進入T4READY2023/1/1496T4狀態(tài)高阻態(tài)無效信號在T3(TW)和T4狀態(tài)交界的下降沿處,CPU對數(shù)據(jù)總線上的數(shù)據(jù)進行采樣,完成讀取數(shù)據(jù)的操作數(shù)據(jù)輸入地址輸出總線讀周期高阻態(tài)2.2.78086總線操作時序1最小模式下的總線讀周期采樣在T4狀態(tài)的后半周數(shù)據(jù)從數(shù)據(jù)總線上撤消。各控制信號和狀態(tài)信號處于無效狀態(tài),DEN為高(無效),關(guān)閉數(shù)據(jù)總線收發(fā)器,一個讀周期結(jié)束。2023/1/1497綜上可知,最小方式下總線讀周期中:

在T1狀態(tài)送出地址及相關(guān)信號;

T2發(fā)出讀命令和8286控制命令;在T3、TW

等待數(shù)據(jù)的出現(xiàn);在T4狀態(tài)將數(shù)據(jù)讀入CPU,并使相關(guān)信號無效1最小模式下的總線讀周期2.2.78086總線操作時序2023/1/14988086最小方式下總線寫周期的時序無高阻態(tài),直接輸出數(shù)據(jù)高電平,表示為寫周期WR有效,與RD出現(xiàn)時間相同2最小模式下的總線寫周期2.2.78086總線操作時序2023/1/1499最大方式下,8086的總線讀寫操作在邏輯上和最小方式下的讀寫操作是一樣的。不同的是,最大方式下應(yīng)考慮總線控制器8288產(chǎn)生的一些控制信號的作用。3最大方式下的總線讀寫周期2.2.78086總線操作時序2023/1/14100如果CPU內(nèi)的指令隊列已滿且執(zhí)行部件EU又未申請訪問存儲器或I/O端口,則總線接口部件BIU就不必和總線打交道,從而進入空閑狀態(tài)TI。在空閑狀態(tài),雖然CPU對總線不發(fā)生操作,但CPU內(nèi)部的操作仍在進行,即執(zhí)行部件EU仍在工作。從這一點上說,實際上總線空閑狀態(tài)是總線接口部件BIU對EU的一種等待。等待狀態(tài)T1T2T3TWT4T1T2T3T4TITIT1T2T3TWT4空閑狀態(tài)4.總線空閑狀態(tài)(總線空操作)2.2.78086總線操作時序2023/1/141012.2.8存儲器組織1.存儲規(guī)則2.8086存儲體的結(jié)構(gòu)3.存儲器分段4.實際地址和邏輯地址5.堆棧6專用和保留的存儲單元2023/1/141022.2.8存儲器組織1.存儲規(guī)則:“低對低、高對高”的存儲形式,被稱為“小端方式LittleEndian”。8位字節(jié)按照順序存放;16位字,高位字節(jié)存于高位地址單元,低位字節(jié)存于低位地址單元;32位的地址指針數(shù)據(jù),則地址指針的偏移量(16位)存放于低地址的字單元,段基址(16位)存于高地址的字單元;規(guī)則存放與非規(guī)則存放數(shù)據(jù)的低位字節(jié)從偶數(shù)地址(位于低位庫)開始存放,稱為規(guī)則存放;從奇數(shù)地址(位于高位庫)開始存放,稱為非規(guī)則存放。規(guī)則存放的字的存取只需要一個總線周期,非規(guī)則存放則需要兩個總線周期。1.存儲規(guī)則2023/1/141032.2.8存儲器組織2.8086存儲體的結(jié)構(gòu)

8086將1M字節(jié)存儲體分為兩個庫,每個庫的容量都是512K字節(jié)。與數(shù)據(jù)總線D15—D8相連的庫全由奇地址單元組成,稱高字節(jié)庫或奇地址庫,并用BHE信號作為庫選信號;另一個庫與數(shù)據(jù)總線的D7—D0相連,由偶地址單元組成,稱低字節(jié)庫或偶低址庫,利用A0作為庫選信號。顯然,只需A19—A1共19位地址用來作為兩個庫內(nèi)的單元尋址。2.8086存儲體的結(jié)構(gòu)2023/1/141042.2.8存儲器組織2.8086存儲體的結(jié)構(gòu)在組成存儲系統(tǒng)時,總是使偶地址單元的數(shù)據(jù)通過AD0—AD7傳送,而奇地址單元的數(shù)據(jù)通過AD8—AD15傳送并不是所有總線周期都存取總線高字節(jié),只有存取規(guī)則字,或奇地址的字節(jié),或不規(guī)則字的低八位,才進行總線高字節(jié)傳送。

2.8086存儲體的結(jié)構(gòu)2023/1/141052.2.8存儲器組織3.存儲器分段由于CPU內(nèi)部的寄存器都是16位的,為了能夠提供20位的物理地址,系統(tǒng)中采用了存儲器分段的方法。規(guī)定存儲器的一個段為64KB,這樣系統(tǒng)的整個存儲空間可分為16個互不重疊的邏輯段。由段寄存器來確定存儲單元的段地址,由指令提供該單元相對于相應(yīng)段起始地址的16位偏移量。3.存儲器分段2023/1/141063.存儲器分段存儲器的每個段的容量為64KB,并允許在整個存儲空間內(nèi)浮動,即段與段之間可以部分重疊、完全重疊、連續(xù)排列、斷開排列,非常靈活。優(yōu)點:提高執(zhí)行速度縮小尋址范圍有利于程序裝配2.2.8存儲器組織3.存儲器分段2023/1/141072.2.8存儲器組織4.實際地址和邏輯地址物理地址一個存儲單元的實際地址(20位)。物理地址與存儲單元是一一對應(yīng)關(guān)系。(20202H)邏輯地址指段地址和偏移地址,是指令中引用的形式地址。一個邏輯地址只能對應(yīng)一個物理地址,而一個物理地址可以對應(yīng)多個邏輯地址。(2000:0202H)段地址是指一個段的起始地址,最低4位為零,一般將其有效數(shù)字16位存放在段寄存器中。(2000H)偏移地址段內(nèi)存儲單元相對段地址的距離(16位)。同一個段內(nèi),各個存儲單元的段地址是相同的,偏移地址是不同的。(0202H)4.實際地址和邏輯地址2023/1/141082.2.8存儲器組織4.實際地址和邏輯地址物理地址的計算方法

取指令物理地址=(CS)×10H+(IP)

堆棧操作物理地址=(SS)×10H+(SP)

存儲器操作數(shù)物理地址=(DS)/(ES)×10H+偏移地址物理地址與邏輯地址并不是一一對應(yīng)的,一個物理地址可以有多個邏輯地址;2000:0202H

=2010:0102H=20202H4.實際地址和邏輯地址

物理地址=段地址

+偏移地址

=段寄存器內(nèi)容×10H+偏移地址段地址2023/1/141092.2.8存儲器組織4.實際地址和邏輯地址物理地址的計算2023/1/141102.2.8存儲器組織4.實際地址和邏輯地址物理地址的計算4.實際地址和邏輯地址2023/1/141112.2.8存儲器組織5.堆棧堆棧是一個特定的存儲區(qū),其特點:作用:用于數(shù)據(jù)的暫存、子程序調(diào)用和中斷響應(yīng)過程中斷點和現(xiàn)場的保護。存儲規(guī)則:以字為單位,后進先出(LIFO)寄存器:SS中保存當(dāng)前堆棧段的基地址,SP中保存當(dāng)前堆棧段中的棧頂位置,SP指向的是“實”棧頂;堆棧的操作指令:進棧操作(PUSH)出棧操作(POP)入棧:修改指針SP=SP-2→高8位先入SP+1位置→低8位入SP位置出棧:SP指向的低8位先出→再出SP+1位置的高8位→最后修改SP=SP+25.堆棧2023/1/141122.2.8存儲器組織5.堆棧進棧與出棧操作5.堆棧入棧出棧堆棧初始狀態(tài)寄存器值SP-212→(SP+1)34→(SP)(SP)→ALBB(SP+1)→AHSP+22023/1/141132.2.8存儲器組織6專用和保留的存儲單元

8088/8086系統(tǒng)中,有些內(nèi)存區(qū)域的作用是固定的,用戶不能隨便使用,如:啟動區(qū):FFFF0H—FFFFFH共16個單元,用以存放一條無條件轉(zhuǎn)移指令的代碼,轉(zhuǎn)移到系統(tǒng)的初始化部分。中斷矢量區(qū):00000H—003FFH共1K字節(jié),用以存放256種中斷類型的中斷矢量,每個中斷矢量占用4個字節(jié),共256×4=1024=1K;顯示緩沖區(qū):B0000H—B0FFFH約4K字節(jié),是單色顯示器的顯示緩沖區(qū),存放文本方式下,所顯示字符的ASCII碼及屬性碼;B8000H—BBFFFH約16K

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論