少妇被又大又粗又爽毛片久久黑人,国产无遮挡又黄又爽免费视频,18禁男女爽爽爽午夜网站免费,成全动漫影视大全在线观看国语

2.1 Intel 8086 16位微處理器

第2章 微處理器及其結構

摘要 微處理器是微型計算機的核心。本章首先介紹16位Intel 8086微處理器的內部結構、寄存器結構、外部引腳及其功能,然后重點講述32位Intel 80486微處理器的內部結構、寄存器結構、外部引腳及其功能,并對Intel 80486微處理器的工作模式和總線操作時序進行詳細講解。

2.1 Intel 8086 16位微處理器

Intel 8086微處理器是Intel公司于1978年6月推出的16位微處理器,采用高性能的N溝道、耗盡型硅柵工藝(NMOS)制造,封裝在標準40引腳的雙列直插式(DIP)管殼內,內部包含約29000個晶體管。8086微處理器有16位數據總線和20位地址總線,直接尋址的存儲空間為1MB(220),用其中的16位地址總線,可以訪問64KB(216)的輸入/輸出端口。8086微處理器工作時鐘頻率有3種,8086微處理器為5MHz,8086-1微處理器為8MHz,8086-2微處理器為10MHz。8086微處理器還提供了一套完整的、功能強大的指令系統。

2.1.1 Intel 8086微處理器內部結構

8086微處理器的主要特點:16位微處理器,數據總線16位,地址總線20位,可尋址1MB(220)存儲空間,時鐘頻率為5~10MHz。8086微處理器的內部結構由執行單元(EU,execution unit)和總線接口部件(BIU,bus interface unit)兩部分組成,如圖2.1所示。

1.總線接口部件(BIU)

BIU負責8086微處理器與存儲器和外設之間的信息傳送。具體地說,BIU負責從內存的指定區域取出指令,送至指令隊列排隊。在執行指令時所需要的操作數,也由BIU從內存的指定區域取出,傳送給執行部件(EU)去執行。圖2.1虛線右側展示出BIU的組成結構。BIU包含一個地址加法器、一組16位的段寄存器、一個16位的指令指針IP、一個6字節的指令隊列緩沖器以及總線控制電路。

(1)地址加法器和段寄存器

由于8086微處理器具有20位地址總線,可以方便地尋址220=1M字節的內存單元。但是在CPU內部只有16位的寄存器,這就無法保存和傳送每個存儲單元的20位地址信息。為了正確地訪問存儲器,8086采用了分段結構,將1MB的內存空間劃分為若干個邏輯段,在每個邏輯段中使用16位段基址和16位偏移地址進行尋址,段寄存器用來存放各段的段基址。利用BIU的地址加法器計算并形成CPU所要訪問的存儲單元地址(20位)或I/O端口地址(16位)。有關存儲器的分段、段寄存器的使用以及存儲器地址的形成將在2.1.4節中予以詳細介紹。

圖2.1 8086微處理器內部結構

(2)指令隊列緩沖器

指令隊列緩沖器是6字節的“先進先出”RAM存儲器,用來按順序存放CPU要執行的指令代碼,并送到EU中去執行。EU總是從指令隊列的輸出端取指令,每當指令隊列中存滿一條指令后,EU就立即開始執行。當指令隊列中前兩條指令字節被EU取走后,BIU就自動執行總線操作,讀出指令并填入指令隊列中。當程序發生跳轉時,BIU立即清除原來指令隊列中的內容并重新開始取指令代碼。

(3)總線控制電路

總線控制電路主要負責產生總線控制信號。例如,產生對存儲器的讀/寫控制信號和I/O端口的讀/寫控制信號等。

2.執行部件(EU)

圖2.1虛線左邊展示出EU的組成結構。EU負責指令的執行。它從BIU的指令隊列中取出指令、分析指令并執行指令,而執行指令過程中所需要的數據以及執行的結果也都由EU向BIU發出請求,再由BIU對存儲器或外設進行存取操作來完成。EU主要由算術邏輯單元(ALU)、數據暫存寄存器、標志寄存器(FR)、通用寄存器(AX、BX、CX、DX)、指針寄存器(SP和BP)、變址寄存器(SI和DI)、指令譯碼器和EU控制電路組成。

(1)算術邏輯單元(ALU)

ALU是一個16位的算術邏輯運算部件,用來對操作數進行算術運算和邏輯運算,也可以按指令的尋址方式計算出CPU要訪問的內存單元的16位偏移地址。

(2)數據暫存寄存器

數據暫存寄存器是一個16位的寄存器,它的主要功能是暫時保存數據,并向ALU提供參與運算的操作數。

(3)EU控制電路

EU控制電路接收從BIU指令隊列中取出的指令代碼,經過分析、譯碼后形成各種實時控制信號,對各個部件進行實時操作。

各種寄存器的說明見2.1.2節。

2.1.2 Intel 8086微處理器寄存器結構

8086微處理器中包含4個通用寄存器、4個指針和變址寄存器、4個段寄存器和1個標志寄存器。8086微處理器寄存器組結構如圖2.2所示。

圖2.2 8086微處理器寄存器組

1.通用寄存器(general purpose registers)

通用寄存器組包括4個16位的寄存器AX、BX、CX、DX。它們既可以作為16位寄存器使用,也可以分為兩個8位寄存器使用,即高8位寄存器AH、BH、CH、DH和低8位寄存器AL、BL、CL、DL。這些數據寄存器既可以作為算術、邏輯運算的源操作數,向ALU提供參與運算的原始數據,也可以作為目標操作數,保存運算的中間結果或最后結果。在有些指令中,這些寄存器具有特定的用途,例如,AX作為累加器,BX作為基址寄存器,CX作為計數寄存器,DX作為數據寄存器。

2.指針及變址寄存器(pointer and index registers)

指針及變址寄存器包括兩個指針寄存器SP(stack pointer)、BP(base pointer)和兩個變址寄存器SI(source index)、DI(destination index)。這組寄存器通常用來存放存儲器單元的16位偏移地址(即相對于段起始地址的距離,簡稱偏移地址)。

(1)指針寄存器

在8086 微處理器內存中有一個按照“先進后出”原則進行數據操作的區域,稱為堆棧。CPU對堆棧的操作有兩種,壓入(PUSH)操作和彈出(POP)操作。在進行堆棧操作的過程中,SP用來指示堆棧棧頂的偏移地址,稱為堆棧指針;而BP則用來存放位于堆棧段中的一個數據區的“基址”的偏移量,稱為基址指針。

(2)變址寄存器

SI、DI稱為變址寄存器,它們用來存放當前數據所在存儲單元的偏移地址。在串操作指令中,SI用來存放源操作數地址的偏移量,稱為源變址寄存器;DI用來存放目標操作數地址的偏移量,稱為目的變址寄存器。

3.段寄存器(segment registers)

在8086微處理器中有4個16位的段寄存器:CS(code segment)、DS(data segment)、SS(stack segment)和ES(extra segment),這些寄存器指明了一個特定的現行段,用來存放各段的段基址。當用戶用指令設定了它們的初值后,實際上已經確定了一個64K的存儲區段。其中,代碼段寄存器(CS)用來存放當前使用的代碼段的段基址,用戶編制的程序必須存放在代碼段中,CPU將會依次從代碼段取出指令代碼并執行;數據段寄存器(DS)用來存放當前使用的數據段的段基址,程序運行所需要的原始數據以及運算的結果應存放在數據段中;附加段寄存器(ES)用來存放當前使用的附加段的段基址,它通常也用來存放數據,在執行數據串操作指令時,用來存放目標數據串(此時DS用來存放源數據串);堆棧段寄存器(SS)用來存放當前使用的堆棧段的段基址,所有堆棧操作的數據均保存在這個段中。

4.指令指針(instruction pointer)

指令指針IP為16位寄存器,IP的內容總是指向BIU將要取的下一條指令代碼的16位偏移地址。當取出1字節指令代碼后,IP自動加1并指向下一條指令代碼的偏移地址。它的內容是由BIU來修改的,用戶不能通過指令預置或修改IP的內容,但有些指令的執行可以修改它的內容,也可以及將其內容壓入堆棧或由堆棧中彈出。

5.標志寄存器(flag register)

8086微處理器中有一個16位的標志寄存器(FR),但只使用了9位。其中6位為狀態標志位,用來反映算術運算或邏輯運算結果的狀態;3位為控制位,用來控制CPU的操作。8086 CPU標志寄存器各位的定義如圖2.3所示。

圖2.3 8086 CPU標志寄存器

(1)狀態標志位

CF(carry flag):進位標志。表示本次加法或減法運算中最高位(D7或D15)產生進位或借位的情況。CF=1表示有進位,CF=0表示無進位(減法運算時表示借位情況)。

PF(parity flag):奇偶校驗標志。表示本次運算結果中包含1的個數。PF=1表示有偶數個1,PF=0表示有奇數個1。

AF(auxiliary carry flag):輔助進位標志。表示加法或減法運算結果中D3位向D4位產生進位或借位的情況。AF=1表示有進位,PF=0表示無進位(減法時表示借位情況)。

ZF(zero flag):零標志。表示當前的運算結果是否為0。ZF=1表示運算結果為0,ZF=0表示運算結果不為0。

SF(sign flag):符號標志。表示運算結果的正、負情況。SF=1表示運算結果為負,SF=0表示運算結果為正。

OF(overflow flag):溢出標志。表示運算過程中產生溢出的情況。OF=1表示當前正在進行的補碼運算有溢出,OF=0表示無溢出。

(2)控制標志位

DF(direction flag):方向標志。用來設定和控制字符串操作指令的步進方向。DF=1時,串操作過程中的地址會自動遞減1;DF=0時,地址自動遞增1。

IF(interrupt enable flag):中斷允許標志。用來控制可屏蔽中斷的標志位。IF=1時,開中斷,CPU可以接受可屏蔽中斷請求;IF=0時,關中斷,CPU不能接受可屏蔽中斷請求。

TF(trap flag):單步標志。用來控制CPU進入單步方式。TF=1時,CPU處于單步工作方式,每執行完一條指令就自動產生一次內部中斷;TF=0時,CPU不能以單步方式工作。CPU的單步工作方式為程序調試提供了一種重要的方法。

2.1.3 Intel 8086微處理器引腳信號及功能

8086微處理器是40引腳雙列直插式芯片,微處理器通過這些引腳可以和存儲器、I/O接口、外部控制管理部件以及其他微處理器相互交換信息。8086微處理器的引腳信號如圖2.4所示。

圖2.4 8086微處理器的引腳信號

在學習8086微處理器的引腳信號前,必須弄清微處理器最小模式和最大模式的概念。所謂最小模式,是指在系統中只有一個8086微處理器,所有的總線控制信號都直接由8086微處理器產生,因此,系統中的總線控制電路被減到最少。最大模式是相對最小模式而言的。在最大模式下,系統中總是包含兩個或多個微處理器,其中一個主處理器就是8086,其他的處理器稱為協處理器,它們是協助主處理器工作的,例如數值運算協處理器8087,輸入/輸出協處理器8089。8086微處理器工作在最大模式還是最小模式下,完全由硬件決定。當CPU處于不同工作模式時,其部分引腳的功能是不同的。

1.兩種模式下功能相同的引腳

(1)AD15~AD0(address data):地址/數據總線,雙向,三態。

這是一組采用分時方式傳送地址或數據的復用引腳。根據不同時鐘周期的要求,決定當前是傳送要訪問的存儲單元或I/O接口的低16位地址,還是傳送16位數據,或是處于高阻狀態。

(2)A19/S6~A16/S3(address/status):地址/狀態信號,輸出,三態。

這是采用分時的方法傳送地址或狀態的復用引腳。其中,A19~A16為20位地址總線的高4位地址;S6~S3是狀態信號,S6表示CPU與總線連接的情況,S5指示當前中斷允許標志IF的狀態,S4、S3的代碼組合用來指示當前正在使用的段寄存器,它們對應段寄存器的情況見表2.1。

表2.1 S4、S3的代碼組合及其對應段寄存器情況表

(3)15~D8上傳送1字節的數據。S7為設備的狀態信號。

(4)(5)READY(ready):準備就緒信號,輸入,高電平有效。

READY信號用來實現CPU與存儲器或I/O端口之間的時序匹配。當READY信號高電平有效時,表示CPU要訪問的存儲器或I/O端口已經做好了輸入/輸出數據的準備工作,CPU可以進行讀/寫操作。當READY信號為低電平時,表示存儲器或I/O端口還未準備就緒,CPU需要插入“TW狀態”進行等待。

(6)INTR(interrupt request):可屏蔽中斷請求信號,輸入,高電平有效。

CPU在每條指令執行到最后一個時鐘周期時,都要檢測INTR引腳信號。當INTR為高電平時,表明有I/O設備向CPU申請中斷。若標志寄存器中IF=1,CPU則會響應中斷,在當前指令操作結束后,為申請中斷的I/O設備服務。

(7)(8)NMI(non-maskable interrupt):非屏蔽中斷請求信號,輸入,高電平有效。

當NMI引腳上有一個上升沿有效的觸發信號時,表明CPU內部或I/O設備提出了非屏蔽的中斷請求,CPU會在結束當前所執行的指令后,立即響應中斷請求。

(9)RESET(reset):復位信號,輸入,高電平有效。

RESET信號有效時,CPU立即結束現行操作,處于復位狀態,初始化所有的內部寄存器。復位后各內部寄存器的狀態見表2.2。當RESET信號由高電平變為低電平時,CPU從FFFF0H地址開始重新啟動執行程序。

表2.2 系統復位后8086微處理器內部寄存器狀態表

(10)CLK(clock):時鐘信號,輸入。

CLK為CPU提供基本的定時脈沖信號。8086微處理器一般使用時鐘發生器8284A來產生時鐘信號,時鐘頻率為5~8MHz,占空比為1:3。

(11)VCC電源輸入引腳。

8086微處理器采用單一+5V電源供電。

(12)GND:接地引腳。

(13)2.CPU工作于最小模式時使用的引腳信號

當引腳(1)(2)(3)CPU通過(4)ALE(address lock enable):地址鎖存允許信號,輸出,高電平有效。

CPU利用ALE信號可以把AD15~AD0地址/數據、A19/S6~A16/S3地址/狀態線上的地址信息鎖在地址鎖存器中。

(5)(6)(7)HOLD(bus hold request):總線保持請求信號,輸入,高電平有效。

在DMA數據傳送方式中,由總線控制器8237A發出一個高電平有效的總線請求信號,通過HOLD引腳輸入CPU,請求CPU讓出總線控制權。

(8)HLDA(hold acknowledge):總線保持響應信號,輸出,高電平有效。

HLDA是與HOLD配合使用的聯絡信號。在HLDA有效期間,HLDA引腳輸出一個高電平有效的響應信號,同時總線將處于浮空狀態,CPU讓出對總線的控制權,將其交付給申請使用總線的8237A控制器使用,總線使用完后,會使HOLD信號變為低電平,CPU又重新獲得對總線的控制權。

3.CPU工作于最大模式時使用的引腳信號

當引腳(1)它們表明當前總線周期所進行的操作類型。(2)該信號用以取代最小模式時的HOLD/HLDA兩個信號的功能,是特意為多處理器系統設計的。當系統中某一部件要求獲得總線控制權時,通過此信號線向CPU發出總線請求信號,若CPU響應總線請求,則通過同一引腳發回響應信號,允許總線請求,表明CPU已放棄對總線的控制權,將總線控制權交給提出總線請求的部件使用。引腳2.3 (3)(4)QS1,QS0(queue status):指令隊列狀態信號,輸出。

QS1和QS0信號的組合可以指示總線接口部件BIU中指令隊列的狀態,以便其他處理器監視、跟蹤指令隊列的狀態。QS1,QS0的代碼組合與隊列狀態見表2.4。

表2.4 QS1,QS0代碼組合與隊列狀態表

2.1.4 Intel 8086微處理器的存儲器組成及輸入/輸出結構

1.8086微處理器的存儲器組成

8086微處理器有20條地址線,可直接尋址1MB的存儲空間,每一個存儲單元可以存放1字節(8位)二進制信息。為了便于對存儲器進行存取操作,每一個存儲單元都有一個唯一的地址與之對應,其地址范圍用十進制數表示為0~1048575,用十六進制數表示為00000H~FFFFFH,共有1048576個存儲單元。將存儲器按照地址順序排列如圖2.5所示。

圖2.5 8086微處理器存儲單元及其地址

在進行數據存取操作時,數據可以是字節、字、雙字,甚至是多字,它們分別占用一個存儲單元、兩個存儲單元、四個存儲單元和多個存儲單元。

2.存儲器分段及物理地址的形成

(1)存儲器的分段

8086微處理器將1MB存儲器劃分為若干個區段以后,每個段包含216字節(即64KB),并且每個段的首地址都是一個可以被16整除的數(即段的起始地址的最低4位為0)。在任意時刻,程序能很方便地訪問4個分段的內容。這4個分段又被稱為4個現行可尋址段,即代碼段、數據段、堆棧段和附加段。將這4個現行段的起始地址的最高16位地址值(用十六進制數表示為4位)分別存放在CS、DS、SS和ES段寄存器中,稱為現行段的段基址。利用指令可以任意設定段寄存器的內容。段基址一旦確定,對應64KB的存儲區段就完全確定下來,程序可以從4個段寄存器給出的邏輯段中存取指令代碼和數據。

存儲空間的分段方式可以有多種,段與段之間可以部分重疊、完全重疊或者完全分離。存儲器分段示例如圖2.6所示。

圖2.6 8086微處理器存儲器分段示例

若已知當前有效的代碼段、數據段、附加段和堆棧段的段基址分別為1000H,3501H,7F3BH和EAB0H,那么它們在存儲器中的分布情況如圖2.7所示。由圖可見,1MB的存儲器除已經被定義的4個段外,還剩下一些空白(未用)區域,如果要用到這些區域,則必須首先改變相應段寄存器的內容,重新設置4個段寄存器。一旦加以定義,就可以通過段寄存器來訪問不同的段。

圖2.7 8086微處理器存儲器分布情況

(2)存儲器中的邏輯地址和物理地址

存儲器采用分段結構以后,對存儲器的訪問可以使用兩種地址,即邏輯地址和物理地址。

邏輯地址由段基址(存放在段寄存器中)和偏移地址(由尋址方式提供)兩部分構成,它們都是無符號的16位二進制數。邏輯地址是用戶進行程序設計時采用的地址。

1MB內存空間中每個存儲單元的物理地址都是唯一的,由20位二進制數構成。物理地址是CPU訪問內存時使用的地址。當用戶通過編寫程序將16位邏輯地址送入CPU的總線接口部件BIU時,地址加法器通過地址運算將其變換為20位的物理地址。計算20位物理地址的公式為:

物理地址=段基址×16+偏移地址

式中,段基址×16的操作常常通過將16位段寄存器的內容(二進制形式)左移4位,末位補4個0來實現。8086微處理器存儲器物理地址的形成過程如圖2.8所示。

【例2.1】 數據段寄存器DS=2100H,試確定該存儲區段物理地址的范圍。

首先需要確定該數據區段中第一個存儲單元和最后一個存儲單元的16位偏移地址。因為一個邏輯段的最大容量為64KB,所以第一個存儲單元的偏移地址為0,最后一個存儲單元的偏移地址為FFFFH。該數據區段由低至高相應存儲單元的偏移地址為0000H~FFFFH。

存儲區的首地址=DS×16+偏移地址=2100H×16+0000H=21000H

存儲區的末地址=DS×16+偏移地址=2100H×16+FFFFH=30FFFH

從例2.1可知,該數據段的物理地址范圍是21000H~30FFFH,如圖2.9所示。有時也采用“段基址﹕偏移地址”這種形式來表示存儲單元的地址。

【例2.2】 ① 當CS=5A00H,偏移地址=2245H時,求物理地址。

     ② 當CS=4C82H,偏移地址=FA25H時,求物理地址。

圖2.8 8086微處理器存儲器物理地址形成示意圖

圖2.9 數據段地址范圍示意圖

根據物理地址的計算公式,可得:

  題①的物理地址=CS×16+偏移地址=5A00H×16+2245H=5C245H

  題②的物理地址=CS×16+偏移地址=4C82H×16+FA25H=5C245H

從例2.2可以看出:在題①和②中給定的段基址和偏移地址各不相同,而計算所得的物理地址卻是一樣的,均為5C245H。這說明,對于存儲器中的任意存儲單元來說,物理地址是唯一的,而邏輯地址卻有無數組。不同的段基址和相應的偏移地址可以形成同一個物理地址。

(3)按信息特征分段存儲與分段尋址

8086微處理器在存儲器中存儲的信息包括程序指令、數據及計算機運行的狀態等。為了便于尋址和操作,這些信息在存儲器中分段存儲,因而將存儲器劃分為:程序區、數據區和堆棧區,并通過段寄存器CS、DS、ES和SS進行尋址。

① 對程序區的訪問

專門用于存放程序指令代碼的存儲區域稱為程序區。訪問程序區時,段基址由代碼段寄存器CS指定,IP的內容表示段內的偏移地址。當前所取指令的物理地址為:

物理地址=CS×16+IP

要訪問不同的程序區時,只需要修改代碼段寄存器CS的內容即可。

② 對數據區的訪問

用來存放數據信息的區域稱為數據區。這些數據信息包括CPU要處理的原始數據、運算的中間結果和最后結果。訪問數據區時,DS的內容用來表示數據段的段基址,而偏移地址由指令的尋址方式所求得的有效地址(EA,effective address)來確定。其物理地址為:

物理地址=DS×16+EA

③ 對堆棧區的訪問

堆棧是特殊的存儲區域,用來存放由PUSH指令壓入的需要進行保護的數據和狀態信息。訪問堆棧區時,用堆棧段寄存器SS指示堆棧段的段基址,SP的內容表示棧頂的偏移地址。BP的內容表示棧底的偏移地址。堆棧操作時存儲單元的物理地址為:

物理地址=SS×16+SP

④ 字符串操作

在存儲器中,字符串操作是指對兩個數據塊進行傳送或比較,這就需要指定傳送的源數據區和目標數據區。通常用DS作為源數據區的段寄存器保存段基址,源變址寄存器SI的內容表示偏移地址,用ES作為目標數據區的段寄存器保存段基址,目的變址寄存器DI表示偏移地址。地址的計算公式為:

源數據區物理地址=DS×16+SI

目標數據區物理地址=ES×16+DI

3.8086微處理器的輸入/輸出結構

在8086微機系統中,配置了一定數量的輸入/輸出設備,而這些設備必須通過輸入/輸出接口芯片與CPU相連接。每個I/O接口芯片都有一個或幾個I/O端口,像存儲器一樣,每個I/O端口都有一個唯一的端口地址,以供CPU訪問。

由于8086用地址總線的低16位A15~A0來表示端口地址,因此8086 CPU可以訪問的I/O端口地址共有64K(65536)個,其地址為0000H~FFFFH。這些端口均為8位端口(即通過該端口一次輸入/輸出一個字節信息)。對端口的尋址有直接尋址方式和間接尋址方式兩種。直接尋址適用于地址在00H~FFH范圍內的端口尋址。間接尋址適用于地址在0100H~FFFFH范圍內的端口尋址(所有端口均可采用間接尋址方式)。

葉寧羅舞蘇傾城無廣告彈窗 逆轉成神孟凡古心兒 虞初新志 書中自有顏如玉 女兒拔掉了我氧氣管林川秦夢瑩大結局 我的絕色美女房客 深藏不露 第一刺客女婿修羅天煞 我的重返人生 太初

本站所有小說均由搜索引擎轉碼而來,只為讓更多讀者欣賞,本站不保存小說內容及數據,僅作宣傳展示。

Copyright © 2024 噠噠看書網sitemap