匯編語言第2章微型計算機系統(tǒng)結(jié)構(gòu)_第1頁
匯編語言第2章微型計算機系統(tǒng)結(jié)構(gòu)_第2頁
匯編語言第2章微型計算機系統(tǒng)結(jié)構(gòu)_第3頁
匯編語言第2章微型計算機系統(tǒng)結(jié)構(gòu)_第4頁
匯編語言第2章微型計算機系統(tǒng)結(jié)構(gòu)_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第2章微型計算機系統(tǒng)結(jié)構(gòu)本章學(xué)習(xí)目標(biāo).了解匯編語言程序設(shè)計的源程序總體結(jié)構(gòu)和指令的執(zhí)行過程。.理解微型計算機8086/8088CPU的內(nèi)部結(jié)構(gòu)和外部引腳的含義。.充分理解微型計算機8086/8088CPU的工作模式和適用的范圍。.理解8086/8088CPU系統(tǒng)總線時序、總線周期的組成和完成的目標(biāo)任務(wù)。.掌握8086/8088CPU內(nèi)部段寄存器和通用寄存器的隱含及替代使用方法。.熟練掌握8086/8088CPU標(biāo)志寄存器中的各標(biāo)志位所表示的具體意義和產(chǎn)生的條件。2.18086/8088微處理器2.1.1CPU結(jié)構(gòu)為了說明8086CPU的結(jié)構(gòu),需要先了解CPU的功能,然后考慮需要什么樣的結(jié)構(gòu)才能夠?qū)崿F(xiàn)這種功能。這樣的一種學(xué)習(xí)思路可以使讀者更容易理解CPU的各個組成結(jié)構(gòu)。

CPU的功能概括起來就是“執(zhí)行指令”。一個程序有很多條指令,放在內(nèi)存中的。那么把它取出來送給CPU就是“取指”過程。指令本身的執(zhí)行在CPU內(nèi)部,“執(zhí)行過程”跟接口沒有關(guān)系。執(zhí)行完畢,要將結(jié)果輸出到內(nèi)存或者端口,這就是“輸出結(jié)果”過程。將上述指令執(zhí)行的過程概括一下,可以分為3個步驟:①“取指”過程;②“執(zhí)行”過程;③“輸出結(jié)果”過程。執(zhí)行過程在CPU內(nèi)部完成,部件稱為執(zhí)行部件EU;“取指”和“輸出結(jié)果”過程則是由總線接口部件BIU來完成的。

8086CPU內(nèi)部結(jié)構(gòu)如圖2-1所示。從功能上可將8086分為兩個部分,即總線接口單元BIU(BusInterfaceUnit)和執(zhí)行單元EU(ExecutionUnit).1.總線接口單元BIU

總線接口單元的功能是負(fù)責(zé)完成與存儲器或I/O設(shè)備之間的數(shù)據(jù)傳送。其具體任務(wù)是:BIU要從內(nèi)存取指令送到指令隊列緩沖器;CPU執(zhí)行指令時,總線接口單元要配合執(zhí)行單元從指定的內(nèi)存單元或外設(shè)端口中取數(shù)據(jù),將數(shù)據(jù)傳送給執(zhí)行單元,或者把執(zhí)行單元的操作結(jié)果傳送到指定的內(nèi)存單元或外設(shè)端口中。

BIU內(nèi)有4個16位段地址寄存器CS(代碼段寄存器)、DS(數(shù)據(jù)段寄存器)、SS(堆棧段寄存器)和ES(附加段寄存器),16位指令指針I(yè)P(InstructionPointer),6字節(jié)指令隊列緩沖器,20位地址加法器和總線控制電路。下面對總線接口單元作3點說明。

(1)指令隊列緩沖器

8086的指令隊列為6個字節(jié),而8088的指令隊列為4個字節(jié)。不管是8086還是8088,都會在執(zhí)行指令的同時,從內(nèi)存中取下面一條或幾條指令,取來的指令就依次放在指令隊列中。它們采用“先進先出”的原則,按順序存放,并順序到EU中去執(zhí)行,且遵循下列原則。

1)取指時,每當(dāng)指令隊列緩沖器中存滿一條指令時,EU就立即開始執(zhí)行。

2)指令隊列緩沖器中只要空出兩個字節(jié),BIU便自動執(zhí)行取指操作,直到填滿為止。

3)在EU執(zhí)行指令的過程中,指令需要對存儲器或I/O設(shè)備存取數(shù)據(jù)時,BIU將在執(zhí)行完現(xiàn)行取指的存儲器周期后的下一個存儲器周期時,對指定的內(nèi)存單元或I/O設(shè)備進行存取操作,交換的數(shù)據(jù)經(jīng)BIU由EU進行處理。

4)當(dāng)EU執(zhí)行完轉(zhuǎn)移、調(diào)用和返回指令時,則要清除指令隊列緩沖器,并要求BIU從新的地址重新開始取指令,新取的第一條指令將直接經(jīng)指令隊列送到EU去執(zhí)行,隨后取來的指令將填入指令隊列緩沖器。由于BIU和EU是分開并獨立工作的,因此,在一般情況下,CPU執(zhí)行完一條指令后就可以執(zhí)行下一條指令,而不需要像以往8位CPU那樣重復(fù)地進行先取指令、后執(zhí)行指令的串行操作。16位CPU這種并行重疊操作的特點,提高了總線的信息傳輸效率和整個系統(tǒng)的執(zhí)行速度。如圖2-2所示為8086/8088CPU程序的執(zhí)行過程。(2)地址加法器和段寄存器

8086有20條地址線,但CPU內(nèi)部寄存器只有16位,那么如何用16位寄存器實現(xiàn)20位地址的尋址呢?分別用16位的段寄存器與16位的偏移量巧妙地解決了這一矛盾。即各個段寄存器分別用來存放各段的起始地址。由IP提供或由EU按尋址方式計算出尋址單元的16位偏移地址(又稱為邏輯地址)后,將與左移4位后的段寄存器的內(nèi)容同時送到地址加法器進行相加,形成一個20位的實際地址(又稱為物理地址),以對存儲單元尋址。實際地址的產(chǎn)生過程如圖2-3所示。例如,要形成某指令碼的實際地址,就需將IP的值與代碼段寄存器CS(CodeSegment)左移4位后的內(nèi)容相加。假設(shè)CS=ECOOH,IP=0800H,此時指令的物理地址為EC800H。(3)16位指令指針I(yè)PIP的功能與8位CPU類似。正常運行時,IP中含有BIU要取的下一條指令(字節(jié))的偏移地址。IP在程序運行中能自動加1修正,使之指向要執(zhí)行的下一條指令。有些指令能使IP值改變或使IP值壓入堆棧,或由堆棧彈出恢復(fù)原值。2.執(zhí)行單元EU

執(zhí)行單元不與系統(tǒng)直接相連,它的功能只是負(fù)責(zé)執(zhí)行指令;執(zhí)行的指令從BIU的指令隊列緩沖器中取得,而且執(zhí)行指令的結(jié)果或執(zhí)行指令所需要的數(shù)據(jù)都由EU向BIU發(fā)出請求,再由BIU對存儲器或外設(shè)存取。EU由下列部分組成。

1)16位算術(shù)邏輯單元(ALU):它可以用于進行算術(shù)、邏輯運算,也可以按指令尋址方式計算出尋址單元的16位偏移量。

2)16位標(biāo)志寄存器F:它用來反映CPU運算的狀態(tài)特征或存放控制標(biāo)志。

3)數(shù)據(jù)暫存寄存器:它協(xié)助ALU完成運算,暫存參加運算的數(shù)據(jù)。

4)通用寄存器組:它包括4個16位數(shù)據(jù)寄存器AX,BX,CX,DX和4個16位指針與變址寄存器SP,BP,SI,DI.5)EU控制電路:它是控制、定時各種狀態(tài)邏輯電路,接收從BIU中指令隊列取來的指令,經(jīng)過指令譯碼形成各種定時控制信號,對EU的各個部件實現(xiàn)特定的定時操作。

EU中所有的寄存器和數(shù)據(jù)通道(除隊列總線為8位外)都是16位的寬度,可實現(xiàn)數(shù)據(jù)的快速傳遞。2.1.2寄存器結(jié)構(gòu)寄存器是CPU在運算時一些中間數(shù)據(jù)的暫存地址,按照其用途的不同可以分為通用寄存器、指令指針寄存器、標(biāo)志寄存器和段寄存器4類。8086/8088的內(nèi)部寄存器編程結(jié)構(gòu)如圖2-4所示。它共有14個16位寄存器,其中標(biāo)志寄存器只用了9位。下面根據(jù)寄存器用途的不同對各種寄存器進行詳細(xì)介紹。

1.通用寄存器

8086/8088的通用寄存器分為兩組。(1)數(shù)據(jù)寄存器

EU中有4個16位數(shù)據(jù)寄存器AX,BX,ON和DX。每個數(shù)據(jù)寄存器分為高字節(jié)H和低字節(jié)L,它們均可作為8位數(shù)據(jù)寄存器獨立尋址、獨立使用。多數(shù)情況下,這些數(shù)據(jù)寄存器用在算術(shù)運算或邏輯運算指令中,用來進行算術(shù)邏輯運算。而在有些指令中,它們則有特定的用途:如AX作累加器;BX作基址寄存器,在查表指令XLAT中存放表的起始地址;CX作計數(shù)寄存器,在數(shù)據(jù)串操作指令的REP中存放數(shù)據(jù)串元素的個數(shù);DX作數(shù)據(jù)寄存器,在字的除法運算指令DIV中存放余數(shù)。這些寄存器在指令中隱含使用。有關(guān)數(shù)據(jù)寄存器的隱含使用操作如表2-1所示。

(2)指針寄存器和變址寄存器指針寄存器SP和BP稱為P組,變址寄存器SI和DI稱為I組,它們都是16位寄存器,一般用來存放地址的偏移量(即相對于段起始地址的距離)。偏移量在BIU的地址加法器中和左移4位的段寄存器內(nèi)容相加產(chǎn)生20位的物理地址。指針寄存器SP和BP用來指示存取位于當(dāng)前堆棧段中的數(shù)據(jù)所在的地址,但SP和BP在使用上有區(qū)別。入棧(PUSH)和出棧((POP)指令是由SP給出棧頂?shù)钠频刂罚史Q為堆棧指針,BP則是存放位于堆棧段中一個數(shù)據(jù)區(qū)的基地址,故稱為基址指針寄存器(數(shù)據(jù)區(qū)首地址的偏移量)。變址寄存器SI和DI是存放當(dāng)前數(shù)據(jù)段的偏移地址的。源操作數(shù)地址的偏移放于SI中,所以SI稱為源變址寄存器;目的操作數(shù)地址的偏移地址放于DI中,故DI稱為目的變址寄存器。例如在數(shù)據(jù)串操作指令中,被處理數(shù)據(jù)串地址的偏移地址由SI給出,處理后的結(jié)果數(shù)據(jù)串地址的偏移地址則由DI給出。

2.指令指針寄存器指令指針寄存器IP用來存放下一條待執(zhí)行指令在代碼段中的偏移地址。與CS(代碼段寄存器)相結(jié)合形成指向指令存放單元的物理地址。3.標(biāo)志寄存器

16位標(biāo)志寄存器F只用了其中的9位作標(biāo)志位,即6個狀態(tài)標(biāo)志位,3個控制標(biāo)志位。如圖所示。狀態(tài)標(biāo)志位用來反映算術(shù)或邏輯運算后結(jié)果的狀態(tài),以記錄CPU的狀態(tài)特征,分別為:CF,PF,AF,ZF,SF,OF.1)CF(CarryFlag)進位標(biāo)志:當(dāng)執(zhí)行一個加法或減法運算使最高位(即D15位或D7位)產(chǎn)生進位或借位時,則CF為1,否則為0。在進行多字節(jié)數(shù)的加減運算時,要使用到該標(biāo)志位;在比較無符號數(shù)大小時,也用到該標(biāo)志位。此外,循環(huán)指令也會影響它。

2)PF(PrityFlag)奇偶標(biāo)志:當(dāng)指令執(zhí)行結(jié)果的低8位中含有偶數(shù)個1時,則PF為1,否則為0。利用PF可進行奇偶校驗檢查,或產(chǎn)生奇偶效驗位,在串行通信中也用到PF位。

3)AF(AuxiliaryCarryFlag)輔助進位標(biāo)志:當(dāng)執(zhí)行一個加法或減法運算使結(jié)果中低字節(jié)的低4位向高4位有進位或借位時,則AF為1,否則為0.4)ZF(ZeroFlag)零標(biāo)志位:若當(dāng)前的運算結(jié)果為0,則ZF為1,否則為0.5)SF(SignFlag)符號標(biāo)志:它和運算結(jié)果的最高位(根據(jù)D15位或D7位判斷)相同。當(dāng)數(shù)據(jù)用補碼表示時,負(fù)數(shù)的最高位為1,正數(shù)的最高位為0.

6)OF(OverflowFlag)溢出標(biāo)志:此標(biāo)志用于反映有符號數(shù)加減運算是否引起溢出。如運算結(jié)果超過了8位或16位有符號數(shù)的表示范圍,即在字節(jié)運算時大于+127或小于-128,在字運算時大于+32767或小于-32768,稱為溢出。當(dāng)補碼運算有溢出時,OF為1;否則為0。對OF的取值可以采用簡易的辦法來求解:字節(jié)運算,C6和C7位的異或;字運算,則用C14和C15位的異或

C,表示進行加減運算時第i位向第i+1位的進位或借位。標(biāo)志寄存器中的3個控制標(biāo)志位分別為DF,IF和TF。

1)DF(DirectionFlag)方向標(biāo)志:它用來控制數(shù)據(jù)串操作指令的步進方向。若用STD指令將DF置1,則串操作過程中地址會自動遞減;若用CLD指令將DF清零,則串操作過程中地址會自動遞增。

2)IF(InterruptEnableFlag)中斷允許標(biāo)志:它是控制可屏蔽中斷的標(biāo)志。若用STI指令將IF置1,則表示允許CPU接受外部從INTR引線上發(fā)來的可屏蔽中斷請求信號;若用CLI指令將IF清零,則禁止CPU接受可屏蔽中斷請求信號。IF的狀態(tài)不影響非屏蔽中斷(NM)請求,也不影響CPU響應(yīng)內(nèi)部的中斷請求。

3)TF(TrapFlag)跟蹤(陷阱)標(biāo)志:它是為調(diào)試程序方便而設(shè)置的。若將TF置1,則8086/8088CPU處于單步工作狀態(tài)方式;否則,將正常執(zhí)行程序。8086/8088沒有專門設(shè)置和清除TF標(biāo)志的指令,要通過其他方法設(shè)置和清除。中斷時標(biāo)志寄存器自動地壓入了堆棧,故可以在中斷服務(wù)程序中,用BP間址找到標(biāo)志寄存器存放的內(nèi)存單元,并進行改變,當(dāng)IRET指令使堆棧中存放的原標(biāo)志寄存器內(nèi)容自動地彈回到CPU中去時,其中的TF已是新的狀態(tài)“1”了。

4.段寄存器

8086/8088CPU具有尋址存儲空間1MB的能力,但是8086/8088指令中給出的地址碼僅有16位,指針寄存器和變址寄存器也只有16位,即用16位長度二216=64K不能使CPU直接尋址220=1MB空間。為此,8086/8088用一組段寄存器將這1MB存儲空間分成若干個邏輯段,每個邏輯的長度為64K。這些邏輯段可被任意設(shè)置在整個存儲空間上下浮動。

8086/8088CPU的BIU中有4個16位段寄存器(CS,SS,DS,ES),分別稱為代碼段寄存器CS、堆棧段寄存器SS、數(shù)據(jù)段寄存器DS和附加段寄存器ES,用來存放各段的起始地址,它們被稱為“段基址”寄存器。代碼段寄存器CS用來存放程序當(dāng)前使用的代碼段的段基址,CPU執(zhí)行的指令將從代碼段取得;堆棧段寄存器SS用來存放程序當(dāng)前使用的堆棧段的段基址,堆棧操作的數(shù)據(jù)就在這個段中;數(shù)據(jù)段寄存器DS用來存放程序當(dāng)前使用的數(shù)據(jù)段的段基址。一般來說,程序使用的數(shù)據(jù)放在數(shù)據(jù)段中;附加段寄存器ES用來存放程序當(dāng)前使用的附加段的段基址,它通常也用來存放數(shù)據(jù),典型用法是存放處理后的數(shù)據(jù)。段的概念(強調(diào))

8086/8088CPU的指令指針I(yè)P和堆棧指示器SP都是16位,故只能直接尋址64K.為了能尋址1MB存儲空間,引入了分段的新概念。在8086/8088系統(tǒng)中,1MB存儲空間被分為若干邏輯段,其實際存儲器中段的位置如圖2-6所示。每段最多可包含64K長度的連續(xù)存儲單元。每個段的起始地址又叫基址,它是一個能被16整除的數(shù),即最后4位為0,基址是用軟件設(shè)置的。段和段之間可以是連續(xù)的、分開的、部分重疊或完全重疊的。一個程序所用的具體存儲空間可以為一個邏輯段,也可以為多個邏輯段。如果段不重疊且連續(xù)只能有16個段,216×24=1M段的基址存放在段寄存器CS,DS,SS和ES中。程序可以從4個段寄存器給出的邏輯段中存取代碼和數(shù)據(jù)。若要對另外的段而不是當(dāng)前可尋址的段進行存取信息,程序必須首先改變對應(yīng)的段寄存器,將其設(shè)置成所要存取的段的基址。有關(guān)段寄存器的使用約定如表2-2所示。

8086與8088的區(qū)別:內(nèi)部結(jié)構(gòu)和性能基本上是相同的。主要區(qū)別在于:8086是真正的標(biāo)準(zhǔn)16位CPU,它有16條數(shù)據(jù)線和20條地址線;

8088是在8位微處理器8080和8085基礎(chǔ)上發(fā)展起來的一種準(zhǔn)16位微處理器,它的內(nèi)部寄存器、運算單元和內(nèi)部操作都是16位的,可處理16位數(shù)據(jù),也能處理8位數(shù)據(jù),但它的數(shù)據(jù)總線只有8條,它同樣也有20條地址線。

8086CPU的內(nèi)部指令隊列緩沖器為6字節(jié)長,而8088CPU的內(nèi)部指令隊列緩沖器為4字節(jié)長。2.1.38086/8088的引腳介紹

CPU引腳需要連接總線??偩€又包括地址總線、數(shù)據(jù)總線、控制總線。一個引腳只能連接總線的一根線,引腳實質(zhì)上和總線的位數(shù)相對應(yīng)。為了減小引腳數(shù)量,8086的引腳設(shè)計采用過分時復(fù)用的方法,使得引腳的數(shù)量減少了一半。地址總線有20位,其中16位是地址/數(shù)據(jù)總線分時復(fù)用,另4位是地址/狀態(tài)總線分時復(fù)用。其次就是CPU和一些控制信號線進行數(shù)據(jù)交換:一方面CPU的控制指令通過這些引腳發(fā)送出去;另一方面外部的一些狀態(tài)要通過這些引腳反饋回來。1.8086/8088系統(tǒng)總線時序由于CPU的引腳具有分時復(fù)用功能,在了解CPU各引腳功能之前首先要了解系統(tǒng)總線的時序結(jié)構(gòu)。微處理器是在統(tǒng)一的時鐘信號CLK控制下,按節(jié)拍進行工作的。8086/8088的時鐘頻率為5MHz,故時鐘周期為200ns,CPU每執(zhí)行一條指令,至少要通過總線對存儲器訪問一次(取指令)。

8086/8088CPU通過總線對外部(存儲器或I/O接口)進行一次訪問所需的時間稱為一個總線周期。一個總線周期至少包含4個時鐘周期即T1,T2,T3,T4,處在這些基本時鐘周期中的總線狀態(tài)稱為T狀態(tài)。

8086/8088CPU采用分時復(fù)用的地加數(shù)據(jù)總線。在一個總線周期內(nèi),首先利用總線傳送地址,然后再利用同一總線傳送數(shù)據(jù)。具體來說,在T1狀態(tài),BIU把要訪問的存儲單元或I/O端口的地址輸出到總線上。若為讀周期,在T2中使總線處于浮動的(高阻)緩沖狀態(tài),以使CPU有足夠的時間從輸出地址方式轉(zhuǎn)變?yōu)檩斎耄ㄗx)數(shù)據(jù)方式,然后在T3狀態(tài)的開始,CPU從總線上讀入數(shù)據(jù)。T4結(jié)束本總線周期.若為寫周期,由于輸出地址和輸出數(shù)據(jù)都是寫總線過程,CPU不必轉(zhuǎn)變讀寫工作方式,因而不需要緩沖區(qū),CPU在T2~T4中把數(shù)據(jù)輸出到總線上,考慮到CPU和慢速的存儲器或I/O接口之間傳送的實際情況,CPU會在總線周期的T3和T4之間插入若干個附加時鐘周期。這附加周期稱為等待周期TW.

需要特別指出,僅當(dāng)BIU需要填補指令隊列的空缺,或者當(dāng)EU在執(zhí)行指令過程中需要申請一個總線周期時,BIU才一會進入執(zhí)行總線周期的工作狀態(tài)。在兩個總線周期之間,可能出現(xiàn)一些沒有BIU活動的時鐘周期T1,處于這種時鐘周期中的總線狀態(tài)被稱為空閑狀態(tài),或者簡稱T1狀態(tài)。如圖2-7所示為典型的總線周期序列。只有第28腳不同2.8086/8088CPU的引腳信號

8086和8088的引腳信號如圖2-8所示。它們的40條引線按功能可分為以下5類

(1)地址/數(shù)據(jù)總線AD15-AD0

這是分時復(fù)用的存儲器或端口地址和數(shù)據(jù)總線。三態(tài),雙向輸入/輸出。808616位數(shù)據(jù),8088只能傳輸8位數(shù)據(jù),所以只有AD7~AD08條地址數(shù)據(jù)線,A15~A8只用來輸出地址。作為復(fù)用引腳,在總線周期的T1狀態(tài)用來輸出要尋址的存儲器或I/O端口地址;在T2狀態(tài)浮置成高阻狀態(tài),為傳輸數(shù)據(jù)做準(zhǔn)備;在T3狀態(tài),用于傳輸數(shù)據(jù);T4狀態(tài)結(jié)束總線周期。當(dāng)CPU響應(yīng)中斷以及系統(tǒng)總線“保持響應(yīng)”時,復(fù)用線都被置為高阻狀態(tài)。(2)地址狀態(tài)總線A19/S6-A16/S3

地址/狀態(tài)總線為輸出、三態(tài)總線,采用分時輸出,即T1狀態(tài)輸出地址的最高4位,T2-T4狀態(tài)輸出狀態(tài)信息。當(dāng)訪問存儲器時,T1狀態(tài)時輸出高4位的地址A19-A16送到鎖存器(8282)鎖存,與AD15-AD0組成20位的地址信號;訪問I/O端口時,A19-A16=0。狀態(tài)信息S6為0用來指示8086/8088當(dāng)前與總線相連,所以,在T2-T4狀態(tài),S6總等于0,表示當(dāng)前連總線上。S5表示中斷允許標(biāo)志位IF的當(dāng)前設(shè)置。S4和S3用來指示當(dāng)前正在使用哪個段寄存器,如表2-3。當(dāng)系統(tǒng)總線處于“保持響應(yīng)”狀態(tài)時,這些引線置為高阻狀態(tài)。

(3)控制總線

1)/BHE/S7:/BHE高8位數(shù)據(jù)總線允許/狀態(tài)復(fù)用引腳三態(tài)、輸出。/BHE在總線周期的T1狀態(tài)時輸出,S7在T2~T4時輸出。在8086中,當(dāng)/BHE/S7引腳上輸出/BHE信號時,表示總線高8位AD15-AD8上的數(shù)據(jù)有效。在8088中,第34引腳不是/BHE/S7,而是被賦予另外的信號:在最小工作模式時,它為/SS0,和DT//R、/M/IO一起決定了8088當(dāng)前總線周期的讀/寫動作;在最大工作模式時,它恒為高電平。

S7在當(dāng)前的8086芯片設(shè)計中未被定義,作備用狀態(tài)信號線。

2)/RD:讀控制信號,三態(tài),輸出。當(dāng)/RD=0時,表示將要執(zhí)行一個對存儲器或I/O端口的讀操作。到底是對內(nèi)存單元還是對I/O端口讀取數(shù)據(jù),取決于/M/IO信號。在一個讀操作的總線周期中,/RD信號在T2,T3和Tw狀態(tài)均為低電平。在系統(tǒng)總線進入“保持響應(yīng)”期間,/RD被浮空。

3)READY:“準(zhǔn)備好”信號線,輸入。它實際上是由所尋址的存儲器或I/O端口發(fā)來的響應(yīng)信號,高電平有效。當(dāng)READY=1時,表示所尋址的內(nèi)存或I/O設(shè)備己準(zhǔn)備就緒,馬上就可以進行一次數(shù)據(jù)傳輸。CPU在每個總線周期的T3狀態(tài)開始對READY信號采樣。如果檢測到READY為低電平,表示存儲器或I/O設(shè)備尚未準(zhǔn)備就緒,則CPU在T3狀態(tài)之后自動插入一個或幾個等待狀態(tài)Tw直到READY變?yōu)楦唠娖?,才進入T4狀態(tài),完成數(shù)據(jù)傳送,結(jié)束當(dāng)前總線周期。

4)/TEST:等待退出測試信號,輸入。它用于多處理器系統(tǒng)中且只有在執(zhí)行WAIT指令時才使用。當(dāng)CPU執(zhí)行WAIT指令時,每隔5個時鐘周期對該線輸入進行一次測試;若/TEST=1時,CPU將停止取下條指令而進入等待狀態(tài),重復(fù)執(zhí)行WAIT指令,直至/TEST=0.等待狀態(tài)結(jié)束,CPU才繼續(xù)往下執(zhí)行被暫停的指令。等待期間允許外部中斷。

/TEST與WAIT配合使用。WAIT處理器控制指令,相當(dāng)于暫停

5)INTR:可屏蔽中斷請求信號,輸入,高電平有效。當(dāng)1NTR=1時,表示外設(shè)提出了中斷請求,8086/8088在每個指令周期的最后一個T狀態(tài)采樣此信號。若IF=1,則CPU響應(yīng)中斷,停止執(zhí)行指令序列,并轉(zhuǎn)去執(zhí)行中斷服務(wù)程序。

6)NMI:非屏蔽中斷請求信號,輸入,上升沿觸發(fā)。此請求不受IF狀態(tài)的影響,也不能用軟件屏蔽,只要此信號一出現(xiàn),就在現(xiàn)行指令結(jié)束后引起中斷。

7)RESET:復(fù)位信號,輸入,高電平有效。通常與8284A復(fù)位輸出端相連,8086/8088要求復(fù)位脈沖寬度不得小于4個時鐘周期,接通電源時不能小于50uS;復(fù)位后,內(nèi)部寄存器狀態(tài)如表2-4所示。程序執(zhí)行時,RESET線保持低電平。interrupt

request

中斷請求不可屏蔽中斷(NonMaskableInterrupt)

8)CLK:系統(tǒng)時鐘,輸入。通常與8284A時鐘發(fā)生器的時鐘輸出端CLK相連,該時鐘信號的低/高之比常采用2:1(占空度1/3)。

(4)電源線VCC和地線GNDVCC:電源,輸入,第40腳。8086/8088CPU采用單一的+5V電壓。

GND:接地引腳,第1,20腳。向CPU提供參考地電平,有兩個接地引腳。

(5)其他控制線(24~31引腳)由于8086/8088CPU可以工作在不同的工作模式(最大/最小),其他引腳功能都相同,只有24~31引腳在不同的工作模式下功能各不相同。2.2工作模式

8086/8088CPU芯片可以在兩種模式下工作,即最小模式和最大模式。所謂最小模式就是系統(tǒng)中只有一個8086/8088微處理器。在這種情況下,所有總線控制信號都是直接由8086/8088CPU產(chǎn)生的,系統(tǒng)中的總線控制邏輯電路被減到最少,該模式適用于規(guī)模較小的微機應(yīng)用系統(tǒng)。最大模式是相對于最小模式而言的,最大模式用于中、大規(guī)模的微機應(yīng)用系統(tǒng)中。在最大模式下,系統(tǒng)中至少包含兩個微處理器,其中一個為主處理器,即8086/8088CPU,其他的微處理器稱為協(xié)處理器(如8087),協(xié)助主處理器工作。

MN//MX是最?。畲竽J皆O(shè)置信號,輸入,第33腳。該輸入引腳電平的高、低決定了CPU工作在最小模式還是最大模式。當(dāng)MN//MX=1時,8086/8088工作在最小工作模式(MN)。在此方式下,全部控制信號由CPU本身提供。(主要介紹)當(dāng)MN//MX=0時,8086/8088工作在最大工作模式下。這時系統(tǒng)的控制信號由8288總線控制器提供,而不是由8086/8088直接提供。(了解)不同的工作模式只有這8個引腳不同括號內(nèi)是最大模式2.2.1最小工作模式和系統(tǒng)總線周期時序當(dāng)MN//MX=1時,接電源電壓,系統(tǒng)工作于最小工作模式。最小工作模式系統(tǒng)的系統(tǒng)總線結(jié)構(gòu)如圖2-9。

在最小工作模式下,第24~31腳的信號含義如下所述。

1./INTA(InterruptAcknowledge)中斷響應(yīng)信號輸出它用于對外設(shè)的中斷請求作出響應(yīng)。當(dāng)外部中斷源通過INTR引腳向CPU發(fā)出中斷請求信號后,如果中斷允許標(biāo)志位IF=1(即CPU處于開中斷)時,CPU在當(dāng)前指令執(zhí)行完后,響應(yīng)中斷。中斷響應(yīng)周期時序如圖2-10所示。是兩個連續(xù)的負(fù)脈沖。第1個負(fù)脈沖通知外設(shè)接口,中斷請求己獲允許;外設(shè)接口收到第2個負(fù)脈沖后,把中斷類型號放到AD0-AD7總線上,而在這兩個總線周期的其余時間里,AD0-AD7處于浮空。CPU讀入中斷類型碼后,可以在中斷矢量表中找到該外設(shè)的服務(wù)程序入口地址,從而轉(zhuǎn)入中斷服務(wù)。

2.ALE(AddressLatchEnable)地址鎖存信號輸出它是8086/8088提供給地址鎖存器8282/8283(74LS373,74LS374)的控制信號,高電平有效。在任何一個總線周期的T1狀態(tài),ALE輸出有效電平,以表示當(dāng)前在地址/數(shù)據(jù)復(fù)用總線上輸出的是地址信息,地址鎖存器將ALE作為鎖存信號,對地址進行鎖存。

3./DEN(DataEnable)數(shù)據(jù)允許信號輸出當(dāng)用8286/8287(74LS244,74LS245)作為數(shù)據(jù)總線收發(fā)器時,/DEN為收發(fā)器提供一個控制信號,表示CPU當(dāng)前準(zhǔn)備發(fā)送或接收一個數(shù)據(jù)。總線收發(fā)器將/DEN作為輸出允許信號,即在每個存儲器的訪問周期以及中斷響應(yīng)周期均為低電平;在DMA(直接內(nèi)存訪問)方式時,被浮置為高阻狀態(tài)。

4.DT//R(DataTransmit/Receive)數(shù)據(jù)收發(fā)輸出在使用8286/8287作為數(shù)據(jù)總線收發(fā)器時,DT//R信號用來控制8286/8287的數(shù)據(jù)傳送方向。當(dāng)DT//R為高電平時,則進行數(shù)據(jù)發(fā)送;當(dāng)DT//R為低電平時,則進行數(shù)據(jù)接收。在DMA方式時,它被浮置為高阻狀態(tài)。

【資料】DMA方式,Direct

Memory

Access,也稱為成組數(shù)據(jù)傳送方式。

工作原理:

一個設(shè)備接口試圖通過總線直接向另一個設(shè)備發(fā)送數(shù)據(jù)(一般是大批量的數(shù)據(jù)),它會先向CPU發(fā)送DMA請求信號。外設(shè)通過DMA的一種專門接口電路――DMA控制器(DMAC),向CPU提出接管總線控制權(quán)的總線請求,CPU收到該信號后,在當(dāng)前的總線周期結(jié)束后,會按DMA信號的優(yōu)先級和提出DMA請求的先后順序響應(yīng)DMA信號。CPU對某個設(shè)備接口響應(yīng)DMA請求時,會讓出總線控制權(quán)。于是在DMA控制器的管理下,外設(shè)和存儲器直接進行數(shù)據(jù)交換,而不需CPU干預(yù)。數(shù)據(jù)傳送完畢后,設(shè)備接口會向CPU發(fā)送DMA結(jié)束信號,交還總線控制權(quán)。

實現(xiàn)DMA傳送的基本操作如下:

(1)外設(shè)可通過DMA控制器向CPU發(fā)出DMA請求:

(2)CPU響應(yīng)DMA請求,系統(tǒng)轉(zhuǎn)變?yōu)镈MA工作方式,并把總線控制權(quán)交給DMA控制器;

(3)由DMA控制器發(fā)送存儲器地址,并決定傳送數(shù)據(jù)塊的長度;

(4)執(zhí)行DMA傳送;

(5)DMA操作結(jié)束,并把總線控制權(quán)交還CPU。

注意:

DMA請求信號可能會打斷一條指令的執(zhí)行,使它暫時停止執(zhí)行,數(shù)據(jù)傳送完畢后才恢復(fù)該指令的執(zhí)行。

用途:

DMA方式主要適用于一些高速的I/O設(shè)備。這些設(shè)備傳輸字節(jié)或字的速度非常快。對于這類高速I/O設(shè)備,如果用輸入輸出指令或采用中斷的方法來傳輸字節(jié)信息,會大量占用CPU的時間,同時也容易造成數(shù)據(jù)的丟失。而DMA方式能使I/O設(shè)備直接和存儲器進行成批數(shù)據(jù)的快速傳送。

DMA控制器或接口一般包括四個寄存器:

狀態(tài)控制寄存器、數(shù)據(jù)寄存器、地址寄存器和字節(jié)計數(shù)器。

這些寄存器在信息傳送之前需要進行初始化設(shè)置。即在輸入輸出程序中用匯編語言指令對各個寄存器寫入初始化控制字。

5.M//IO(Memory/InputandOutput)存儲器/輸入、輸出控制信號輸出如為高電平,則表示CPU和存儲器之間進行數(shù)據(jù)傳輸;如為低電平,則表示CPU和輸入/輸出設(shè)備之間進行數(shù)據(jù)傳輸。一般在前一總線周期的T4狀態(tài),M//IO就成為有效電平,然后開始一個新的總線周期,且一直保持有效電平,直到本周期的T4狀態(tài)為止。在DMA方式時,M//IO被浮置為高阻狀態(tài)。

6./WR(Write)寫信號輸出

/WR有效時,表示CPU當(dāng)前正在進行存儲器或I/O寫操作,到底為哪種寫操作,則由M//IO信號決定。對任何寫周期,/WR在T2、T3、TW期間有效。在DMA方式時,被浮置為高阻狀態(tài)。

7.HOLD(HoldRequest)總線保持請求信號輸入

8.HLDA(HoldAcknowledge)總線保持響應(yīng)信號輸出當(dāng)系統(tǒng)中CPU之外的另一個主模塊要求占用總線時,通過HOLD向CPU發(fā)一個高電平的請求信號。如果CPU允許讓出總線,就在當(dāng)前總線周期完成時,于T4狀態(tài)從HLDA腳發(fā)出一個回答信號,同時,CPU使地址/數(shù)據(jù)總線和控制總線處于浮空狀態(tài)??偩€請求部件收到HLDA信號后,就獲得了總線控制權(quán)。在此后一段時間,HOLD和HLDA都保持高電平。在總線占有部件用完總線之后,會把HOLD信號變?yōu)榈碗娖?,表示現(xiàn)己放棄對總線的占有。8086/8088收到低電平的HOLD信號后,也將HLDA變?yōu)榈碗娖?,于是CPU又重新獲得對總線的占有權(quán)。圖2-11所示為8086最小工作模式時讀和寫總線周期時序圖??刂?286收發(fā)器/BHE---高8位數(shù)線有效若在系統(tǒng)中應(yīng)用了收發(fā)器8286,則要利用控制信號DT//R和/DEN。由于是讀,故DT//R應(yīng)為低電平,/DEN信號也在T2狀態(tài)有效,8286處于反向傳送。如果存儲器或IO接口可以立即完成數(shù)據(jù)準(zhǔn)備而不需要等待狀態(tài),則T3狀態(tài)期間將數(shù)據(jù)放到系統(tǒng)數(shù)據(jù)總線上。CPU在T3狀態(tài)結(jié)束時從AD15S-AD0上讀取數(shù)據(jù)后,在T4狀態(tài)前期使/RD變?yōu)闊o效,存儲器或I/O接口檢測到這個跳變后,便認(rèn)為這次傳送結(jié)束,撤去數(shù)據(jù)。對于寫總線周期,則必須給出寫信號,因此,/WR信號在T2狀態(tài)變成有效低電平,并在撤銷地址后,立即把數(shù)據(jù)送上AD15-AD0。由于是寫操作,DT//R應(yīng)為高電平,/DEN為低電平,8286處于正向傳送。如果存儲器或I/O接口可以完成數(shù)據(jù)寫入而不需要等待狀態(tài),CPU在T3狀態(tài)前期使/WR變?yōu)闊o效并撤銷輸出的數(shù)據(jù)信號。不管是讀總線周期,還是寫總線周期,DEN在T4狀態(tài)都變?yōu)闊o效,從而關(guān)閉收發(fā)器8286。在讀總線周期或?qū)懣偩€周期中,若所使用的存儲器或外設(shè)的工作速度較慢,不能滿足上述基本時序的要求,則可利用READY信號產(chǎn)生電路產(chǎn)生READY信號并經(jīng)時鐘8284同步后加到CPU的READY線上,使CPU在T3和T4之間插入一個或幾個TW狀態(tài),來解決CPU與存儲器或外設(shè)之間的時間配合。

8086在T3狀態(tài)的開始測試READY線,若發(fā)現(xiàn)READY信號為有效高電平,T3狀態(tài)之后即進入T4狀態(tài);若發(fā)現(xiàn)READY信號為低電平,則在T3狀態(tài)結(jié)束后不進入T4狀態(tài),而插入一個TW狀態(tài)。以后在每一個TW狀態(tài)的開始都測試READY線,只有發(fā)現(xiàn)它為有效高電平時,才在這個TW狀態(tài)結(jié)束進入T4狀態(tài)。在8088最小工作模式系統(tǒng)讀寫總線周期中,M//IO為IO//M,/BHE/S7是/SS0且與IO//M同時變化,AD15~AD8為A15~A8,僅用于輸出地址,只有AD7~AD0傳送數(shù)據(jù)。其他同8086。2.2.2最大工作模式

8086/8088也都可以按最大工作模式來配置系統(tǒng)。當(dāng)MN//MX線接地時,系統(tǒng)就工作于最大工作模式了。最大工作模式和最小工作模式區(qū)別。最小模式系統(tǒng)中,

CPU的引腳直接提供所有必須的總線控制信號,這種方式適合于單處理器組成的小系統(tǒng)。在最小工作模式中,作為單處理器的8086/8088CPU通??刂浦到y(tǒng)總線,但也允許系統(tǒng)中的其他主控設(shè)備—DMA控制器占用系統(tǒng)總線。DMA控制器通過占用系統(tǒng)總線可實現(xiàn)外部設(shè)備和存儲器之間直接數(shù)據(jù)傳送。

DMA控制器雖然通過挪用總線周期實現(xiàn)外部設(shè)備與存儲器之間的直接數(shù)據(jù)傳送,提高了整個系統(tǒng)的能力,但DMA控制器卻不能執(zhí)行命令,其能力是相當(dāng)有限的。

假如系統(tǒng)中有兩個或多個同時執(zhí)行指令的處理器,這樣的系統(tǒng)就稱為多處理器系統(tǒng)。增加的處理器可以是8086/8088處理器,也可以是數(shù)字?jǐn)?shù)據(jù)處理器8087或I/O處理器8089。在設(shè)計多處理器系統(tǒng)時,除了解決對存儲器和I/O設(shè)備的控制、中斷管理、DMA傳送時總線控制權(quán)外,還必須解決多處理器對系統(tǒng)總線的爭用問題和處理器之間的通信問題。因為多個處理器通過公共系統(tǒng)總線共享存儲器和I/O設(shè)備,所以必須增加相應(yīng)的邏輯電路,以確保每次只有一個處理器占用系統(tǒng)總線。為了使一個處理器能夠把任務(wù)分配給另一個處理器或者從另一個取回執(zhí)行結(jié)果,就必須提供一種明確的方法來解決兩個處理器之間的通信。多處理器系統(tǒng)可以有效地提高整個系統(tǒng)的性能。

8086/8088的最大工作模式就是專門為實現(xiàn)多處理器系統(tǒng)而設(shè)計的。

IBMPC系列機系統(tǒng)中的微處理器工作于最大工作模式,系統(tǒng)中配置了一個作為協(xié)處理的數(shù)字?jǐn)?shù)據(jù)處理器8087、以提高系統(tǒng)數(shù)據(jù)處理的能力。

為了滿足多處理器系統(tǒng)的需求,又不增加引腳個數(shù),在最大模式下的8086/8088采用了對控制引腳譯碼的方法以產(chǎn)生更多控制信號。CPU有8個控制引腳且各自有獨立的意義,經(jīng)過分組譯碼后產(chǎn)生具體控制信號。CPU的8個控制引腳24~31的功能定義如下。

1.QS1,QS0(輸出24、25腳)指令隊列狀態(tài)輸出線。它們用來提供8086/8088內(nèi)部指令隊列的狀態(tài)。8086/8088內(nèi)部在執(zhí)行當(dāng)前指令的同時,從存儲器預(yù)先取出后面的指令,并將其放在指令隊列中,QS1和QS0便提供指令隊列的狀態(tài)信息,以便提供外部邏輯跟蹤8086/8088內(nèi)部指令序列。QS1和QS0表示的狀態(tài)情況如表2-5所示。外部邏輯通過監(jiān)視總線狀態(tài)和隊列狀態(tài),可以模擬CPU的指令執(zhí)行過程并確定當(dāng)前正在執(zhí)行哪一條指令。有了這種功能,8086/8088才能告訴協(xié)處理器何時準(zhǔn)備執(zhí)行指令。在PC中,這兩條線與8087協(xié)處理器的QS1和QS0相連。2./S2,/S1,/S0(輸出,三態(tài),26、27、28腳)狀態(tài)信號輸出線,這3位狀態(tài)的組合表示CPU當(dāng)前總線周期的操作類型。8288總線控制器接收這3位狀態(tài)信息,產(chǎn)生訪問存儲器和I/O端口的控制信號及對8282.8286的控制信號。如表2-6所示為這3位狀態(tài)信號的編碼和由8288產(chǎn)生的對應(yīng)信號。

3./LOCK(輸出,三態(tài)29)總線鎖定信號,低電平有效。CPU輸出此信號表示不允許總線上的主控設(shè)備占用總線。該信號由系統(tǒng)指令前綴LOCK使其有效,并維持到下一條指令執(zhí)行完畢為止。此外,CPUINTR引腳上的中斷請求也會使LOCK引腳從第一個INTA脈沖開始直至第二個INTA脈沖結(jié)束保持低電平。這樣就保證在中斷響應(yīng)周期之后,其他主控設(shè)備才能占用總線。4./RQ//GT1,/RQ//GT0(輸入/輸出30、31)

在最大模式下有兩對總線輸入輸出請求和應(yīng)答線,請求和應(yīng)答是共用一條線都是低電平有效,在最小模式下只有一對HOLD和HLDA

這兩條引腳都是雙向的,低電平有效,用于輸入總線請求信號和輸出總線授權(quán)信號,/RQ//GT0優(yōu)先級高于/RQ//GT1。主要用于不同處理器之間連接控制用。在IBMPC系列機系統(tǒng)中,把CPU的/RQ//GT1引腳接至8087協(xié)處理器的/RQ//GT0端,這樣8087就可根據(jù)其指令的執(zhí)行情況,用這條線向8088發(fā)出總線請求信號,以便能夠控制總線,當(dāng)8088通過這條線向8087發(fā)出總線授權(quán)信號后,8087就獲得了對總線的控制權(quán)。當(dāng)8087用完總線后,又通過此線向8088發(fā)出釋放總線控制權(quán)的控制信號,8088在下一個時鐘周期開始,便重新獲得對總線的控制權(quán)。在IMBPC系列機系統(tǒng)中,把CPU的/RQ//GT0引腳接至+5V,即使其處于無效狀態(tài)。最大工作模式和最小工作模式系統(tǒng)之間的主要區(qū)別是增加了一個控制信號轉(zhuǎn)換電路——Intel8288總線控制器。8288根據(jù)/S2,/S1和/S0狀態(tài)組合產(chǎn)生相應(yīng)的存儲器或I/O讀寫命令和總線控制命令信號,用于控制數(shù)據(jù)傳送以

溫馨提示

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

評論

0/150

提交評論