《微型計(jì)算機(jī)原理》(王忠民版)PPT電子課件教案第3章80x86微處理器
《《微型計(jì)算機(jī)原理》(王忠民版)PPT電子課件教案第3章80x86微處理器》由會(huì)員分享,可在線閱讀,更多相關(guān)《《微型計(jì)算機(jī)原理》(王忠民版)PPT電子課件教案第3章80x86微處理器(235頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、第3章 80 x86微處理器 第3章 80 x86微處理器 3.1 80 x86微處理器簡(jiǎn)介微處理器簡(jiǎn)介3.2 8086/8088微處理器微處理器3.3 8086/8088存儲(chǔ)器和存儲(chǔ)器和I/O組織組織 3.4 從從80286到到Pentium系列的技術(shù)發(fā)展系列的技術(shù)發(fā)展 第3章 80 x86微處理器 3.1 80 x86微處理器簡(jiǎn)介 80 x86微處理器是美國(guó)Intel 公司生產(chǎn)的系列微處理器。該公司成立于1968年,1969年就設(shè)計(jì)了4位的4004 芯片,1973年開發(fā)出8位的8080芯片,1978年正式推出16位的8086微處理器芯片,由此開始了Intel公司的80 x86系列微處理器的
2、生產(chǎn)歷史。本節(jié)簡(jiǎn)要介紹Intel公司80 x86系列微處理器的發(fā)展過(guò)程及其特性。 表3.1給出了80 x86系列微處理器概況。下面通過(guò)對(duì)表中有關(guān)技術(shù)數(shù)據(jù)的分析來(lái)說(shuō)明Intel 80 x86系列微處理器的發(fā)展情況。 第3章 80 x86微處理器 表中“集成度”是指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ù)交換的速度就越快。 第3章 80
3、x86微處理器 “地址總線”是在對(duì)存儲(chǔ)器或I/O端口進(jìn)行訪問(wèn)時(shí),傳送 由CPU提供的要訪問(wèn)的存儲(chǔ)單元或I/O端口的地址信息的總線,其寬度決定了處理器能直接訪問(wèn)的主存容量大小。如8086有20根地址線,使用這20根地址線上不同地址信息的組合,可直接對(duì)220=1M個(gè)存儲(chǔ)單元進(jìn)行訪問(wèn);Pentium II有36根地址線,因此它可直接尋址的最大地址范圍為236=64G。 第3章 80 x86微處理器 高速緩沖存儲(chǔ)器Cache的使用,大大減少了CPU讀取指令和操作數(shù)所需的時(shí)間,使CPU的執(zhí)行速度顯著提高。為了滿足微型計(jì)算機(jī)對(duì)存儲(chǔ)器系統(tǒng)高速度、大容量、低成本的要求,目前,微型計(jì)算機(jī)系統(tǒng)采用如圖3.1所示的
4、三級(jí)存儲(chǔ)器組織結(jié)構(gòu),即由高速緩沖存儲(chǔ)器Cache、主存和外存組成。 第3章 80 x86微處理器 表表3.1 80 x86系列微處理器概況系列微處理器概況 第3章 80 x86微處理器 當(dāng)前正在執(zhí)行的程序或要使用的數(shù)據(jù)必須從外存調(diào)入主存后才能被CPU讀取并執(zhí)行,主存容量通常為MB級(jí)(理論上可達(dá)GB級(jí),如Pentium II可配置的內(nèi)存最大容量可達(dá)236=64G,但事實(shí)上,基于成本和必要性考慮,目前,微型計(jì)算機(jī)內(nèi)存配置一般都不會(huì)達(dá)到其理論允許值);當(dāng)前沒(méi)有使用的程序可存入外存,如硬盤、軟盤、光盤等,外存的容量通常很大,可達(dá)GB甚至TB級(jí);而高速緩沖存儲(chǔ)器的最大特點(diǎn)是存取速度快,但容量較小,通常為
5、KB級(jí),將當(dāng)前使用頻率較高的程序和數(shù)據(jù)通過(guò)一定的替換機(jī)制從主存放入Cache,CPU在取指令或讀取操作數(shù)時(shí),同時(shí)對(duì)Cache和主存進(jìn)行訪問(wèn),如果Cache命中,則終止對(duì)主存的訪問(wèn),直接從Cache中將指令或數(shù)據(jù)送CPU處理,由于Cache的速度比主存快得多,因此,Cache的使用大大提高了CPU讀取指令或數(shù)據(jù)的速度。 第3章 80 x86微處理器 高速緩沖存儲(chǔ)器(Cache) 微處理器CPU 主存儲(chǔ)器(主存) 外存儲(chǔ)器(外存)圖3.1 存儲(chǔ)器三級(jí)結(jié)構(gòu) 第3章 80 x86微處理器 80386之前的CPU都沒(méi)有Cache。80386 CPU內(nèi)無(wú)Cache,而由與之配套使用的Intel 82385
6、 Cache 控制器實(shí)現(xiàn)CPU之外的Cache管理。80486之后的CPU芯片內(nèi)部都集成了一至多個(gè)Cache。 需要說(shuō)明的是,80 x86CPU在發(fā)展過(guò)程中,存儲(chǔ)器的管理機(jī)制發(fā)生了較大變化。8086/8088CPU對(duì)存儲(chǔ)器的管理采用的是分段的實(shí)方式;80286CPU除了可在實(shí)方式下工作外,還可以在保護(hù)方式下工作;而80386CPU之后的處理器則具有三種工作方式:實(shí)方式、保護(hù)方式和虛擬8086方式。 第3章 80 x86微處理器 在保護(hù)方式下,機(jī)器可提供虛擬存儲(chǔ)管理和多任務(wù)管理機(jī)制。虛擬存儲(chǔ)的實(shí)現(xiàn),為用戶提供了一個(gè)比實(shí)際主存空間大得多的程序地址空間,從而可使用戶程序的大小不受主存空間的限制。多任
7、務(wù)管理機(jī)制的實(shí)現(xiàn),可允許多個(gè)用戶或一個(gè)用戶的多個(gè)任務(wù)同時(shí)在機(jī)器上運(yùn)行。 從80386開始,微處理器除支持實(shí)方式和保護(hù)方式外,又增加了一種虛擬8086方式。在這種方式下,一臺(tái)機(jī)器可以同時(shí)模擬多個(gè)8086處理器的工作。有關(guān)存儲(chǔ)器管理機(jī)制的詳細(xì)介紹,請(qǐng)參閱3.4.2 “80 x86存儲(chǔ)器管理”一節(jié)。 第3章 80 x86微處理器 3.2 8086/8088微處理器微處理器 8086是Intel系列的16位微處理器。使用HMOS工藝制造,芯片上集成了2.9萬(wàn)個(gè)晶體管,用單一的+5V電源供電,封裝在標(biāo)準(zhǔn)的40引腳雙列直插式管殼內(nèi),時(shí)鐘頻率5MHz10MHz。 8086有16條數(shù)據(jù)總線,可以處理8位或16
8、位數(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)。 第3章 80 x86微處理器 3.2.1 8086/8088內(nèi)部結(jié)構(gòu)內(nèi)部結(jié)構(gòu) 一總線接口單元一總線接口單元BIU 總線接口單元BIU的功能是負(fù)責(zé)完成CPU與存儲(chǔ)器或I/O設(shè)備之間的數(shù)據(jù)
9、傳送。具體任務(wù)是: 指令隊(duì)列出現(xiàn)空字節(jié)(8088CPU 1個(gè)空字節(jié),8086CPU 2個(gè)空字節(jié))時(shí),從內(nèi)存取出后續(xù)指令。BIU取指令時(shí),并不影響EU的執(zhí)行,兩者并行工作,大大提高了CPU的執(zhí)行速度。 EU需要從內(nèi)存或外設(shè)端口讀取操作數(shù)時(shí),根據(jù)EU給出的地址從內(nèi)存或外設(shè)端口讀取數(shù)據(jù)供EU使用 第3章 80 x86微處理器 EU的運(yùn)算結(jié)果、數(shù)據(jù)或控制命令等由BIU送往指定的內(nèi)存單元或外設(shè)端口。 總線接口單元內(nèi)有4個(gè)16位段寄存器:代碼段寄存器CS(Code Segment)、數(shù)據(jù)段寄存器DS(Data Segment)、堆棧段寄存器SS(Stack Segment)和附加數(shù)據(jù)段寄存器ES(Extr
10、a Segment),一個(gè)16位的指令指針寄存器IP(Instruction Pointer),一個(gè)20位地址加法器,6字節(jié)指令隊(duì)列緩沖器,一個(gè)與EU通訊的內(nèi)部寄存器以及總線控制電路等。 第3章 80 x86微處理器 圖圖3.2 8086CPU內(nèi)部結(jié)構(gòu)框圖內(nèi)部結(jié)構(gòu)框圖 AHALBHBLCHCLDHDL通用寄存器SPBPSIDI數(shù) 據(jù)寄存器指針和變址寄存器ALU數(shù)據(jù)總線(16位)暫存寄存器EU控制電路AXBXCXDX標(biāo)志寄存器執(zhí)行單元(EU)總線接口單元(BIU)1 2 3 4 5 6指令隊(duì)列緩沖器(8位)內(nèi)部寄存器IPESSSDSCSALUDB(16位)AB(20位)總線控制電 路8086總線
11、DB(16位)地址加法器第3章 80 x86微處理器 1段寄存器段寄存器 8086CPU的地址引腳有20根,能提供20位的地址信息,可直接對(duì)1M個(gè)存儲(chǔ)單元進(jìn)行訪問(wèn),但CPU內(nèi)部可用來(lái)提供地址信息的寄存器都是16位的,那么如何用16位寄存器實(shí)現(xiàn)20位地址的尋址呢?8086/8088采用了段結(jié)構(gòu)的內(nèi)存管理的方法。 將指令代碼和數(shù)據(jù)分別存儲(chǔ)在代碼段、數(shù)據(jù)段、堆棧段、附加數(shù)據(jù)段中,這些段的段地址分別由段寄存器CS、DS、SS、ES提供,而代碼或數(shù)據(jù)在段內(nèi)的偏移地址則由有關(guān)寄存器或立即數(shù)給出。 第3章 80 x86微處理器 代碼段寄存器CS存儲(chǔ)程序當(dāng)前使用的代碼段的段地址。代碼段用來(lái)存放程序的指令代碼。
12、下一條要讀取指令在代碼段中的偏移地址由指令指針寄存器IP提供;數(shù)據(jù)段寄存器DS用來(lái)存放程序當(dāng)前使用的數(shù)據(jù)段的段地址。一般來(lái)說(shuō),程序中所用到的原始數(shù)據(jù)、中間結(jié)果以及最終結(jié)果都存放在數(shù)據(jù)段中,如果程序中使用了字符串處理指令,則源字符串也存放在數(shù)據(jù)段中;堆棧段寄存器SS用來(lái)存放程序當(dāng)前所使用的堆棧段的段地址。堆棧是在存儲(chǔ)器中開辟的一個(gè)特定區(qū)域,詳見(jiàn)3.3.4 “堆棧操作”一節(jié)。附加數(shù)據(jù)段寄存器ES用來(lái)存放程序當(dāng)前使用的附加數(shù)據(jù)段的段地址。附加數(shù)據(jù)段通常用于存放字符串操作時(shí)的目的字符串。 程序員在編寫匯編語(yǔ)言源程序時(shí),應(yīng)該按照上述規(guī)定將程序的各個(gè)部分放在規(guī)定的段內(nèi)。每個(gè)源程序必須至少有一個(gè)代碼段,而數(shù)
13、據(jù)段、堆棧段和附加數(shù)據(jù)段則根據(jù)程序的需要決定是否設(shè)置。 第3章 80 x86微處理器 2指令指針寄存器指令指針寄存器 指令指針寄存器IP用來(lái)存放下一條要讀取的指令在代碼段中的偏移地址。IP在程序運(yùn)行中能自動(dòng)加1修正,從而使其始終存放的是下一條要讀取的指令在代碼段的偏移地址。由于CS和IP的內(nèi)容決定了程序的執(zhí)行順序,因此程序員不能直接用賦值指令對(duì)其內(nèi)容進(jìn)行修改。有些指令能使IP和CS的值改變(如跳轉(zhuǎn)指令)或使其值壓入堆?;驈亩褩V袕棾龌謴?fù)原值(如子程序調(diào)用指令和返回指令)。 第3章 80 x86微處理器 320位地址加法器位地址加法器 8086/8088CPU在對(duì)存儲(chǔ)單元進(jìn)行訪問(wèn)以讀取指令或讀/
14、寫操作數(shù)時(shí),必須在地址總線上提供20位的地址信息,以便選中對(duì)應(yīng)的存儲(chǔ)單元。那么,CPU是如何產(chǎn)生20位地址的呢? CPU提供的用來(lái)對(duì)存儲(chǔ)單元進(jìn)行訪問(wèn)的20位地址是由BIU中的地址加法器產(chǎn)生的。 第3章 80 x86微處理器 存儲(chǔ)器中每個(gè)存儲(chǔ)單元的地址可有以下兩種表示方式: 邏輯地址邏輯地址:其表達(dá)形式為“段地址:段內(nèi)偏移地址”。段內(nèi)偏移地址又稱為“有效地址EA(Effective Address)。在讀指令時(shí),段地址由代碼段寄存器CS提供,當(dāng)前要讀取指令在代碼段中的偏移地址由指令指針寄存器IP提供;在讀取或存儲(chǔ)操作數(shù)時(shí),根據(jù)具體操作,段地址由DS、ES或SS提供,段內(nèi)偏移地址由指令給出。 第3
15、章 80 x86微處理器 物理地址物理地址:CPU與存儲(chǔ)器進(jìn)行數(shù)據(jù)交換時(shí)在地址總線上提供的20位地址信息稱為物理地址。物理地址的形成過(guò)程如圖3.3所示。當(dāng)由IP提供或由EU根據(jù)指令所提供尋址方式計(jì)算出尋址單元的16位段內(nèi)偏移地址后,把該偏移地址和段寄存器內(nèi)容左移四位后(相當(dāng)于乘以10H)得到的段基址(段內(nèi)第一個(gè)存儲(chǔ)單元的物理地址)同時(shí)送到BIU中的地址加法器,形成一個(gè)20位的物理地址,從而實(shí)現(xiàn)對(duì)存儲(chǔ)單元的訪問(wèn)。由邏輯地址求物理地址的公式為:物理地址=段地址10H+段內(nèi)偏移地址 如假設(shè)當(dāng)前(CS)=20A8H,(IP)=2008H,那么,下一條從內(nèi)存中讀取的指令所在存儲(chǔ)單元的物理地址為:20A8
16、H10H+ 2008H=22A88H。 第3章 80 x86微處理器 015段內(nèi)偏移地址段寄存器190340000段地址左移4位20位物理地址190圖3.3 物理地址的形成 第3章 80 x86微處理器 4. 指令隊(duì)列緩沖器指令隊(duì)列緩沖器 8086的指令隊(duì)列有6個(gè)字節(jié),8088的指令隊(duì)列有4個(gè)字節(jié)。對(duì)8086而言,當(dāng)指令隊(duì)列出現(xiàn)2個(gè)空字節(jié),對(duì)8088而言,指令隊(duì)列出現(xiàn)1個(gè)空字節(jié)時(shí),BIU就自動(dòng)執(zhí)行一次取指令周期,將下一條要執(zhí)行的指令從內(nèi)存單元讀入指令隊(duì)列。它們采用“先進(jìn)先出”原則,按順序存放,并按順序取到EU中去執(zhí)行。 當(dāng)EU執(zhí)行一條需要到存儲(chǔ)器或I/O端口讀取操作數(shù)的指令時(shí),BIU將在執(zhí)行完
17、現(xiàn)行取指令的存儲(chǔ)器周期后的下一個(gè)存儲(chǔ)周期,對(duì)指令所指定的存儲(chǔ)單元或I/O端口進(jìn)行訪問(wèn),讀取的操作數(shù)經(jīng)BIU送EU進(jìn)行處理。當(dāng)EU執(zhí)行跳轉(zhuǎn)、子程序調(diào)用或返回指令時(shí),BIU就使指令隊(duì)列復(fù)位,并從指令給出的新地址開始取指令,新取的第1條指令直接經(jīng)指令隊(duì)列送EU執(zhí)行,隨后取來(lái)的指令將填入指令隊(duì)列緩沖器。 第3章 80 x86微處理器 指令隊(duì)列的引入使得EU和BIU可并行工作,即BIU在讀指令時(shí),并不影響EU單元執(zhí)行指令,EU單元可以連續(xù)不斷地直接從指令隊(duì)列中取到要執(zhí)行的指令代碼,從而減少了CPU為取指令而等待的時(shí)間,提高了CPU的利用率,加快了整機(jī)的運(yùn)行速度。 第3章 80 x86微處理器 二執(zhí)行單元
18、二執(zhí)行單元EU 執(zhí)行單元EU不與系統(tǒng)外部直接相連,它的功能只是負(fù)責(zé)執(zhí)行指令。執(zhí)行的指令從BIU的指令隊(duì)列緩沖器中直接得到,執(zhí)行指令時(shí)若需要從存儲(chǔ)器或I/O端口讀取操作數(shù)時(shí),由EU向BIU發(fā)出請(qǐng)求,再由BIU對(duì)存儲(chǔ)器或I/O端口進(jìn)行訪問(wèn)。EU由下列部件組成: 1. 16位算術(shù)邏輯單元(ALU):用于進(jìn)行算術(shù)和邏輯運(yùn)算。 2. 16位標(biāo)志寄存器FLAGS:用來(lái)存放CPU運(yùn)算的狀態(tài)特征和控制標(biāo)志。 3. 數(shù)據(jù)暫存寄存器:協(xié)助ALU完成運(yùn)算,暫存參加運(yùn)算的數(shù)據(jù)。 第3章 80 x86微處理器 4. 通用寄存器:包括4個(gè)16位數(shù)據(jù)寄存器AX、BX、CX、DX和4個(gè)16位指針與變址寄存器SP、BP與SI、
19、DI。 5. EU控制電路:它是控制、定時(shí)與狀態(tài)邏輯電路,接收從BIU中指令隊(duì)列取來(lái)的指令,經(jīng)過(guò)指令譯碼形成各種定時(shí)控制信號(hào),對(duì)EU的各個(gè)部件實(shí)現(xiàn)特定的定時(shí)操作。 8088CPU內(nèi)部結(jié)構(gòu)與8086基本相似,兩者的執(zhí)行單元EU完全相同,其指令系統(tǒng),尋址方式及程序設(shè)計(jì)方法都相同,所以兩種CPU完全兼容。區(qū)別僅在于總線接口單元BIU,歸納起來(lái)主要有以下幾個(gè)方面的差異: 第3章 80 x86微處理器 1外部數(shù)據(jù)總線位數(shù)不同。8086外部數(shù)據(jù)總線16位,在一個(gè)總線周期內(nèi)可以輸入/輸出一個(gè)字(16位數(shù)據(jù)),而8088外部數(shù)據(jù)總線8位,在一個(gè)總線周期內(nèi)只能輸入/輸出一個(gè)字節(jié)(8位數(shù)據(jù))。 2指令隊(duì)列緩沖器大
20、小不同。8086指令隊(duì)列可容納6個(gè)字節(jié),且在每一個(gè)總線周期中從存儲(chǔ)器取出2個(gè)字節(jié)的指令代碼填入指令隊(duì)列;而8088指令隊(duì)列只能容納4個(gè)字節(jié),在一個(gè)機(jī)器周期中取出一個(gè)字節(jié)的指令代碼送指令隊(duì)列。 3.部分引腳的功能定義有所區(qū)別。 第3章 80 x86微處理器 3.2.2 8086/8088寄存器結(jié)構(gòu)寄存器結(jié)構(gòu) 圖3.4 8086/8088CPU內(nèi)部寄存器結(jié)構(gòu) AHBHCHDHALBLCLDL158 70AXBXCXDX累加器基址寄存器計(jì)數(shù)寄存器數(shù)據(jù)寄存器數(shù)據(jù)寄存器150SPBPSIDI150CSDSSSES150IPFLAGS堆棧指針寄存器基址寄存器源變址寄存器目的變址寄存器指針寄存器變址寄存器代
21、碼段寄存器數(shù)據(jù)段寄存器堆棧段寄存器附加數(shù)據(jù)段寄存器段寄存器指令指針寄存器狀態(tài)標(biāo)志寄存器控制寄存器通用寄存器第3章 80 x86微處理器 一通用寄存器一通用寄存器 通用寄存器包括四個(gè)數(shù)據(jù)寄存器,兩個(gè)地址指針寄存器和兩個(gè)變址寄存器。 1數(shù)據(jù)寄存器數(shù)據(jù)寄存器AX、BX、CX、DX 數(shù)據(jù)寄存器一般用于存放參與運(yùn)算的操作數(shù)或運(yùn)算結(jié)果。每個(gè)數(shù)據(jù)寄存器都是16位的,但又可將高、低8位分別作為兩個(gè)獨(dú)立的8位寄存器來(lái)用。高8位分別記作AH、BH、CH、DH,低8位分別記作AL,BL,CL,DL。例如AX可當(dāng)作兩個(gè)8位寄存器AH、AL使用。注意,8086/8088 CPU的14個(gè)寄存器除了這4個(gè)16位寄存器能分別
22、當(dāng)作兩個(gè)8位寄存器來(lái)用之外,其它寄存器都不能如此使用。 第3章 80 x86微處理器 上述4個(gè)寄存器一般用來(lái)存放數(shù)據(jù),但它們各自都有自己的特定用途: AX(Accumulator)稱為累加器。用該寄存器存放運(yùn)算結(jié)果可使指令簡(jiǎn)化,提高指令的執(zhí)行速度。此外,所有的I/O指令都使用該寄存器與外設(shè)端口交換信息。 BX(Base)稱為基址寄存器。8086/8088CPU中有兩個(gè)基址寄存器BX和BP。BX用來(lái)存放操作數(shù)在內(nèi)存中數(shù)據(jù)段內(nèi)的偏移地址,BP用來(lái)存放操作數(shù)在堆棧段內(nèi)的偏移地址。 第3章 80 x86微處理器 CX(Counter)稱為計(jì)數(shù)器。在設(shè)計(jì)循環(huán)程序時(shí)使用該寄存器存放循環(huán)次數(shù),可使程序指令簡(jiǎn)
23、化,有利于提高程序的運(yùn)行速度。 DX(Data)稱為數(shù)據(jù)寄存器。在寄存器間接尋址的I/O指令中存放I/O端口地址;在做雙字長(zhǎng)乘除法運(yùn)算時(shí),DX與AX一起存放一個(gè)雙字長(zhǎng)操作數(shù),其中DX存放高16位數(shù)。 第3章 80 x86微處理器 2. 地址指針寄存器地址指針寄存器SP、BP SP(Stack Pointer)稱為堆棧指針寄存器。在使用堆棧操作指令(PUSH或POP)對(duì)堆棧進(jìn)行操作時(shí),每執(zhí)行一次進(jìn)?;虺鰲2僮?,系統(tǒng)會(huì)自動(dòng)將SP的內(nèi)容減2或加2,以使其始終指向棧頂。 BP(Base Pointer)稱為基址寄存器。作為通用寄存器,它可以用來(lái)存放數(shù)據(jù),但更經(jīng)常更重要的用途是存放操作數(shù)在堆棧段內(nèi)的偏移
24、地址。 第3章 80 x86微處理器 3.變址寄存器變址寄存器SI、DI SI(Source Index)稱為源變址寄存器。DI(Destination Index)稱為目的變址寄存器。這兩個(gè)寄存器通常用在字符串操作時(shí)存放操作數(shù)的偏移地址,其中SI存放源串在數(shù)據(jù)段內(nèi)的偏移地址,DI存放目的串在附加數(shù)據(jù)段內(nèi)的偏移地址。 第3章 80 x86微處理器 二二 .段寄存器段寄存器 為了對(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)的偏移地址
25、由有關(guān)寄存器或立即數(shù)給出。8086/8088的四個(gè)段寄存器分別為: CS(Code Segment)稱為代碼段寄存器,用來(lái)存儲(chǔ)程序當(dāng)前使用的代碼段的段地址。CS的內(nèi)容左移四位再加上指令指針寄存器IP的內(nèi)容就是下一條要讀取的指令在存儲(chǔ)器中的物理地址。 第3章 80 x86微處理器 DS(Data Segment)稱為數(shù)據(jù)段寄存器,用來(lái)存放程序當(dāng)前使用的數(shù)據(jù)段的段地址。DS的內(nèi)容左移四位再加上按指令中存儲(chǔ)器尋址方式給出的偏移地址即得到對(duì)數(shù)據(jù)段指定單元進(jìn)行讀寫的物理地址。 SS(Stack Segment)稱為堆棧段寄存器,用來(lái)存放程序當(dāng)前所使用的堆棧段的段地址。堆棧是存儲(chǔ)器中開辟的按先進(jìn)后出原則組
26、織的一個(gè)特殊存儲(chǔ)區(qū),主要用于調(diào)用子程序或執(zhí)行中斷服務(wù)程序時(shí)保護(hù)斷點(diǎn)和現(xiàn)場(chǎng)。 ES(Extra Segment)稱為附加數(shù)據(jù)段寄存器,用來(lái)存放程序當(dāng)前使用的附加數(shù)據(jù)段的段地址。附加數(shù)據(jù)段用來(lái)存放字符串操作時(shí)的目的字符串。 第3章 80 x86微處理器 表表3.2 8086/8088段寄存器與提供段內(nèi)移地址的寄存器之間的默認(rèn)組合 段寄存器 提供段內(nèi)偏移地址的寄存器 CS IP DS BX、SI、DI或一個(gè)16位數(shù) SS SP或BP ES DI(用于字符串操作指令)第3章 80 x86微處理器 三三. 控制寄存器控制寄存器 IP(Instruction Pointer)稱為指令指針寄存器,用來(lái)存放下
27、一條要讀取的指令在代碼段內(nèi)的偏移地址。用戶程序不能直接訪問(wèn)IP。 FLAGS稱為標(biāo)志寄存器,它是一個(gè)16位的寄存器,但只用了其中9位,這9位包括6個(gè)狀態(tài)標(biāo)志位,3個(gè)控制標(biāo)志位,如圖3.5所示。 第3章 80 x86微處理器 圖3.5 8086/8088的標(biāo)志寄存器 OF1511DF10IF9TF8SF7ZF6AF4PF2CF0控制標(biāo)志位:TF、IF、DF狀態(tài)標(biāo)志位:CF、PF、AF、ZF、SF、OF第3章 80 x86微處理器 1. 狀態(tài)標(biāo)志位狀態(tài)標(biāo)志位 狀態(tài)標(biāo)志位用來(lái)反映算術(shù)和邏輯運(yùn)算結(jié)果的一些特征。如結(jié)果是否為“0”,是否有進(jìn)位、借位、溢出等。不同指令對(duì)狀態(tài)標(biāo)志位的影響是不同的。下面分別介
28、紹這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。通常用于判斷無(wú)符號(hào)數(shù)運(yùn)算結(jié)果是否超出了計(jì)算機(jī)所能表示的無(wú)符號(hào)數(shù)的范圍。 PF(Parity Flag)奇偶標(biāo)志位。當(dāng)指令執(zhí)行結(jié)果的低8位中含有偶數(shù)個(gè)1時(shí),PF為1,否則為0。 第3章 80 x86微處理器 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)
29、志位。當(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。用來(lái)判斷帶符號(hào)數(shù)運(yùn)算結(jié)果是否溢出。 第3章 80 x86微處理器 例例3.1 設(shè)變量x=11101111B,y=11001000B,X=0101101000001010B,Y=01001100 10100011B,請(qǐng)問(wèn)分別執(zhí)行x+y和X+Y操作后標(biāo)志寄存器中各狀態(tài)位的狀態(tài)如何? 11101111 +) 11001000 10110111 1自動(dòng)丟失0101101000001010 0100110010100011 1010
30、011010101101CF=0CF=1DF=1第3章 80 x86微處理器 狀態(tài)位執(zhí)行x+y后執(zhí)行X+Y后CF最高位D7向前有進(jìn)位,CF=1最高位D15向前沒(méi)有進(jìn)位,CF=0PF低8位中1的個(gè)數(shù)為偶數(shù)(6),PF=1低8位中1的個(gè)數(shù)為奇數(shù)(5),PF=0AF低4位向前有進(jìn)位,AF=1低4位向前沒(méi)有進(jìn)位,AF=0ZF計(jì)算結(jié)果不為0,ZF=0計(jì)算結(jié)果不為0,ZF=0SF最高位D7為1,SF=1最高位D15為1,SF=1OFCFDF=0,沒(méi)有溢出,OF=0CFDF=1,結(jié)果溢出,OF=1第3章 80 x86微處理器 2. 控制標(biāo)志位控制標(biāo)志位 控制標(biāo)志位有3個(gè),用來(lái)控制CPU的操作,由程序設(shè)置或清
31、除。它們是: TF(Trap Flag)跟蹤(陷阱)標(biāo)志位。它是為測(cè)試程序的方便而設(shè)置的。若將TF置1,8086/8088CPU處于單步工作方式,否則,將正常執(zhí)行程序。 IF(Interrupt Flag)中斷允許標(biāo)志位。是用來(lái)控制可屏蔽中斷的控制標(biāo)志位。若用STI指令將IF置1,表示允許CPU接受外部從INTR引腳上發(fā)來(lái)的可屏蔽中斷請(qǐng)求信號(hào);若用CLI指令將IF清0,則禁止CPU接受可屏蔽中斷請(qǐng)求信號(hào)。IF的狀態(tài)對(duì)非屏蔽中斷及內(nèi)部中斷沒(méi)有影響。 第3章 80 x86微處理器 DF(Direction Flag)方向標(biāo)志位。若用STD將DF置1,串操作按減地址方式進(jìn)行,也就是說(shuō),從高地址開始,
32、每操作一次地址自動(dòng)遞減;若用CLD將DF清0,則串操作按增地址方式進(jìn)行,即每操作一次地址自動(dòng)遞增。 注意注意:有關(guān)寄存器,尤其是在存儲(chǔ)器尋址時(shí)用來(lái)存放操作數(shù)在段內(nèi)偏移地址的地址寄存器和標(biāo)志寄存器中各控制標(biāo)志位的使用方法,將在后續(xù)章節(jié)中涉及到時(shí)還將進(jìn)一步詳細(xì)介紹,請(qǐng)讀者務(wù)必熟練掌握。 第3章 80 x86微處理器 3.2.3 總線周期的概念總線周期的概念 為了便于對(duì)8086/8088CPU引腳功能的說(shuō)明,本節(jié)簡(jiǎn)要介紹總線周期的概念。 8086/8088CPU在與存儲(chǔ)器或I/O端口交換數(shù)據(jù)時(shí)需要啟動(dòng)一個(gè)總線周期。按照數(shù)據(jù)的傳送方向來(lái)分,總線周期可分為“讀”總線周期(CPU從存儲(chǔ)器或I/O端口讀取數(shù)
33、據(jù))和“寫”總線周期(CPU將數(shù)據(jù)寫入存儲(chǔ)器或I/O端口)。 第3章 80 x86微處理器 8086/8088CPU基本的總線周期由4個(gè)時(shí)鐘周期組成,如圖3.6所示。時(shí)鐘周期是CPU的基本時(shí)間計(jì)量單位,由CPU主頻決定,如8086的主頻為5MHz,1個(gè)時(shí)鐘周期就是200ns。一個(gè)時(shí)鐘周期又稱為一個(gè)T狀態(tài),因此基本總線周期用T1、T2、T3、T4表示。圖3.6(a)給出典型的總線周期波形圖。在T1狀態(tài)CPU把要讀/寫的存儲(chǔ)單元的地址或I/O端口的地址放到地址總線上。若是“寫”總線周期,CPU從T2起到T4,把數(shù)據(jù)送到總線上,并寫入存儲(chǔ)器單元或I/O端口;若是“讀”總線周期,CPU則從T3起到T4
34、從總線上接收數(shù)據(jù),T2狀態(tài)時(shí)總線浮空,允許CPU有個(gè)緩沖時(shí)間把輸出地址的寫方式轉(zhuǎn)換成輸入數(shù)據(jù)的讀方式。 第3章 80 x86微處理器 圖3.6 8086/8088基本總線周期 地址輸出地址/數(shù)據(jù)緩沖數(shù)據(jù)輸入地址輸出地址輸出地址/數(shù)據(jù)數(shù)據(jù)輸出地址輸出T1T2T3T4T1T2總線周期總線周期CLK(a)T1T2T3T4T1T1T1T1T1T2T3總線周期空閑狀態(tài)總線周期(b)T1T2T3T4T1CLK(c)READYTW第3章 80 x86微處理器 圖3.6(b)是具有空閑狀態(tài)的總線周期。如果在一個(gè)總線周期之后不立即執(zhí)行下一個(gè)總線周期,即CPU此時(shí)執(zhí)行的指令不需要對(duì)存儲(chǔ)器或I/O端口進(jìn)行訪問(wèn),且目
35、前指令隊(duì)列滿而不需要到內(nèi)存中讀指令,那么系統(tǒng)總線就處于空閑狀態(tài),即執(zhí)行空閑周期。在空閑周期中可包括一個(gè)或多個(gè)時(shí)鐘周期,在這期間,在高4位的總線上,CPU仍驅(qū)動(dòng)前一個(gè)總線周期的狀態(tài)信息;而在低16位的總線上,則根據(jù)前一個(gè)總線周期是讀還是寫周期來(lái)決定。若前一個(gè)周期為寫周期,CPU會(huì)在總線的低16位繼續(xù)驅(qū)動(dòng)數(shù)據(jù)信息;若前一個(gè)總線周期為讀周期,CPU則使總線的低16位處于浮空狀態(tài)。在空閑周期,盡管CPU對(duì)總線進(jìn)行空操作,但在CPU內(nèi)部,仍然進(jìn)行著有效的操作,如執(zhí)行某個(gè)運(yùn)算、在內(nèi)部寄存器之間傳送數(shù)據(jù)等。 第3章 80 x86微處理器 圖3.6(c)是具有等待狀態(tài)的總線周期。在T3狀態(tài)結(jié)束之前,CPU測(cè)試
36、READY信號(hào)線,如果為有效的高電平,則說(shuō)明數(shù)據(jù)已準(zhǔn)備好,可進(jìn)入T4狀態(tài);若READY為低電平,則說(shuō)明數(shù)據(jù)沒(méi)有準(zhǔn)備好,CPU在T3之后插入1個(gè)或多個(gè)等待周期TW,直到檢測(cè)到READY為有效高電平后,CPU會(huì)自動(dòng)脫離TW而進(jìn)入T4狀態(tài)。這種延長(zhǎng)總線周期的措施允許系統(tǒng)使用低速的存儲(chǔ)器芯片。 第3章 80 x86微處理器 3.2.4 8086/8088引腳及其功能引腳及其功能 圖3.7 8086/8088CPU引腳 GND8086CPU12345678910111213141516171819202122232425262728293031323334353637383940AD14AD13AD12
37、AD11AD10AD9AD8AD7AD6AD5AD4AD3AD2AD1AD0NMIINTRCLKGNDRESETREADYTEST)QS(INTA1ALE(QS0)S(DEN0)S(RDT1/)S(IOM2/)LOCK(WR)GT/RQ(HOLD0RDMX/MN7SBHE/A19 /S6A18 /S5A17 /S4A16 /S3AD15VCC(5 V)GT/RQ(HLDA1GND8088CPU12345678910111213141516171819202122232425262728293031323334353637383940A14A13A12A11A10A9A8AD7AD6AD5AD4
38、AD3AD2AD1AD0NMIINTRCLKGNDRESETREADYTEST)QS(INTA1ALE(QS0)S(DEN0)S(R/DT1)S(M/IO2)LOCK(WR)GT/RQ(HOLD0RDMX/MN)HIGH/(SS0A19 /S6A18 /S5A17 /S4A16 /S3A15VCC(5 V)GT/RQ(HLDA1第3章 80 x86微處理器 8086/8088芯片的引腳應(yīng)包括20根地址線,16根(8086)或8根(8088)數(shù)據(jù)線以及控制線、狀態(tài)線、電源線和地線等,若每個(gè)引腳只傳送一種信息,那么芯片的引腳將會(huì)太多,不利于芯片的封裝,因此,8086/8088CPU的部分引腳定義了
39、雙重功能。如第33引腳MN / MX上電平的高低代表兩種不同的信號(hào);第31到24引腳在CPU處于兩種不同的工作方式(最大工作方式和最小工作方式)時(shí)具有不同的名稱和定義;引腳9到16(8088CPU)及引腳2到16和39(8086CPU)采用了分時(shí)復(fù)用技術(shù),即在不同的時(shí)刻分別傳送地址或數(shù)據(jù)信息等。 第3章 80 x86微處理器 一一8086CPU 引腳引腳 8086CPU引腳按功能可分為三大類:電源線和地線,地址/數(shù)據(jù)引腳以及控制引腳。 1電源線和地線 電源線VCC(第40引腳):輸入,接入10%單一+5V電源。地線GND(引腳1和20):輸入,兩條地線均應(yīng)接地。 第3章 80 x86微處理器
40、2. 地址地址/數(shù)據(jù)數(shù)據(jù)(狀態(tài)狀態(tài))引腳引腳 地址/數(shù)據(jù)分時(shí)復(fù)用引腳AD15AD0(Address Data):引腳39及引腳216,傳送地址時(shí)單向輸出,傳送數(shù)據(jù)時(shí)雙向輸入或輸出。 地址狀態(tài)分時(shí)復(fù)用引腳A19/S6A16/S3(Address / Status):引腳3538,輸出、三態(tài)總線。采用分時(shí)輸出,即在T1狀態(tài)作地址線用,T2T4狀態(tài)輸出狀態(tài)信息。當(dāng)訪問(wèn)存儲(chǔ)器時(shí),T1狀態(tài)輸出A19A15,與AD15AD0一起構(gòu)成訪問(wèn)存儲(chǔ)器的20位物理地址;CPU訪問(wèn)I/O端口時(shí),不使用這4個(gè)引腳,A19A16保持為0。狀態(tài)信息中的S6為0用來(lái)表示8086CPU 當(dāng)前與總線相連,所以在T2T4狀態(tài),S6
41、總為0,以表示CPU當(dāng)前連在總線上;S5表示中斷允許標(biāo)志位IF的當(dāng)前設(shè)置,IF=1時(shí),S5為1,否則為0;S4S3用來(lái)指示當(dāng)前正在使用哪個(gè)段寄存器,如表3.3所示。 第3章 80 x86微處理器 表表3.3 S4與與S3組合代表的正在使用的寄存器組合代表的正在使用的寄存器 S4S3當(dāng)前正在使用的段寄存器00110101ESSSCS或未使用任何段寄存器DS第3章 80 x86微處理器 3. 控制引腳控制引腳 (1) NMI(Non-Maskable Interrupt ):引腳17,非屏蔽中斷請(qǐng)求信號(hào),輸入,上升沿觸發(fā)。此請(qǐng)求不受標(biāo)志寄存器FLAGS中中斷允許標(biāo)志位IF狀態(tài)的影響,只要此信號(hào)一出
42、現(xiàn),在當(dāng)前指令執(zhí)行結(jié)束后立即進(jìn)行中斷處理。 (2) INTR(Interrupt Request) :引腳18,可屏蔽中斷請(qǐng)求信號(hào),輸入,高電平有效。CPU在每個(gè)指令周期的最后一個(gè)時(shí)鐘周期檢測(cè)該信號(hào)是否有效,若此信號(hào)有效,表明有外設(shè)提出了中斷請(qǐng)求,這時(shí)若IF=1,則當(dāng)前指令執(zhí)行完后立即響應(yīng)中斷;若IF=0,則中斷被屏蔽,外設(shè)發(fā)出的中斷請(qǐng)求將不被響應(yīng)。程序員可通過(guò)指令STI或CLI將IF標(biāo)志位置1或清零。 第3章 80 x86微處理器 3) 控制引腳 (1) NMI(Non-Maskable Interrupt):引腳17,非屏蔽中斷請(qǐng)求信號(hào),輸入,上升沿觸發(fā)。此請(qǐng)求不受標(biāo)志寄存器FLAGS中中
43、斷允許標(biāo)志位IF狀態(tài)的影響,只要此信號(hào)一出現(xiàn),在當(dāng)前指令執(zhí)行結(jié)束后立即進(jìn)行中斷處理。 (2) INTR(Interrupt Request):引腳18,可屏蔽中斷請(qǐng)求信號(hào),輸入,高電平有效。CPU在每個(gè)指令周期的最后一個(gè)時(shí)鐘周期檢測(cè)該信號(hào)是否有效,若此信號(hào)有效,表明有外設(shè)提出了中斷請(qǐng)求,這時(shí)若IF=1,則當(dāng)前指令執(zhí)行完后立即響應(yīng)中斷;若IF=0,則中斷被屏蔽,外設(shè)發(fā)出的中斷請(qǐng)求將不被響應(yīng)。程序員可通過(guò)指令STI或CLI將IF標(biāo)志位置1或清0。 第3章 80 x86微處理器 (3) CLK(Clock):引腳19,系統(tǒng)時(shí)鐘,輸入。它通常與8284A時(shí)鐘發(fā)生器的時(shí)鐘輸出端相連。該時(shí)鐘信號(hào)有效高電平
44、與時(shí)鐘周期的比為1 3。 (4) RESET:引腳21,復(fù)位信號(hào),輸入,高電平有效。復(fù)位信號(hào)使處理器馬上結(jié)束現(xiàn)行操作,對(duì)處理器內(nèi)部寄存器進(jìn)行初始化。8086/8088要求復(fù)位脈沖寬度不得小于4個(gè)時(shí)鐘周期。復(fù)位后,內(nèi)部寄存器的狀態(tài)如表3.4所示。系統(tǒng)正常運(yùn)行時(shí),RESET保持低電平。 第3章 80 x86微處理器 表3.4 復(fù)位后內(nèi)部寄存器的狀態(tài) 內(nèi)部寄存器狀 態(tài)標(biāo)志寄存器IPCSDSSSES指令隊(duì)列緩沖器其余寄存器0000H0000HFFFFH0000H0000H0000H空0000H第3章 80 x86微處理器 (5) READY:引腳22,數(shù)據(jù)“準(zhǔn)備好”信號(hào)線,輸入。它實(shí)際上是所尋址的存儲(chǔ)
45、器或I/O端口發(fā)來(lái)的數(shù)據(jù)準(zhǔn)備就緒信號(hào),高電平有效。CPU在每個(gè)總線周期的T3狀態(tài)對(duì)READY引腳采樣,若為高電平,說(shuō)明數(shù)據(jù)已準(zhǔn)備好;若為低電平,說(shuō)明數(shù)據(jù)還沒(méi)有準(zhǔn)備好,CPU在T3狀態(tài)之后自動(dòng)插入一個(gè)或幾個(gè)等待狀態(tài)TW,直到READY變?yōu)楦唠娖?,才能進(jìn)入T4狀態(tài),完成數(shù)據(jù)傳送過(guò)程,從而結(jié)束當(dāng)前總線周期。 第3章 80 x86微處理器 (6) :引腳23,等待測(cè)試信號(hào),輸入。當(dāng)CPU執(zhí)行WAIT指令時(shí),每隔5個(gè)時(shí)鐘周期對(duì) 引腳進(jìn)行一次測(cè)試。若為高電平,CPU就仍處于空轉(zhuǎn)狀態(tài)進(jìn)行等待,直到 引腳變?yōu)榈碗娖?,CPU結(jié)束等待狀態(tài),執(zhí)行下一條指令,以使CPU與外部硬件同步。 (7) (Read):引腳32
46、,讀控制信號(hào),輸出。當(dāng) =0時(shí),表示將要執(zhí)行一個(gè)對(duì)存儲(chǔ)器或I/O端口的讀操作。到底是從存儲(chǔ)單元還是從I/O端口讀取數(shù)據(jù),取決于M/ (8086)或IO/ (8088)信號(hào)。 TESTTESTTESTRDRDIOM第3章 80 x86微處理器 (8)BHE/S7(Bus High Enable / Status):引腳34,高8位數(shù)據(jù)總線允許/狀態(tài)復(fù)用引腳,輸出。BHE在總線周期的T1狀態(tài)時(shí)輸出,當(dāng)該引腳輸出為低電平時(shí),表示當(dāng)前數(shù)據(jù)總線上高8位數(shù)據(jù)有效。該引腳和地址引腳A0配合表示當(dāng)前數(shù)據(jù)總線的使用情況,如表3.5所示,詳見(jiàn)“3.3.1 8086/8088存儲(chǔ)器組織”一節(jié)。S7 在8086中未被
47、定義,暫作備用狀態(tài)信號(hào)線。 第3章 80 x86微處理器 表表3.5 BHE與地址引腳與地址引腳A0編碼的含義編碼的含義 BHEA0數(shù)據(jù)總線的使用情況0011010116位字傳送(偶地址開始的兩個(gè)存儲(chǔ)器單元的內(nèi)容)在數(shù)據(jù)總線高8位(D15D8)和奇地址單元間進(jìn)行字節(jié)傳送在數(shù)據(jù)總線低8位(D7D0)和偶地址單元間進(jìn)行字節(jié)傳送無(wú)效第3章 80 x86微處理器 (9) MN/MX(Minimum/Maximum mode control):引腳33,最小/最大方式控制信號(hào),輸入。MN/MX引腳接高電平時(shí),8086/8088 CPU工作在最小方式,在此方式下,全部控制信號(hào)由CPU提供;MN/MX引腳接
48、低電平時(shí),8086/8088工作在最大方式,此時(shí)第2431引腳的功能示于圖3.7括號(hào)內(nèi),這時(shí),CPU發(fā)出的控制信號(hào)經(jīng)8288總線控制器進(jìn)行變換和組合,從而使總線的控制功能更加完善。 第3章 80 x86微處理器 2. 8086 最小工作方式及引腳2431的定義 當(dāng)MN/MX接高電平時(shí),系統(tǒng)工作于最小方式,即單處理器方式,它適用于較小規(guī)模的微機(jī)系統(tǒng)。其典型系統(tǒng)結(jié)構(gòu)如圖3.8所示。 圖中8284A為時(shí)鐘發(fā)生/驅(qū)動(dòng)器,外接晶體的基本震蕩頻率為15 MHz,經(jīng)8284A三分頻后,送給CPU做系統(tǒng)時(shí)鐘。 8282為8位地址鎖存器。當(dāng)8086訪問(wèn)存儲(chǔ)器時(shí),在總線周期的T1狀態(tài)下發(fā)出地址信號(hào),經(jīng)8282鎖存
49、后的地址信號(hào)可以在訪問(wèn)存儲(chǔ)器操作期間始終保持不變,為外部提供穩(wěn)定的地址信號(hào)。8282是典型的8位地址鎖存芯片,8086采用20位地址,再加上BHE信號(hào),所以需要3片8282作為地址鎖存器。 第3章 80 x86微處理器 8286為具有三態(tài)輸出的8位數(shù)據(jù)總線收發(fā)器,用于需要增加驅(qū)動(dòng)能力的系統(tǒng)。在8086系統(tǒng)中需要2片8286,而在8088系統(tǒng)中只用1片就可以了。 系統(tǒng)中還有一個(gè)等待狀態(tài)產(chǎn)生電路,它向8284A的RDY端提供一個(gè)信號(hào),經(jīng)8284A同步后向CPU的READY線發(fā)數(shù)據(jù)準(zhǔn)備就緒信號(hào),通知CPU數(shù)據(jù)已準(zhǔn)備好,可以結(jié)束當(dāng)前的總線周期。當(dāng)READY=0時(shí),CPU在T3之后自動(dòng)插入TW狀態(tài),以避
50、免CPU與存儲(chǔ)器或I/O設(shè)備進(jìn)行數(shù)據(jù)交換時(shí),因后者速度慢而丟失數(shù)據(jù)。 第3章 80 x86微處理器 圖3.8 8086最小方式系統(tǒng)結(jié)構(gòu) 8086 CPUMX/MNVCC(5 V)ALECLKREADYBHERESETA19 /S6A16 /S3AD15 /AD08284A時(shí)鐘發(fā)生器VCC等待狀態(tài)產(chǎn)生器地址鎖存器8282(3片)數(shù)據(jù)收發(fā)器8286(2片)STBOE地址總線ABDENR/DT數(shù)據(jù)總線DBIO/MINTRINTARDWRHOLDHLDA控制總線CBRDY第3章 80 x86微處理器 在最小方式下,第2431引腳的功能如下: (1) INTA(Interrupt Acknowledge
51、):引腳24,中斷響應(yīng)信號(hào),輸出。該信號(hào)用于對(duì)外設(shè)的中斷請(qǐng)求(經(jīng)INTR引腳送入CPU)作出響應(yīng)。INTA實(shí)際上是兩個(gè)連續(xù)的負(fù)脈沖信號(hào),第一個(gè)負(fù)脈沖通知外設(shè)接口,它發(fā)出的中斷請(qǐng)求已被允許;外設(shè)接口接到第2個(gè)負(fù)脈沖后,將中斷類型號(hào)放到數(shù)據(jù)總線上,以便CPU根據(jù)中斷類型號(hào)到內(nèi)存的中斷向量表中找出對(duì)應(yīng)中斷的中斷服務(wù)程序入口地址,從而轉(zhuǎn)去執(zhí)行中斷服務(wù)程序。 第3章 80 x86微處理器 (2) ALE(Address Latch Enable):引腳25,地址鎖存允許信號(hào),輸出。它是8086/8088提供給地址鎖存器的控制信號(hào),高電平有效。在任何一個(gè)總線周期的T1狀態(tài),ALE均為高電平,以表示當(dāng)前地址
52、/數(shù)據(jù)復(fù)用總線上輸出的是地址信息,ALE由高到低的下降沿把地址裝入地址鎖存器中。 (3) DEN(Data Enable):引腳26,數(shù)據(jù)允許信號(hào),輸出。當(dāng)使用數(shù)據(jù)總線收發(fā)器時(shí),該信號(hào)為收發(fā)器的OE端提供了一個(gè)控制信號(hào),該信號(hào)決定是否允許數(shù)據(jù)通過(guò)數(shù)據(jù)總線收發(fā)器。DEN為高電平時(shí),收發(fā)器在收或發(fā)兩個(gè)方向上都不能傳送數(shù)據(jù),當(dāng)DEN為低電平時(shí),允許數(shù)據(jù)通過(guò)數(shù)據(jù)總線收發(fā)器。 第3章 80 x86微處理器 (4) DT/R(Data Transmit/Receive):引腳27,數(shù)據(jù)發(fā)送/接收信號(hào),輸出。該信號(hào)用來(lái)控制數(shù)據(jù)的傳送方向。當(dāng)其為高電平時(shí),8086 CPU通過(guò)數(shù)據(jù)總線收發(fā)器進(jìn)行數(shù)據(jù)發(fā)送;當(dāng)其為
53、低電平時(shí),則進(jìn)行數(shù)據(jù)接收。在DMA方式,它被浮置為高阻狀態(tài)。 (5) M/IO(Memory/Input and Output):引腳28,存儲(chǔ)器I/O端口控制信號(hào),輸出。該信號(hào)用來(lái)區(qū)分CPU是進(jìn)行存儲(chǔ)器訪問(wèn)還是I/O端口訪問(wèn)。當(dāng)該信號(hào)為高電平時(shí),表示CPU正在和存儲(chǔ)器進(jìn)行數(shù)據(jù)傳送;如為低電平,表明CPU正在和輸入/輸出設(shè)備進(jìn)行數(shù)據(jù)傳送。在DMA方式,該引腳被浮置為高阻狀態(tài)。 第3章 80 x86微處理器 (6) WR(Write):引腳29,寫信號(hào),輸出。WR有效時(shí),表示CPU當(dāng)前正在進(jìn)行存儲(chǔ)器或I/O寫操作,到底是哪一種寫操作,取決于M/IO信號(hào)。在DMA方式,該引腳被浮置為高阻狀態(tài)。 (
54、7) HOLD(Hold request):引腳31,總線保持請(qǐng)求信號(hào),輸入。當(dāng)8086/8088 CPU之外的總線主設(shè)備要求占用總線時(shí),通過(guò)該引腳向CPU發(fā)一個(gè)高電平的總線保持請(qǐng)求信號(hào)。 第3章 80 x86微處理器 (8) HLDA(Hold Acknowledge):引腳30,總線保持響應(yīng)信號(hào),輸出。當(dāng)CPU接收到HOLD信號(hào)后,這時(shí)如果CPU允許讓出總線,就在當(dāng)前總線周期完成時(shí),在T4狀態(tài)發(fā)出高電平有效的HLDA信號(hào)給以響應(yīng)。此時(shí),CPU讓出總線使用權(quán),發(fā)出HOLD請(qǐng)求的總線主設(shè)備獲得總線的控制權(quán)。 第3章 80 x86微處理器 3. 8086 最大工作方式及引腳2431的定義 當(dāng)MN
55、/MX接低電平時(shí),系統(tǒng)工作于最大方式,即多處理器方式,其典型系統(tǒng)結(jié)構(gòu)如圖3.9所示。比較最大方式和最小方式系統(tǒng)結(jié)構(gòu)圖可以看出,最大方式和最小方式有關(guān)地址總線和數(shù)據(jù)總線的電路部分基本相同,即都需要地址鎖存器及數(shù)據(jù)總線收發(fā)器。而控制總線的電路部分有很大差別。在最小工作方式下,控制信號(hào)可直接從8086/8088 CPU得到,不需要外加電路。最大方式是多處理器工作方式,需要協(xié)調(diào)主處理器和協(xié)處理器的工作。因此,8086/8088的部分引腳需要重新定義,控制信號(hào)不能直接從8086/8088 CPU引腳得到,需要外加8288總線控制器,通過(guò)它對(duì)CPU發(fā)出的控制信號(hào)(S0,S1,S2)進(jìn)行變換和組合,以得到對(duì)
56、存儲(chǔ)器和I/O端口的讀寫控制信號(hào)和對(duì)地址鎖存器8282及對(duì)總線收發(fā)器8286的控制信號(hào),使總線的控制功能更加完善。 第3章 80 x86微處理器 8086 CPU5 VCLKREADY0SRESETA19 /S6A16 /S3AD15 /AD08284A時(shí)鐘發(fā)生器VCC等待狀態(tài)產(chǎn)生器地址鎖存器8282(3片)數(shù)據(jù)收發(fā)器8286(2片)OE地址總線AB數(shù)據(jù)總線DB控制總線CB1S2S 8288 總線控制器0S1S2SCLKCENAENINTAIOBMRDCMWTCAMWCIORCIOWCAIOWCSTBBHE1TOEMX/MNDENR/DTALE圖3.9 8086最大方式系統(tǒng)結(jié)構(gòu) 第3章 80
57、x86微處理器 在最大方式下,第2431引腳的功能如下: (1) QS1、QS0(Instruction Queue Status):引腳24、25,指令隊(duì)列狀態(tài)信號(hào),輸出。QS1、QS0兩個(gè)信號(hào)電平的不同組合指明了8086/8088內(nèi)部指令隊(duì)列的狀態(tài),其代碼組合對(duì)應(yīng)的含義如表3.6所示。 表表3.6 QS1、QS0的代碼組合對(duì)應(yīng)的含義的代碼組合對(duì)應(yīng)的含義 QS1QS0含含 義義00無(wú)操作無(wú)操作01從指令隊(duì)列的第一字節(jié)中取走代碼從指令隊(duì)列的第一字節(jié)中取走代碼10隊(duì)列為空隊(duì)列為空11除第一字節(jié)外,還取走了后續(xù)字節(jié)中的代碼除第一字節(jié)外,還取走了后續(xù)字節(jié)中的代碼第3章 80 x86微處理器 (2)
58、S2、S1、S0(Bus Cycle Status):引腳26、27、28,總線周期狀態(tài)信號(hào),輸出。低電平有效的三個(gè)狀態(tài)信號(hào)連接到總線控制器8288的輸入端,8288對(duì)這些信號(hào)進(jìn)行譯碼后產(chǎn)生內(nèi)存及I/O端口的讀寫控制信號(hào)。表3.7給出了這三個(gè)狀態(tài)信號(hào)的代碼組合使8288產(chǎn)生的控制信號(hào)及其對(duì)應(yīng)的操作。 第3章 80 x86微處理器 表3.7中前7種代碼組合都對(duì)應(yīng)某個(gè)總線操作過(guò)程,通常稱為有源狀態(tài),它們處于前一個(gè)總線周期的T4狀態(tài)或本總線周期的T1、T2狀態(tài)中,S2、S1、S0至少有一個(gè)信號(hào)為低電平。在總線周期的T3、TW狀態(tài)并且READY信號(hào)為高電平時(shí),S2、S1、S0都成為高電平,此時(shí),前一個(gè)
59、總線操作就要結(jié)束,后一個(gè)新的總線周期尚未開始,通常稱為無(wú)源狀態(tài)。而在總線周期的最后一個(gè)狀態(tài)即T4狀態(tài),S2、S1、S0中任何一個(gè)或幾個(gè)信號(hào)的改變,都意味著下一個(gè)新的總線周期的開始。 第3章 80 x86微處理器 表表3.7 S2、S1、S0的代碼組合對(duì)應(yīng)的操作的代碼組合對(duì)應(yīng)的操作 8288產(chǎn)生的控制信號(hào)產(chǎn)生的控制信號(hào)對(duì)對(duì) 應(yīng)應(yīng) 操操 作作000 發(fā)中斷響應(yīng)信號(hào)發(fā)中斷響應(yīng)信號(hào) 001 讀讀I/O端口端口 010 寫寫I/O端口端口01 1 無(wú)無(wú) 暫停暫停 10 0 取指令取指令 101 讀內(nèi)存讀內(nèi)存110 寫內(nèi)存寫內(nèi)存11 1無(wú)無(wú) 無(wú)源狀態(tài)無(wú)源狀態(tài)2S1S0SINTAIORCAIOWCIOWC和
60、WRDCAMWCNWTC和WRDC第3章 80 x86微處理器 (3) LOCK(Lock):引腳29,總線封鎖信號(hào),輸出。當(dāng)LOCK為低電平時(shí),系統(tǒng)中其他總線主設(shè)備就不能獲得總線的控制權(quán)而占用總線。LOCK信號(hào)由指令前綴LOCK產(chǎn)生,LOCK指令后面的一條指令執(zhí)行完后,便撤消了LOCK信號(hào)。另外,在DMA期間,LOCK被浮空而處于高阻狀態(tài)。 第3章 80 x86微處理器 (4) RQ/GT1、RQ/GT0(Request/Grant):引腳30、31,總線請(qǐng)求信號(hào)(輸入)/總線請(qǐng)求允許信號(hào)(輸出)。這兩個(gè)信號(hào)可供8086/8088以外的2個(gè)總線主設(shè)備向8086/8088發(fā)出使用總線的請(qǐng)求信號(hào)
61、RQ(相當(dāng)于最小方式時(shí)的HOLD信號(hào))。而8086/8088在現(xiàn)行總線周期結(jié)束后讓出總線,發(fā)出總線請(qǐng)求允許信號(hào)GT(相當(dāng)于最小方式的HLDA信號(hào)),此時(shí),外部總線主設(shè)備便獲得了總線的控制權(quán)。其中RQ / GT0比RQ / GT1的優(yōu)先級(jí)高。第3章 80 x86微處理器 8288總線控制器還提供了其他一些控制信號(hào):MRDC(Memory Read Command)、MWTC(Memory Write Command)、IORC(I/O Read Command)、IOWC(I/O Write Command)以及INTA等,它們分別是存儲(chǔ)器與I/O的讀寫命令以及中斷響應(yīng)信號(hào)。另外,還有AMWC與
62、AIOWC兩個(gè)信號(hào),它們分別表示提前寫內(nèi)存命令和提前寫I/O命令,其功能分別與MWTC和IOWC一樣,只是它們由8288提前一個(gè)時(shí)鐘周期發(fā)出信號(hào),這樣,一些較慢的存儲(chǔ)器和外設(shè)將得到一個(gè)額外的時(shí)鐘周期去執(zhí)行寫入操作。第3章 80 x86微處理器 48088與與8086引腳的區(qū)別引腳的區(qū)別 8088與8086絕大多數(shù)引腳的名稱和功能是完全相同的,僅有以下三點(diǎn)不同: (1) AD15AD0的定義不同。在8086中都定義為地址/數(shù)據(jù)分時(shí)復(fù)用引腳;而在8088中,由于只需要8條數(shù)據(jù)線,因此,對(duì)應(yīng)于8086的AD15AD8這8根引腳在8088中定義為A15A8,它們?cè)?088中只做地址線用。 (2) 引腳
63、34的定義不同。在最大方式下,8088的第34引腳保持高電平,而8086在最大方式下34引腳的定義與最小方式下相同。 第3章 80 x86微處理器 (3) 引腳28的有效電平高低定義不同。8088和8086的第28引腳的功能是相同的,但有效電平的高低定義不同。8088的第28引腳為IO/M,當(dāng)該引腳為低電平時(shí),表明8088正在進(jìn)行存儲(chǔ)器操作;當(dāng)該引腳為高電平時(shí),表明8088正在進(jìn)行I/O操作。8086的第28引腳為M/IO,電平與8088正好相反。 第3章 80 x86微處理器 3.3 8086/8088存儲(chǔ)器和存儲(chǔ)器和I/O組織組織 3.3.1 8086/8088存儲(chǔ)器組織存儲(chǔ)器組織 180
64、86/8088存儲(chǔ)空間 8086/8088有20條地址線,可直接對(duì)1 M個(gè)存儲(chǔ)單元進(jìn)行訪問(wèn)。每個(gè)存儲(chǔ)單元存放一個(gè)字節(jié)型數(shù)據(jù),且每個(gè)存儲(chǔ)單元都有一個(gè)20位的地址,這1 M個(gè)存儲(chǔ)單元對(duì)應(yīng)的地址為00000HFFFFFH,如圖3.10所示。 一個(gè)存儲(chǔ)單元中存放的信息稱為該存儲(chǔ)單元的內(nèi)容。如圖3.10所示,00001H單元的內(nèi)容為9FH,記為:(00001H)=9FH。 第3章 80 x86微處理器 78H9FH存儲(chǔ)單元地址00000H00001H46HDFH6CH98H65H5EHA6H66H6FH0011FH00120H00121HE8009HE800AHE800BHE800CHE800DHFFF
65、FFH圖3.10 數(shù)據(jù)在存儲(chǔ)器中的存放 第3章 80 x86微處理器 若存放的是字型數(shù)據(jù)(16位二進(jìn)制數(shù)),則將字的低位字節(jié)存放在低地址單元,高位字節(jié)存放在高地址單元。如從地址0011FH開始的兩個(gè)連續(xù)單元中存放一個(gè)字型數(shù)據(jù),則該數(shù)據(jù)為DF46H,記為:(0011FH)=DF46H。 若存放的是雙字型數(shù)據(jù)(32位二進(jìn)制數(shù),這種數(shù)一般作為地址指針,其低位字是被尋址地址的偏移量,高位字是被尋址地址所在段的段地址),這種類型的數(shù)據(jù)要占用連續(xù)的4個(gè)存儲(chǔ)單元,同樣,低字節(jié)存放在低地址單元,高字節(jié)存放在高地址單元。如從地址E800AH開始的連續(xù)4個(gè)存儲(chǔ)單元中存放了一個(gè)雙字型數(shù)據(jù),則該數(shù)據(jù)為66A65E65
66、H,記為:(E800AH)=66A65E65H。 第3章 80 x86微處理器 2存儲(chǔ)器的段結(jié)構(gòu)存儲(chǔ)器的段結(jié)構(gòu) 8086/8088 CPU中有關(guān)可用來(lái)存放地址的寄存器如IP、SP等都是16位的,故只能直接尋址64 KB。為了對(duì)1 M個(gè)存儲(chǔ)單元進(jìn)行管理,8086/8088采用了段結(jié)構(gòu)的存儲(chǔ)器管理方法。 8086/8088將整個(gè)存儲(chǔ)器分為許多邏輯段,每個(gè)邏輯段的容量小于或等于64 KB,允許它們?cè)谡麄€(gè)存儲(chǔ)空間中浮動(dòng),各個(gè)邏輯段之間可以緊密相連,也可以互相重疊。用戶編寫的程序(包括指令代碼和數(shù)據(jù))被分別存儲(chǔ)在代碼段、數(shù)據(jù)段、堆棧段和附加數(shù)據(jù)段中,這些段的段地址分別存儲(chǔ)在段寄存器CS、DS、SS和ES中,而指令或數(shù)據(jù)在段內(nèi)偏移地址可由對(duì)應(yīng)的地址寄存器或立即數(shù)給出,如表3.8所示。 第3章 80 x86微處理器 表表3.8 存儲(chǔ)器操作時(shí)段地址和段內(nèi)偏移地址的來(lái)源存儲(chǔ)器操作時(shí)段地址和段內(nèi)偏移地址的來(lái)源 存儲(chǔ)器操作類型存儲(chǔ)器操作類型 段段 地地 址址 偏移地址偏移地址 正常來(lái)源正常來(lái)源 其他來(lái)源其他來(lái)源取指令取指令 CS 無(wú)無(wú) IP 存取操作數(shù)存取操作數(shù) DSCS、ES、SS 有效地址有效地址EA通
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 慈母情深 (3)
- 國(guó)際貿(mào)易第七章
- 高考政治一輪復(fù)習(xí)經(jīng)濟(jì)生活第五課企業(yè)與勞動(dòng)者課件
- 計(jì)劃生育內(nèi)容培訓(xùn)
- 人體空間醫(yī)學(xué)和治療癌癥專家講座
- 部編版六年級(jí)下冊(cè)語(yǔ)文語(yǔ)文園地一課件
- 湘教版八上數(shù)學(xué)練習(xí)題---全等三角形的判定3—AAS課件
- 幼兒園看圖寫話過(guò)河
- 散文兩篇-PPT
- 數(shù)控機(jī)床的故障診療和維修技術(shù)專家講座
- 部編版二年級(jí)語(yǔ)文下冊(cè)第八單元《祖先的搖籃》課件
- 部編版二年級(jí)下冊(cè)語(yǔ)文課件-課文七-當(dāng)世界年紀(jì)還小的時(shí)候-帶朗讀音頻-
- 第單元概念社區(qū)衛(wèi)生服務(wù)優(yōu)秀文檔
- 西方經(jīng)濟(jì)學(xué)的主要流派會(huì)三小伙伴們組
- 部編版二年級(jí)上冊(cè)語(yǔ)文23-紙船和風(fēng)箏-課件