一、8086概述
Intel8086擁有四個16位的通用寄存器,也能夠當作八個8位寄存器來存取,以及四個16位索引寄存器(包含了堆棧名額)。資料寄存器通常由指令隐含地使用,針對暫存值需要複雜的寄存器配置。它提供64K8位元的輸出輸入(或32K16位元),以及固定的向量中斷。大部分的指令隻能夠存取一個記憶體位址,是以其中一個操作數必須是一個寄存器。運算結果會儲存在操作數中的一個寄存器。
Intel8086有四個記憶體區段(segment)寄存器,可以從索引寄存器來設定。區段寄存器可以讓CPU利用特殊的方式存取1MB記憶體。8086把段位址左移4位然後把它加上偏移位址。大部分的人都認為這是一個很不好的設計,因為這樣的結果是會讓各分段有重疊。盡管這樣對組合語言而言大部分被接受(也甚至有用),可以完全地控制分段,使在程式設計中使用指針(如C程式設計語言)變得困難。它導緻指針的高效率表示變得困難,且有可能産生兩個指向同一個地方的指針擁有不同的位址。更壞的是,這種方式産生要讓記憶體擴充到大于1MB的困難。而8086的尋址方式改變讓記憶體擴充較有效率。
8086處理器的時鐘頻率介于4.77MHz(在原先的IBMPC頻率)和10MHz之間。8086沒有包含浮點指令部分(FPU),但是可以通過外接數學輔助處理器來增強浮點計算能力。Intel8087是标準版本。
二、8086引腳圖及功能

⑴AD15~AD0(addressdatabus):位址/資料總線,雙向,三态。
這是一組采用分時的方法傳送位址或資料的複用引腳。根據不同時鐘周期的要求,決定目前是傳送要通路的存儲單元或I/O端口的低16位位址,還是傳送16位資料,或是處于高阻狀态。
⑵A19/S6~A16/S3(address/status):位址/狀态信号,輸出,三态。
這是采用分時的方法傳送位址或狀态的複用引腳。其中A19~A16為20位位址總線的高4位位址,S6~S3是狀态信号。S6表示CPU與總線連接配接的情況,S5訓示目前中斷允許标志IF的狀态。S4,S3的代碼組合用來指明目前正在使用的段寄存器。S4,S3的代碼組合及對應段寄存器的情況。
⑶BHE(低)/S7(bushighenable/status):允許總線高8位資料傳送/狀态信号,輸出,三态。
為總線高8位資料允許信号,當低電平有效時,表明在高8位資料總線D15~D8上傳送1個位元組的資料。S7為裝置的狀态信号。
⑷RD/(read):讀信号,輸出,三态,低電平有效。
信号低電平有效時,表示CPU正在進行讀存儲器或讀I/O端口的操作。
⑸READY(ready):準備就緒信号,輸入,高電平有效。
READY信号用來實作CPU與存儲器或I/O端口之間的時序比對。當READY信号高電平有效時,表示CPU要通路的存儲器或I/O端口已經作好了輸入/輸出資料的準備工作,CPU可以進行讀/寫操作。當READY信号為低電平時,則表示存儲器或I/O端口還未準備就緒,CPU需要插入若幹個“TW狀态”進行等待。
⑹INTR(interruptrequest):可屏蔽中斷請求信号,輸入,高電平有效。
8086CPU在每條指令執行到最後一個時鐘周期時,都要檢測INTR引腳信号。INTR為高電平時,表明有I/O裝置向CPU申請中斷,若IF=1,CPU則會響應中斷,停止目前的操作,為申請中斷的I/O裝置服務。
⑺TEST/(test):等待測試控制信号,輸入,低電平有效。
信号用來支援構成多處理器系統,實作8086CPU與協處理器之間同步協調的功能,隻有當CPU執行WAIT指令時才使用。
⑻NMI(non-maskableinterrupt):非屏蔽中斷請求信号,輸入,高電平有效。
當NMI引腳上有一個上升沿有效的觸發信号時,表明CPU内部或I/O裝置提出了非屏蔽的中斷請求,CPU會在結束目前所執行的指令後,立即響應中斷請求。
⑼RESET(reset):複位信号,輸入,高電平有效。
RESET信号有效時,CPU立即結束現行操作,處于複位狀态,初始化所有的内部寄存器。複位後各内部寄存器的狀态,當RESET信号由高電平變為低電平時,CPU從FFFF0H位址開始重新啟動執行程式。
⑽CLK(clock):時鐘信号,輸入。
CLK為CPU提供基本的定時脈沖信号。8086CPU一般使用時鐘發生器8284A來産生時鐘信号,時鐘頻率為5MHz~8MHz,占空比為1:3。
⑾VCC電源輸入引腳。
8086CPU采用單一+5V電源供電。
⑿GND:接地引腳。
⒀MN/MX/(minimum/maximum):最小/最大模式輸入控制信号。
引腳用來設定8086CPU的工作模式。當為高電平(接+5V)時,CPU工作在最小模式;當為低電平(接地)時,CPU工作在最大模式。
三、8086工作模式
1、最小模式
用于由8086單一微處理器構成的小系統。在這種方式下,由8086CPU直接産生小系統所需要的全部控制信号。器系統特點是:總線控制邏輯直接由8086CPU産生和控制。若有CPU以外的其他子產品想占用總線,則可以向CPU提出請求,在CPU允許并響應的情況下,該子產品才可以獲得總線控制權,使用完後,又将總線控制權還給CPU。
當引腳接高電平時,CPU工作于最小模式。此時,引腳信号24~31的含義及其功能如下。
⑴M/IO/(memoryI/Oselect):存儲器、I/O端口選擇控制信号。
信号指明目前CPU是選擇通路存儲器還是通路I/O端口。為高電平時,通路存儲器,表示目前要進行CPU與存儲器之間的資料傳送。為低電平時,通路I/O端口,表示目前要進行CPU與I/O端口之間的資料傳送。
⑵WR/(write):寫信号,輸出,低電平有效。
信号有效時,表明CPU正在執行寫總線周期,同時由信号決定是對存儲器還是對I/O端口執行寫操作。
⑶INTA/(interruptacknowledge):可屏蔽中斷響應信号,輸出,低電平有效。
CPU通過信号對外設提出的可屏蔽中斷請求做出響應。為低電平時,表示CPU已經響應外設的中斷請求,即将執行中斷服務程式。
⑷ALE(addresslockenable):位址鎖存允許信号,輸出,高電平有效。
CPU利用ALE信号可以把AD15~AD0位址/資料、A19/S6~A16/S3位址/狀态線上的位址資訊鎖存在位址鎖存器中。
⑸DT/(datatransmitorreceive):資料發送/接收信号,輸出,三态。
DT/信号用來控制資料傳送的方向。DT/為高電平時,CPU發送資料到存儲器或I/O端口;DT/為低電平時,CPU接收來自存儲器或I/O端口的資料。
⑹DEN/(dataenable):資料允許控制信号,輸出,三态,低電平有效。
信号用作總線收發器的選通控制信号。當為低電平時,表明CPU進行資料的讀/寫操作。
⑺HOLD(busholdrequest):總線保持請求信号,輸入,高電平有效。
在DMA資料傳送方式中,由總線控制器8237A發出一個高電平有效的總線請求信号,通過HOLD引腳輸入到CPU,請求CPU讓出總線控制權。
⑻HLDA(holdacknowledge):總線保持響應信号,輸出,高電平有效。
HLDA是與HOLD配合使用的聯絡信号。在HLDA有效期間,HLDA引腳輸出一個高電平有效的響應信号,同時總線将處于浮空狀态,CPU讓出對總線的控制權,将其傳遞給申請使用總線的8237A控制器使用,總線使用完後,會使HOLD信号變為低電平,CPU又重新獲得對總線的控制權。
2、最大模式
用于實作多處理機系統,其中,8086CPU被稱為主處理器,其他處理器被稱為協處理器。在這種方式下,8086CPU不直接提供用于存儲器或I/O讀寫的讀寫指令等控制信号,而是将目前要執行的傳送操作類型編碼為3個狀态位輸出,由總線控制器8288對狀态信号進行譯碼産生相應控制信号。最大模式系統的特點是:總線控制邏輯由總線控制器8288産生和控制,即8288将主處理器的狀态和信号轉換成系統總線指令和控制信号。協處理器隻是協助主處理器完成某些輔助工作,即被動的接受并執行來自主處理器的指令。和8086配套使用的協處理器有兩個:一個是專用于數值計算的協處理器8087,另一個是專用于輸入輸出操作的協處理器8089。8087通過硬體實作高精度整數浮點數運算。8089有其自身的一套專門用于輸入輸出操作的指令系統,還可帶局部存儲器,可以直接為輸入輸出裝置服務。增加協處理器,使得浮點運算和輸入輸出操作不再占用8086時間,進而大大提高了系統的運作效率。
當引腳接低電平時,CPU工作于最大模式。此時,引腳信号24~31的含義及其功能如下。
⑴S2,S1,S0(statussignals):總線周期狀态信号,輸出,低電平有效。
⑵RQ/,GT/(request/grant):總線請求允許信号輸入/總線請求允許輸出信号,雙向,低電平有效。
該信号用以取代最小模式時的HOLD/HLDA兩個信号的功能,是特意為多處理器系統而設計的。當系統中某一部件要求獲得總線控制權時,就通過此信号線向8086CPU發出總線請求信号,若CPU響應總線請求,就通過同一引腳發回響應信号,允許總線請求,表明8086CPU已放棄對總線的控制權,将總線控制權交給提出總線請求的部件使用。RQ/GT0優先級高于RQ/GT1。
⑶LOCK/(lock)總線封鎖信号,輸出,低電平有效。
信号有效時,表示此時8086CPU不允許其他總線部件占用總線。
⑷QS1,QS0(queuestatus):指令隊列狀态信号,輸出。
QS1和QS0信号的組合可以訓示總線接口部件BIU中指令隊列的狀态,以便其他處理器監視、跟蹤指令隊列的狀态。
四、8086結構
總線接口單元(BIUbusinterfaceunit)
總線接口部件由下列各部分組成
⑴4個段位址寄存器:
CS(codesegment)——16位的代碼段寄存器;
DS(datasegment)——16位的資料段寄存器;
ES(extrasegment)——16位的擴充段寄存器;
SS(stacksegment)——16位的堆棧段寄存器;
⑵16位的指令指針寄存器IP;
⑶20位的位址加法器;
⑷6位元組的指令隊列緩沖器。
執行單元
執行部件由下列幾個部分組成:
⑴8個通用寄存器:即AX、BX、CX、DX,BP,SP,SI,DI;
其中,4個資料寄存器:AX、BX、CX、DX;
2個位址指針寄存器:BP(basepointer),SP(stackpointer);
2個變址寄存器:SI(sourceindex),DI(destinationindex)[2];
⑵标志寄存器FR(flagsregister);
⑶算術邏輯單元ALU(arithmeticlogicunit)。
EU負責全部指令的執行,同時向BIU輸出資料(操作結果),并對寄存器和标志寄存器進行管理。在ALU中進行16位運算,資料傳送和處理均在EU控制下執行。
五、8086系統組成
8086是一種微處理器,再加上必須的支援晶片,如時鐘發生器,位址鎖存器,總線驅動器,存儲器和I/O接口等,才能構成一台完整的微型計算機。根據外部裝置的數量和系統複雜程度,8086可以選用兩種系統構成模式,最小模式和最大模式。最小模式是單CPU系統,在這種系統中,8086的MN/MX引腳接高電平,系統全部的控制信号都直接由CPU提供。最大模式是多CPU系統,此時MN/MX引腳接低電平,必須通過8288總線控制器對CPU的狀态資訊進行譯碼才能産生系統必須的控制信号。
最小模式系統構成如圖所示。這時8086的MN/MX引腳接至VCC,它直接産生存儲器和I/O端口的讀寫指令,如IO/M,RD,WR,INTA,直接産生位址鎖定信号ALE,控制資料收發器的控制信号DT/R,DEN.
1.位址鎖存
8086的AD15~~AD0是位址/資料複用線,即CPU與存儲器進行資訊交換時,首先在T1狀态,先由CPU送出通路存儲單元的位址資訊到AD15~~AD0上,随後又用在些線來傳送資料是以在資料送上總線以前,必須先将位址鎖存起來。可用8282或74LS373鎖存8086的單向位址AD15~~AD0.圖7-9中使用三片8282,這是因為8282隻具有8位鎖存功能,而8086具有20位位址和一根BHE信号。若系統存儲器容量較小,使用不到20位位址資訊,也可隻用2片8282.圖中OE端接地,使鎖存器永遠處于允許輸出狀态。引腳STB接8086的ALE輸出。在總線周期T1狀态,ALE上出現正脈沖,它的下降沿将8282輸入端的位址資訊存入鎖存器,并由輸出端送入位址總線。
2.雙向資料總線驅動器
CPU可以直接将資料發送到資料總線上。而無需鎖存。為了增加總線負載能力,CPU資料總線一般要加上驅動器,且要求雙向驅動器,一般采用8位雙向驅動器8286或74LS245.由于8086資料總線是16位的,是以要用2片8286.8286的Ai引腳接CPU的ADi,其Di引腳接到系統資料總線D1上,并将8086的DT/R接8286的T引腳,當DT/R為高電平時,資料從CPU發送到資料總線上.DT/R為低電平時,CPU從資料總線上接收資料.8286的OE腳接8086的DEN腳。當8086的DEN為低電平時,才允許資料輸入或輸出。
3.時鐘發生器/驅動器
8086所需時鐘脈沖CLK由8284提供.8284輸出時鐘CLK的頻率,取決X1,X2跨接石英晶體的頻率。除此以外,8284還向8086提供定時和寬度符合要求的RESET複位信号及符合要求的READY信号。
4.存儲器部件
8086能直接尋址1MB存儲空間。這個存儲空間分為兩個512KB存儲體。一個存儲體由奇位址單元組成,用于存儲16資料的高位元組,另一個存儲體由偶位址單元組成,用于存儲16位資料低位元組。前者稱為奇位址存儲器,後者稱為偶位址存儲體。偶位址存儲體的8位資料總線接CPU的資料總線D7~~D0,而奇位址存儲體8位資料線接資料總線D15~~D8.位址線A19~~A1同時接到兩個存儲體,而A0作為偶位址選中信号即A0=0時,選中偶存儲體.BHE作為奇位址片選信号,BHE=0時選中奇存儲體。是以兩個存儲體可以同時讀出或寫入,也可單獨選中一個存儲體。