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