第三章-80x86微处理器
主要內(nèi)容:
1、80x86微處理器簡介
2、8086/8088微處理器
3、8086/8088存儲器和I/O組織
學習要求:
一,80x86微處理器簡介
80x86微處理器是美國Intel 公司生產(chǎn)的系列微處理器。該公司成立于1968年,1969年就設計了4位的4004 芯片,1973年開發(fā)出8位的8080芯片,1978年正式推出16位的8086微處理器芯片,由此開始了Intel公司的80x86系列微處理器的生產(chǎn)歷史。本節(jié)簡要介紹Intel公司80x86系列微處理器的發(fā)展過程及其特性。
下面通過對表中有關技術數(shù)據(jù)的分析來說明Intel 80x86系列微處理器的發(fā)展情況。
表中關鍵詞:
集成度:指CPU芯片中所包含的晶體管數(shù),單位為萬/片;
主頻:指芯片所使用的主時鐘頻率,它直接影響計算機的運行速度;
數(shù)據(jù)總線:是計算機中各個部件間進行數(shù)據(jù)傳送時的公共通道;
內(nèi)數(shù)據(jù)總線寬度:指CPU芯片內(nèi)部數(shù)據(jù)傳送的寬度(位數(shù));
外數(shù)據(jù)總線寬度:指CPU與外部交換數(shù)據(jù)時的數(shù)據(jù)寬度;
注:數(shù)據(jù)總線位數(shù)越多,數(shù)據(jù)交換的速度越快。
地址總線:指在對存儲器或I/O端口進行訪問時,傳送由CPU提供的要訪問的存儲單元或I/O端口的地址信息的總線。其寬度決定了處理器能直接訪問的主存容量的大小。如:8086有20根地址線,使用這20根地址線上不同地址信息的組合,可直接對2^20=1M個存儲單元進行訪問;Pentium II 有36根地址線,因此它可以直接尋址的最大地址范圍為2^36=64GB。
為了滿足微型計算機對存儲器系統(tǒng)高速度、大容量、低成本的要求,目前,微型計算機系統(tǒng)采用三級存儲器組織結(jié)構(gòu),即由高速緩沖存儲器Cache、主存和外存組成。
主存 ——當前正在執(zhí)行的程序或要使用的數(shù)據(jù)必須從外存調(diào)入主存后才能被CPU讀取并執(zhí)行,主存容量通常為MB級;
外存——當前沒有使用的程序可存入外存,外存的容量通常很大,可達GB甚至TB級;
Cache(高速緩沖存儲器)——最大特點是存取速度快,但容量較小,通常為KB級,將當前使用頻率較高的程序和數(shù)據(jù)通過一定的替換機制從主存放入Cache,CPU在取指令或讀取操作數(shù)時,同時對Cache和主存進行訪問,如果Cache命中,則終止對主存的訪問,直接從Cache中將指令或數(shù)據(jù)送CPU處理,由于Cache的速度比主存快得多。
高速緩沖存儲器Cache的使用,大大減少了CPU讀取指令和操作數(shù)所需的時間,使CPU的執(zhí)行速度顯著提高。
80386之前的CPU都沒有Cache。80386 CPU內(nèi)無Cache,而由與其配套使用的Intel 82385 Cache 控制器實現(xiàn)CPU之外的Cache管理。80486之后的CPU芯片內(nèi)部都集成了一至多個Cache。
需要說明的是,80x86CPU在發(fā)展過程中,存儲器的管理機制發(fā)生了較大變化。8086/8088CPU對存儲器的管理采用的是分段的實方式;80286CPU除了可在實方式下工作外,還可以在保護方式下工作;而80386CPU之后的處理器則具有三種工作方式:實方式、保護方式和虛擬8086方式。
保護方式:在保護方式下,機器可提供虛擬存儲管理和多任務管理機制。虛擬存儲的實現(xiàn),為用戶提供了一個比實際主存空間大得多的程序地址空間,從而可使用戶程序的大小不受主存空間的限制。多任務管理機制的實現(xiàn),可允許多個用戶或一個用戶的多個任務同時在機器上運行。
虛擬方式:在這種方式下,一臺機器可以同時模擬多個8086處理器的工作。
80x86微處理器詳解
8086是Intel系列的16位微處理器。使用HMOS工藝制造,芯片上集成了2.9萬個晶體管,用單一的+5V電源供電,封裝在標準的40引腳雙列直插式管殼內(nèi),時鐘頻率5MHz?10MHz。
8086有16條數(shù)據(jù)總線,可以處理8位或16位數(shù)據(jù)。有20條地址總線,可以直接尋址1M(220)字節(jié)的存儲單元和64K個I/O端口。在8086推出后不久,為方便原8位機用戶,Intel公司很快推出了8088微處理器,其指令系統(tǒng)與8086完全兼容,CPU內(nèi)部結(jié)構(gòu)仍為16位,但外部數(shù)據(jù)總線是8位的,這樣設計的目的主要是為了與原有的8位外圍接口芯片兼容。并以8088為CPU組成了IBM PC、PC/XT等準16位微型計算機,由于其性能價格比高,很快占領了市場。
二,8086/8088內(nèi)部結(jié)構(gòu)
從功能上講,8086CPU內(nèi)部結(jié)構(gòu)可分為兩個獨立的部分,并進行重疊操作。
1、總線接口單元BIU(Bus Interface Unit)——負責完成CPU與存儲器或I/O設備之間的數(shù)據(jù)傳送。
2、執(zhí)行單元EU(Execution Unit)——不與系統(tǒng)外部直接相連,它的功能只是負責執(zhí)行指令。
如圖所示:
1,總線接口單元BIU
功能:負責完成CPU與存儲器或I/O設備之間的數(shù)據(jù)傳送。
任務:
① 讀指令——指令隊列出現(xiàn)空字節(jié)(8088 1個空字節(jié),8086 2個空字節(jié))時,從內(nèi)存取出后續(xù)指令。BIU取指令時,并不影響EU的執(zhí)行,兩者并行工作,大大提高了CPU的執(zhí)行速度。
② 讀操作數(shù)——EU需要從內(nèi)存或外設端口讀取操作數(shù)時,根據(jù)EU給出的地址從內(nèi)存或外設端口讀取數(shù)據(jù)供EU使用。
③ 寫操作數(shù)——EU的運算結(jié)果、數(shù)據(jù)或控制命令等由BIU送往指定的內(nèi)存單元或外設端口。
構(gòu)成:
1)、4個16位段寄存器:代碼段寄存器CS(Code Segment)、數(shù)據(jù)段寄存器DS(Data Segment)、堆棧段寄存器SS(Stack Segment)和附加數(shù)據(jù)段寄存器ES(Extra Segment);
2)、一個16位的指令指針寄存器IP(Instruction Pointer);
3)、一個20位地址加法器;
4)、6字節(jié)指令隊列緩沖器;
5)、一個與EU通訊的內(nèi)部寄存器以及總線控制電路等。
各部件功能詳解:
1)段寄存器
2)指令指針寄存器
3)20位地址加法器
4)指令隊列緩沖器
2,執(zhí)行單元EU
功能:不與系統(tǒng)外部直接相連,它的功能只是負責執(zhí)行指令。
任務:執(zhí)行的指令從BIU的指令隊列緩沖器中直接得到,執(zhí)行指令時若需要從存儲器或I/O端口讀寫操作數(shù)時,由EU向BIU發(fā)出請求,再由BIU對存儲器或I/O端口進行訪問。
構(gòu)成:
1). 16位算術邏輯單元(ALU):進行算術和邏輯運算。
2). 16位標志寄存器FLAGS:存放CPU運算的狀態(tài)和控制標志。
3). 數(shù)據(jù)暫存寄存器:暫存參加運算的數(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)特定的定時操作。
3,8086/8088CPU內(nèi)部結(jié)構(gòu)的差異
二者內(nèi)部結(jié)構(gòu)基本相似,執(zhí)行單元EU完全相同,其指令系統(tǒng)、尋址方式及程序設計方法都相同。區(qū)別僅在于總線接口單元BIU,歸納起來主要有以下幾個方面的差異:
1).外部數(shù)據(jù)總線位數(shù)不同。8086外部數(shù)據(jù)總線16位,8088外部數(shù)據(jù)總線8位。
2).指令隊列緩沖器大小不同。8086指令隊列可容納6個字節(jié);而8088指令隊列只能容納4個字節(jié)。
3). 部分引腳的功能定義有所區(qū)別。
三,8086/8088寄存器結(jié)構(gòu)
注意
有關寄存器,尤其是在存儲器尋址時用來存放操作數(shù)在段內(nèi)偏移地址的地址寄存器和標志寄存器中各控制標志位的使用方法,將在后續(xù)章節(jié)中涉及到時還將進一步詳細介紹,請讀者務必熟練掌握。**
1,通用寄存器
通用寄存器(8個):包括四個數(shù)據(jù)寄存器AX(AH/AL), BX(BH/BL),CX(CH/CL),DX(DH/DL),兩個地址指針寄存器(SP,BP)和兩個變址寄存器(SI,DI)。
1).數(shù)據(jù)寄存器AX、BX、CX、DX
數(shù)據(jù)寄存器一般用于存放參與運算的操作數(shù)或運算結(jié)果。每個數(shù)據(jù)寄存器都是16位的,但又可將高、低8位分別作為兩個獨立的8位寄存器來用。高8位分別記作AH、BH、CH、DH,低8位分別記作AL,BL,CL,DL。注意,8086/8088 CPU的14個寄存器除了這4個16位寄存器能分別當作兩個8位寄存器來用之外,其它寄存器都不能如此使用。
AX(Accumulator)稱為累加器。用該寄存器存放運算結(jié)果可使指令簡化,提高指令的執(zhí)行速度。此外,所有的I/O指令都使用該寄存器與外設端口交換信息。
BX(Base)稱為基址寄存器。8086/8088CPU中有兩個基址寄存器BX和BP。BX用來存放操作數(shù)在內(nèi)存中數(shù)據(jù)段內(nèi)的偏移地址,BP用來存放操作數(shù)在堆棧段內(nèi)的偏移地址。
CX(Counter)稱為計數(shù)器。在設計循環(huán)程序時使用該寄存器存放循環(huán)次數(shù),可使程序指令簡化,有利于提高程序的運行速度
DX(Data)稱為數(shù)據(jù)寄存器。在寄存器間接尋址的I/O指令中存放I/O端口地址;在做雙字長乘除法運算時,DX與AX一起存放一個雙字長操作數(shù),其中DX存放高16位數(shù)。
2)地址指針寄存器SP、BP
SP(Stack Pointer)稱為堆棧指針寄存器。在使用堆棧操作指令(PUSH或POP)對堆棧進行操作時,每執(zhí)行一次進棧或出棧操作,系統(tǒng)會自動將SP的內(nèi)容減2或加2,以使其始終指向棧頂。
BP(Base Pointer)稱為基址寄存器。作為通用寄存器,它可以用來存放數(shù)據(jù),但更經(jīng)常更重要的用途是存放操作數(shù)在堆棧段內(nèi)的偏移地址。
3)變址寄存器SI、DI
SI(Source Index)稱為源變址寄存器。DI(Destination Index)稱為目的變址寄存器。這兩個寄存器通常用在字符串操作時存放操作數(shù)的偏移地址,其中SI存放源串在數(shù)據(jù)段內(nèi)的偏移地址,DI存放目的串在附加數(shù)據(jù)段內(nèi)的偏移地址。
2,段寄存器
為了對1M個存儲單元進行管理,8086/8088對存儲器進行分段管理,即將程序代碼或數(shù)據(jù)分別放在代碼段、數(shù)據(jù)段、堆棧段或附加數(shù)據(jù)段中,每個段最多可達64K個存儲單元。段地址分別放在對應的段寄存器中,代碼或數(shù)據(jù)在段內(nèi)的偏移地址由有關寄存器或立即數(shù)給出。
段寄存器是為實現(xiàn)“段加偏移”尋址基址而設置的。
CS(Code Segment)——代碼段寄存器。用來存儲程序當前使用的代碼段的段地址。CS的內(nèi)容左移四位再加上指令指針寄存器IP的內(nèi)容就是下一條要讀取的指令在存儲器中的物理地址。
DS(Data Segment)——數(shù)據(jù)段寄存器。用來存放程序當前使用的數(shù)據(jù)段的段地址。DS的內(nèi)容左移四位再加上按指令中存儲器尋址方式給出的偏移地址即得到對數(shù)據(jù)段指定單元進行讀寫的物理地址。
SS(Stack Segment)——堆棧段寄存器。用來存放程序當前所使用的堆棧段的段地址。堆棧是存儲器中開辟的按先進后出原則組織的一個特殊存儲區(qū),主要用于調(diào)用子程序或執(zhí)行中斷服務程序時保護斷點和現(xiàn)場。
ES(Extra Segment)——附加數(shù)據(jù)段寄存器。用來存放程序當前使用的附加數(shù)據(jù)段的段地址。附加數(shù)據(jù)段用來存放字符串操作時的目的字符串。
8086CPU有20條地址線,具有尋址1MB存儲空間。
8086/8088指令中給出的地址僅有16位,指針寄存器和變址寄存器也只有16位,不能尋址1MB的內(nèi)存空間。
用8086/8088CPU內(nèi)部一組16位段寄存器內(nèi)容作為段地址,再由段寄存器左移4位形成20位的段起始地址,稱為段基地址或段基址。這樣8086/8088可尋址1MB存儲空間。
將1MB存儲空間分成若干個邏輯段,使每個邏輯段的長度為64KB
8086/8088段寄存器與提供段內(nèi)移地址的寄存器之間的默認組合
3,控制寄存器
IP(Instruction Pointer)——指令指針寄存器。用來存放下一條要讀取的指令在代碼段內(nèi)的偏移地址。用戶程序不能直接訪問IP。
FLAGS——標志寄存器。它是一個16位的寄存器,但只用了其中9位,這9位包括6個狀態(tài)標志位,3個控制標志位,如圖所示。
1). 狀態(tài)標志位(6位)
狀態(tài)標志位用來反映算術和邏輯運算結(jié)果的一些特征。下面分別介紹這6個狀態(tài)標志位的功能。
CF(Carry Flag)——進位標志。當進行加減運算時,若最高位發(fā)生進位或借位則CF為1,否則為0。通常用于判斷無符號數(shù)運算結(jié)果是否超出了計算機所能表示的無符號數(shù)的范圍。
PF(Parity Flag)——奇偶標志位。當指令執(zhí)行結(jié)果的低8位中含有偶數(shù)個1時,PF為1,否則為0。
AF(Auxiliary Flag)——輔助進位標志位。當執(zhí)行一條加法或減法運算指令時,若結(jié)果的低字節(jié)的低4位向高4位有進位或借位,則AF為1,否則為0。
ZF(Zero Flag)——零標志位。若當前的運算結(jié)果為0,則ZF為1,否則為0。
SF(Sign Flag)——符號標志位。當運算結(jié)果的最高位為1時,SF=1,否則為0。
OF(Overflow Flag)——溢出標志位。當運算結(jié)果超出了帶符號數(shù)所能表示的數(shù)值范圍,即溢出時,OF=1,否則為0。用來判斷帶符號數(shù)運算結(jié)果是否溢出。
2)控制標志位(3位)
用來控制CPU的操作,由程序設置或清除。它們是:
TF(Trap Flag)——跟蹤(陷阱)標志位。是為測試程序的方便而設置。若將TF置1,CPU處于單步工作方式。
IF(Interrupt Flag)——中斷允許標志位。是用來控制可屏蔽中斷的控制標志位。若將IF置1,表示允許CPU接受外部從INTR引腳上發(fā)來的可屏蔽中斷請求;若用CLI指令將IF清0,則禁止CPU接受可屏蔽中斷請求信號。
DF(Direction Flag)——方向標志位。若將DF置1,串操作按減地址方式進行,也就是說,從高地址開始,每操作一次地址自動遞減;否則按增地址方式進行。
四,總線周期
略略略
五,8086/8088引腳及其功能
1,8086CPU引腳
2,8086最小工作方式及引腳24-31
3,8086最大工作方式及引腳24-31
六,8088與8086引腳區(qū)別
略略略
七,8086/8088存儲器和I/O組織
詳情參見我的博客:
https://blog.csdn.net/rdgfdd/article/details/79797007
總結(jié)
以上是生活随笔為你收集整理的第三章-80x86微处理器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java随机点名器_随机点名器(Java
- 下一篇: 智慧环保综合解决方案 大数据打造生态治理