第二章8086系統(tǒng)結(jié)構(gòu)_第1頁
第二章8086系統(tǒng)結(jié)構(gòu)_第2頁
第二章8086系統(tǒng)結(jié)構(gòu)_第3頁
第二章8086系統(tǒng)結(jié)構(gòu)_第4頁
第二章8086系統(tǒng)結(jié)構(gòu)_第5頁
已閱讀5頁,還剩74頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第2章8086系統(tǒng)結(jié)構(gòu)2.18086CPU結(jié)構(gòu)

2.28086CPU的引腳及其功能2.38086存儲(chǔ)器組織2.48086系統(tǒng)配置2.18086CPU結(jié)構(gòu)Inter8086CPU是16位微處理器,它有16根數(shù)據(jù)線和20根地址線,直接尋址空間為,即1MB。8088CPU內(nèi)部結(jié)構(gòu)與8086基本相同但對(duì)外數(shù)據(jù)總線只有8條,稱為準(zhǔn)16位微處理器。2.1.18086CPU的內(nèi)部結(jié)構(gòu)

微型計(jì)算機(jī)工作時(shí),總是先從存儲(chǔ)器中取指令,需要的話再取操作數(shù),然后執(zhí)行指令,送結(jié)果。通常8位機(jī)是串行執(zhí)行的,而16位機(jī)可并行操作。8086CPU由總線接口部件BIU和指令執(zhí)行部件EU組成,BIU和EU的操作是并行的??偩€接口部件BIU完成取指令,讀操作數(shù),送結(jié)果,所有與外部的操作由其完成。而指令執(zhí)行部件EU從BIU的指令隊(duì)列中取出指令,執(zhí)行指令,不必訪問存儲(chǔ)器或I/O端口。若需要訪問存儲(chǔ)器或I/O端口,也是由EU向BIU發(fā)出訪問所需要的地址,在BIU中形成物理地址,然后訪問存儲(chǔ)器或I/O端口,取得操作數(shù)送到EU,或送結(jié)果到指定的內(nèi)存單元或I/O端口。這種并行工作方式,大大提高了系統(tǒng)工作效率。圖2.18086CPU內(nèi)部結(jié)構(gòu)示意圖1.總線接口部件BIU總線接口部件BIU是8086CPU與外部(存儲(chǔ)器和I/O端口)的接口,它提供了16位雙向數(shù)據(jù)總線和20位地址總線,完成所有外部總線操作。BIU具有下列功能:地址形成、取指令、指令排隊(duì),讀/寫操作數(shù)和總線控制。它由下列各部分組成:(1)16位段地址寄存器:CS-代碼段寄存器DS-數(shù)據(jù)段寄存器ES-附加段寄存器SS-堆棧段寄存器(2)16位指令指針寄存器IP:存放下一條要執(zhí)行指令的偏移地址。(3)20位物理地址加法器:將16位邏輯地址變換成存儲(chǔ)器讀/寫所需要的20位物理地址,實(shí)際上完成地址加法操作。(4)6字節(jié)指令隊(duì)列:預(yù)放6字節(jié)的指令代碼。(5)總線控制邏輯:發(fā)出總線控制信號(hào)。2.指令執(zhí)行部件EU指令執(zhí)行部件EU完成指令譯碼和執(zhí)行指令的工作。它由以下幾個(gè)部分組成:(1)算術(shù)邏輯運(yùn)算單元ALU:完成8位或16位的二進(jìn)制運(yùn)算,16位暫存器可暫存參加運(yùn)算的操作數(shù)。(2)標(biāo)志寄存器PSW:存放ALU運(yùn)算結(jié)果特征。(3)寄存器組:4個(gè)通用16位寄存器AX、BX、CX、DX,其中AX又稱累加器。4個(gè)專用16位寄存器:源變址寄存器SI、目的變址寄存器DI、堆棧指針寄存器SP、基址指針寄存器BP。(4)EU控制器:取指令控制和時(shí)序控制部件。2.1.2寄存器結(jié)構(gòu)寄存器用來存放運(yùn)算過程中所需要的操作數(shù)地址、操作數(shù)及中間結(jié)果。8086微處理器內(nèi)部包含有4組16位寄存器,它們分別是通用寄存器組,指針和變址寄存器,段寄存器,指令指針及標(biāo)志位寄存器。如圖2.2所示。2.8086CPU的內(nèi)部寄存器圖2.28086CPU內(nèi)部寄存器

數(shù)據(jù)寄存器

指針與變址寄存器AXAHALSP

堆棧指針寄存器BXBHBLBP

基址寄存器CXCHCLSI

源變址寄存器DXDHDLDI

目的變址寄存器

段寄存器

指令指針與標(biāo)志寄存器CS

代碼段寄存器IP

指令指針寄存器DS

數(shù)據(jù)段寄存器FLAGS

標(biāo)志位寄存器ES

附加段寄存器

SS

堆棧段寄存器

1.通用寄存器組8086/8088CPU在指令執(zhí)行部件EU中有4個(gè)16位通用寄存器,它們是AX、BX、CX和DX,用以存放16位數(shù)據(jù)或地址。也可分為8個(gè)8位寄存器來使用,低8位是AL、BL、CL和DL,高8位為AH、BH、CH和DH,只能存放8位數(shù)據(jù),不能存放地址。在8086中,某些通用寄存器用作專門用途。例如,串指令中必須用CX寄存器作為計(jì)數(shù)寄存器,存放串的長度,同樣,AX、BX、DX寄存器又可分別稱為累加器、基址寄存器及數(shù)據(jù)寄存器。2.指針和變址寄存器8086/8088CPU中,有一組4個(gè)16位寄存器,它們是基址指針寄存器BP,堆棧指針寄存器SP,源變址寄存器SI和目的變址寄存器DI。這組寄存器存放的內(nèi)容是某一段內(nèi)地址偏移量,用來形成操作數(shù)地址,主要在堆棧操作和變址運(yùn)算中使用。BP和SP寄存器稱為指針寄存器,與SS聯(lián)用,為訪問現(xiàn)行堆棧段提供方便。通常BP寄存器在間接尋址中使用,操作數(shù)在堆棧段中,由SS段寄存器與BP組合形成操作數(shù)地址。即BP中存放現(xiàn)行堆棧段中一個(gè)數(shù)據(jù)區(qū)的“基址”的偏移量,所以稱BP寄存器為基址指針。SP寄存器在堆棧操作中使用,PUSH和POP指令是從SP寄存器得到現(xiàn)行堆棧段的段內(nèi)地址偏移量,所以稱SP寄存器為堆棧指針,SP始終指向棧頂。寄存器SI和DI稱為變址寄存器,通常與DS一起使用,為訪問現(xiàn)行數(shù)據(jù)段提供段內(nèi)地址偏移量。在串指令中,其中源操作數(shù)的偏移量存放在SI中,目的操作數(shù)的偏移量存放在DI中,SI與DI的作用不能互換,否則傳送地址相反。在串指令中,SI、DI均為隱含尋址,此時(shí),SI和DS聯(lián)用,DI和ES聯(lián)用。3.段寄存器8086/8088CPU可直接尋址1MB的存儲(chǔ)器空間,直接尋址需要20位地址碼,而所有內(nèi)部寄存器都是16位的,只能直接尋址64KB,因此采用分段技術(shù)來解決。將1MB的存儲(chǔ)空間分成若干邏輯段,每段最長64KB,這些邏輯段在整個(gè)存儲(chǔ)空間中可浮動(dòng)。8086/8088CPU內(nèi)部設(shè)置了4個(gè)16位段寄存器,它們分別是代碼段寄存器CS、數(shù)據(jù)段寄存器DS、堆棧段寄存器SS、附加段寄存器ES,由它們給出相應(yīng)邏輯段的首地址,稱為“段基址”。段基址與段內(nèi)偏移地址組合形成20位物理地址,段內(nèi)偏移地址可存放在寄存器中,也可存放在存儲(chǔ)器中。例2.1代碼段寄存器CS存放當(dāng)前代碼段基地址,IP指令指針寄存器存放了下一條要執(zhí)行指令的段內(nèi)偏移地址,其中CS=2000H,IP=003AH.通過組合,形成20位存儲(chǔ)單元的尋址地址為2003AH。代碼段內(nèi)存放可執(zhí)行的指令代碼,數(shù)據(jù)段和附加段內(nèi)存放操作的數(shù)據(jù),通常操作數(shù)在現(xiàn)行數(shù)據(jù)段中,而在串指令中,目的操作數(shù)指明必須在現(xiàn)行附加段中。堆棧段開辟為程序執(zhí)行中所要用的堆棧區(qū),采用先進(jìn)后出的方式訪問它。各個(gè)段寄存器指明了一個(gè)規(guī)定的現(xiàn)行段,各段寄存器不可互換使用。程序較小時(shí),代碼段、數(shù)據(jù)段、堆棧段可放在一個(gè)段內(nèi),即包含在64KB之內(nèi),而當(dāng)程序或數(shù)據(jù)量較大時(shí),超過了64KB,可以定義多個(gè)代碼段或數(shù)據(jù)段、堆棧段、附加段。現(xiàn)行段由段寄存器指明段地址,使用中可以修改段寄存器內(nèi)容,指向其它段。有時(shí)為了明確起見,可在指令前加上段超越的前綴字,以指定操作數(shù)所在段。4.指令指針寄存器

8086/8088CPU中設(shè)置了一個(gè)16位指令指針寄存器IP,用來存放將要執(zhí)行的下一條指令在現(xiàn)行代碼段中的偏移地址。程序運(yùn)行中,它由BIU自動(dòng)將其修改,使IP始終指向下一條將要執(zhí)行的指令的地址,因此它是用來控制指令序列的執(zhí)行流程的。8086程序不能直接訪問IP,但可以通過某些指令修改IP的內(nèi)容。例如,當(dāng)遇到中斷指令或調(diào)用子程序指令時(shí),8086自動(dòng)調(diào)整IP的內(nèi)容,將IP中下一條將要執(zhí)行的指令地址偏移量入棧保護(hù),待中斷程序執(zhí)行完畢或子程序返回時(shí),可將保護(hù)的內(nèi)容從堆棧中彈出到IP,使主程序繼續(xù)運(yùn)行。在跳轉(zhuǎn)指令時(shí),則將新的跳轉(zhuǎn)目標(biāo)地址送入IP,改變它的內(nèi)容,實(shí)現(xiàn)了程序的轉(zhuǎn)移。

5.標(biāo)志寄存器PSW

標(biāo)志寄存器是一個(gè)16位的寄存器,8086共使用了9個(gè)有效位,格式如圖2.3所示。其中的6位是狀態(tài)標(biāo)志位:CF、PF、AF、ZF、CF和OF。3位為控制標(biāo)志位:TF、IF和DF。狀態(tài)標(biāo)志位是當(dāng)一些指令執(zhí)行后,表征所產(chǎn)生數(shù)據(jù)的一些特征。而控制標(biāo)志位則可以由程序?qū)懭?,以達(dá)到控制處理機(jī)狀態(tài)或程序執(zhí)行方式的表征。圖2.3標(biāo)志寄存器格式D15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0

OFDFIFTFSFZF

AF

PF

CFD15D0OFDFIFTFSFZFAFPFCF進(jìn)借位標(biāo)志奇偶標(biāo)志半進(jìn)借位標(biāo)志零標(biāo)志符號(hào)標(biāo)志單步中斷中斷允許方向標(biāo)志溢出標(biāo)志1-有進(jìn)、借位0-無進(jìn)、借位1-低8位有偶數(shù)個(gè)10-低8位有奇數(shù)個(gè)11-低4位向高4位有進(jìn)、借位0-低4位向高4位無進(jìn)、借位1-結(jié)果為00-結(jié)果不為0(1)6個(gè)狀態(tài)標(biāo)志位的功能分別敘述如下:CF(CarryFlag)——進(jìn)位標(biāo)志位。當(dāng)執(zhí)行一個(gè)加法(或減法)運(yùn)算,最高位產(chǎn)生進(jìn)位(或借位)時(shí),CF為1;否則為0。PF(ParityFlag)——奇偶標(biāo)志位。該標(biāo)志位反映運(yùn)算結(jié)果低8位中“1”的個(gè)數(shù)是偶數(shù)還是奇數(shù)。當(dāng)指令執(zhí)行結(jié)果的低8位中含有偶數(shù)個(gè)1時(shí),PF=1;否則PF=0。AF(AuxiliarycarryFlag)——輔助進(jìn)位標(biāo)志位。當(dāng)執(zhí)行一個(gè)加法(或減法)運(yùn)算,結(jié)果的低4位向高4位有進(jìn)位(或借位)時(shí),AF=1;否則AF=0。一般用在BCD碼運(yùn)算中,判斷是否需要十進(jìn)制調(diào)整。ZF(ZeroFlag)——全零標(biāo)志位。若當(dāng)前的運(yùn)算結(jié)果為零,ZF=1;否則ZF=0。SF(SignFlag)——符號(hào)標(biāo)志位。它和運(yùn)算結(jié)果的最高位相同。OF(OverflowFlag)——溢出標(biāo)志位。當(dāng)運(yùn)算過程中產(chǎn)生溢出時(shí),OF=1;否則OF=0。(2)3個(gè)控制標(biāo)志位用來控制CPU的操作,由指令進(jìn)行置位和復(fù)位。DF(DirectionFlag)——方向標(biāo)志位。它用以指定字符串處理時(shí)的方向,當(dāng)該位置“1”時(shí),字符串以遞減順序處理,即地址以從高到低順序遞減。反之,則以遞增順序處理。IF(InterruptenableFlag)——中斷標(biāo)志位。它用來控制8086是否允許接收外部中斷請(qǐng)求。若IF=1,允許CPU響應(yīng)外部中斷,反之則不響應(yīng)外部中斷。注意:IF的狀態(tài)不影響非屏蔽中斷請(qǐng)求(NMI)和CPU內(nèi)部中斷請(qǐng)求。TF(TrapFlag)——單步標(biāo)志位。它是為調(diào)試程序而設(shè)定的控制位。當(dāng)該位置“1”時(shí),8086CPU處于單步狀態(tài),此時(shí)CPU每執(zhí)行完一條指令就自動(dòng)產(chǎn)生一次內(nèi)部中斷,使用戶能逐條跟蹤程序進(jìn)行調(diào)試。當(dāng)該位復(fù)位后,CPU恢復(fù)正常工作。例2.2將5394H與-777FH兩數(shù)相加,并說明其標(biāo)志位狀態(tài):0101001110010100+1000100010000001—————————————1101110000010101運(yùn)算結(jié)果為-23EBH,并置標(biāo)志位為CF=0,PF=0,AF=0,ZF=0,SF=1,OF=0。本節(jié)主要內(nèi)容講解視頻2.28086CPUD引腳及其功能8086/8088CPU根據(jù)它的基本性能,應(yīng)包括20條地址線,16條數(shù)據(jù)線,加上控制信號(hào),電源和地線,芯片的引腳比較多。但由于制造工藝的限制,8086/8088CPU芯片采用40條引腳的雙列直插式封裝,因此部分引腳采用了分時(shí)復(fù)用的方式。另外8086/8088CPU可以工作在兩種工作模式(最小模式和最大模式),最小模式用于單機(jī)系統(tǒng)。系統(tǒng)中所需要的控制信號(hào)全部由8086直接提供。最大模式用于多處理機(jī)系統(tǒng),系統(tǒng)中所需要的控制信號(hào)由總線控制器8288提供。這樣,24腳~31腳的8條引腳在兩種工作模式中具有不同的功能。2.2.18086/8088CPU在最小模式中引腳定義8086CPU采用雙列直插式的封裝形式,具有40條引腳,見圖2.4。它采用分時(shí)復(fù)用的地址/數(shù)據(jù)總線,所以有一部分引腳具有雙重功能,即在不同時(shí)鐘周期內(nèi),引腳的作用不同。圖2.48086的引腳信號(hào)(括號(hào)中為最大模式下的名稱)1、地址/數(shù)據(jù)總線AD15-AD0:地址/數(shù)據(jù)復(fù)用引腳,雙向,三態(tài)。16位地址總線A15-A0,輸出訪問存儲(chǔ)器或I/O的地址信息。16位數(shù)據(jù)總線D15-D0,與存儲(chǔ)器和I/O設(shè)備交換數(shù)據(jù)信息。地址/數(shù)據(jù)總線復(fù)用2、地址/狀態(tài)總線A19/S6-A16/S3:地址/狀態(tài)總線復(fù)用引腳,輸出,三態(tài)。輸出訪問存儲(chǔ)器的20位地址的高4位地址A19-A16或輸出CPU的工作狀態(tài)。S6:指示8086/8088當(dāng)前是否與總線相連,S6=0,表示8086/8088當(dāng)前與總線相連。S5:表明中斷允許標(biāo)志當(dāng)前的設(shè)置。S5=0,表示CPU中斷是關(guān)閉的,禁止一切可屏蔽中斷源的中斷請(qǐng)求;S5=1,表示CPU中斷是開放的,允許一切可屏蔽中斷源的中斷申請(qǐng)。S4、S3:指出當(dāng)前使用段寄存器的情況。S4S3段寄存器00當(dāng)前正在使用ES01當(dāng)前正在使用SS10當(dāng)前正在使用CS或不需使用段寄存器11當(dāng)前正在使用DS3、控制總線(1)、/BHE/S7:高8位數(shù)據(jù)總線允許/狀態(tài)復(fù)用引腳。在總線周期的T1狀態(tài),此引腳輸出/BHE信號(hào),表示高8位數(shù)據(jù)線D15-D8上的數(shù)據(jù)有效。在T2、T3、TW和T4狀態(tài)時(shí),此引腳輸出S7狀態(tài)信號(hào)。/BHE、A0組合:/BHEA0總線使用情況

00從偶地址單元開始,在16位數(shù)據(jù)總線上進(jìn)行字傳送01從奇地址單元開始,在高8位數(shù)據(jù)總線上進(jìn)行字節(jié)傳送10從偶地址單元開始,在低8位數(shù)據(jù)總線上進(jìn)行字節(jié)傳送11無效S7:8086中無定義。(2)/RD:讀信號(hào),三態(tài)輸出,低電平有效。/RD=0,表示當(dāng)前CPU正在對(duì)存儲(chǔ)器或I/O端口進(jìn)行讀操作。(3)/WR:寫信號(hào),三態(tài)輸出,低電平有效。/WR=0,表示當(dāng)前CPU正在對(duì)存儲(chǔ)器或I/O端口進(jìn)行讀操作。(4)M//IO:存儲(chǔ)器或IO端口訪問信號(hào),三態(tài)輸出。M//IO=1,表示CPU正在訪問存儲(chǔ)器;M//IO=0,表示CPU正在訪問IO端口。(5)READY:準(zhǔn)備就緒信號(hào),輸入,高電平有效。READY=1,表示CPU訪問的存儲(chǔ)器或IO端口已準(zhǔn)備好傳送數(shù)據(jù)。若CPU在總線周期T3狀態(tài)檢測(cè)到READY=0,表示未準(zhǔn)備好,CPU自動(dòng)插入一個(gè)或多個(gè)等待狀態(tài)TW,直到READY=1為止。(6)INTR:可屏蔽中斷請(qǐng)求信號(hào),輸入,高電平有效。當(dāng)INTR=1,表示外設(shè)向CPU發(fā)出中斷請(qǐng)求,CPU在當(dāng)前指令周期的最后一個(gè)T狀態(tài)去采樣該信號(hào),若此時(shí)IF=1,CPU響應(yīng)中斷,執(zhí)行中斷服務(wù)程序。(7)/INTA:中斷響應(yīng)信號(hào),輸出,低電平有效。表示CPU響應(yīng)了外設(shè)發(fā)來的中斷申請(qǐng)信號(hào)INTR。(8)NMI:不可屏蔽中斷請(qǐng)求信號(hào),輸入,上升沿觸發(fā)。該請(qǐng)求信號(hào)不受IF狀態(tài)的影響,也不能用軟件屏蔽,一旦該信號(hào)有效,則執(zhí)行完當(dāng)前指令后立即響應(yīng)中斷。(9)/TEST:測(cè)試信號(hào),輸入,低電平有效。當(dāng)CPU執(zhí)行WAIT指令時(shí),每隔5個(gè)時(shí)鐘周期對(duì)/TEST進(jìn)行一次測(cè)試,若/TEST=1,繼續(xù)等待,直到/TEST=0。(10)RESET:復(fù)位信號(hào),輸入,高電平有效。RESET信號(hào)至少要保持4個(gè)時(shí)鐘周期。復(fù)位時(shí):標(biāo)志寄存器、IP、DS、SS、ES為0,CS=FFFFH,復(fù)位后CPU從FFFF0H處開始執(zhí)行。(11)ALE:地址鎖存允許信號(hào),輸出,高電平有效。用來鎖存地址信號(hào)A15-A0,分時(shí)使用AD15-AD0地址/數(shù)據(jù)總線。(12)DT//R:數(shù)據(jù)發(fā)送/接收控制信號(hào),三態(tài)輸出。此信號(hào)控制數(shù)據(jù)總線上的收發(fā)器8286的數(shù)據(jù)傳送方向,DT//R=1,發(fā)送數(shù)據(jù)-寫操作;DT//R=0,接收數(shù)據(jù)-讀操作。(13)/DEN:數(shù)據(jù)允許信號(hào),三態(tài)輸出,低電平有效。作為數(shù)據(jù)總線上收發(fā)器8286的選通信號(hào)。(14)HOLD:總線請(qǐng)求信號(hào),輸入,高電平有效。當(dāng)系統(tǒng)中CPU之外的另一個(gè)控制器要求使用總線時(shí),通過它向CPU發(fā)一高電平的請(qǐng)求信號(hào)。(15)HLDA:總線請(qǐng)求響應(yīng)信號(hào),輸出,高電平有效。當(dāng)HLDA有效時(shí),表示CPU對(duì)其它控制器的總線請(qǐng)求作出響應(yīng),與此同時(shí),所有與三總線相接的CPU的引腳呈現(xiàn)高阻抗?fàn)顟B(tài),從而讓出總線。(16)MN//MX:工作模式選擇信號(hào),輸入。

MN//MX=1,表示CPU工作在最小模式系統(tǒng);MN//MX=0,表示CPU工作在最大模式系統(tǒng)。(17)CLK:主時(shí)鐘信號(hào),輸入。8086/8088的時(shí)鐘頻率為5MHZ。4、電源線和地線8086/8088采用單+5V電源,1、20引腳為地線。5、最大模式下的有關(guān)引腳(1)QS1、QS0:指令隊(duì)列狀態(tài)信號(hào),輸出。

QS1QS0含義00無操作01將指令首字節(jié)送入指令隊(duì)列10隊(duì)列為空11將指令其余字節(jié)送指令隊(duì)列(2)/S2、/S1、/S0:總線周期狀態(tài)信號(hào),三態(tài)輸出。

/S2、/S1、/S0狀態(tài)信號(hào)的編碼/S2/S1/S0操作過程產(chǎn)生信號(hào)000發(fā)中斷響應(yīng)信號(hào)/INTA001讀I/O端口IORC010寫I/O端口IOWC011暫停無100取指令/MRDC101讀存儲(chǔ)器/MRDC110寫存儲(chǔ)器/AMWC111無作用無(3)/RQ//GT0、/RQ//GT1:總線請(qǐng)求信號(hào)(輸入)/總線請(qǐng)求允許信號(hào)(輸出),雙向,低電平有效。輸入時(shí)表示其他主控者向CPU請(qǐng)求使用總線,輸出時(shí)表示CPU對(duì)總線請(qǐng)求的響應(yīng)信號(hào),兩個(gè)引腳可以同時(shí)與兩個(gè)主控者相連。其中/RQ//GT0比/RQ//GT1有較高的優(yōu)先權(quán)。(4)/LOCK:總線封鎖信號(hào),三態(tài)輸出,低電平有效。/LOCK=0,CPU不允許其它控制器占用總線。本節(jié)主要內(nèi)容講解視頻2.38086存儲(chǔ)器組織2.3.1存儲(chǔ)器地址的分段1.存儲(chǔ)器地址的分段在存儲(chǔ)器中是以字節(jié)為單位存儲(chǔ)信息的,每個(gè)存儲(chǔ)單元有唯一的地址來確定。8086/8088系統(tǒng)有20根地址線可尋址1MB字節(jié)的存儲(chǔ)空間,即對(duì)存儲(chǔ)器尋址要20位物理地址,而8086為16位機(jī),CPU內(nèi)部寄存器只有16位,可尋址64KB。因此8086系統(tǒng)把整個(gè)存儲(chǔ)空間分成許多邏輯,每段容量不超過64KB。

8086系統(tǒng)對(duì)存儲(chǔ)器的分段采用靈活的方法,允許各個(gè)邏輯段在整個(gè)存儲(chǔ)空間中浮動(dòng),這樣在程序設(shè)計(jì)時(shí)可使程序保持相對(duì)的完整性。段和段之間可以是連續(xù)的(整個(gè)存儲(chǔ)空間分成16個(gè)邏輯段),也可以是分開的或重疊的。如圖2-7所示:任何一個(gè)存儲(chǔ)單元的實(shí)際地址,都是由段地址及段內(nèi)偏移地址兩部分組成,從圖2-7可以看出,任何一個(gè)存儲(chǔ)單元,可以在一個(gè)段中定義,也可定義在兩個(gè)重疊的邏輯段中,關(guān)鍵看段的首地址如何指定。IBMPC機(jī)對(duì)段的首地址有限制。規(guī)定必須從每小段的首地址開始,每16字節(jié)為一小段,所以段起始地址必須能被16整除才行。2.物理地址形成8086系統(tǒng)將段地址放在段寄存器中,稱為“段基址”。有4個(gè)段寄存器,分別為代碼段寄存器CS,數(shù)據(jù)段寄存器DS,附加段寄存器ES和堆棧段寄存器SS。段內(nèi)“偏移地址”指出了從段地址開始的相對(duì)偏移位置。它可以放在指令指針寄存器IP中,或16位通用寄存器中。

邏輯地址:存儲(chǔ)器的任一個(gè)邏輯地址由段基址和偏移地址組成,都是無符號(hào)的16位二進(jìn)制數(shù),程序設(shè)計(jì)時(shí)采用邏輯地址。物理地址:存儲(chǔ)器的絕對(duì)地址,從00000~FFFFFH,是CPU訪問存儲(chǔ)器的實(shí)際尋址地址,它由邏輯地址變換而來。物理地址計(jì)算如下所示:物理地址=段基址×16+偏移地址因?yàn)槎位分该慷蔚钠鹗嫉刂罚仨毷敲啃《蔚氖椎刂?,其?位一定為0,所以在實(shí)際工作時(shí),是從段寄存器中取出段基址,將其左移4位,再與16位偏移地址相加,就得到了物理地址,此地址在CPU的總線接口部件BIU的地址加法器中形成。

圖2.3物理地址形成過程3.邏輯地址來源邏輯地址來源如下表所示:

CS0000IP代碼段DS或ES0000SI、DI或BXSS0000SP或BP數(shù)據(jù)段堆棧段存儲(chǔ)器段寄存器和偏移地址寄存器組合關(guān)系2.3.28086存儲(chǔ)器的分體結(jié)構(gòu)8086系統(tǒng)中,1MB的存儲(chǔ)空間分成兩個(gè)存儲(chǔ)體:偶地址存儲(chǔ)體和奇地址存儲(chǔ)體,各為512KB,示意圖如圖2-10所示:圖2-118086系統(tǒng)的存儲(chǔ)器結(jié)構(gòu)圖2-11所示為8086系統(tǒng)的存儲(chǔ)器結(jié)構(gòu)。1MB存儲(chǔ)器分為兩個(gè)庫,每個(gè)庫的容量都是512KB。其中和數(shù)據(jù)總線D15~D8相連的庫全部由奇地址單元組成,稱為高位字節(jié)庫或奇地址庫,利用/BHE信號(hào)低電平作為此庫的選擇信號(hào);另一個(gè)庫和數(shù)據(jù)總線D7~D0相連,由偶地址單元組成,稱為低位字節(jié)庫或偶地址庫,利用地址線A0=0(低電平)作為此庫的選擇信號(hào)。所以只有A19~A1共19個(gè)地址線用來作為兩個(gè)庫內(nèi)的存儲(chǔ)單元的尋址信號(hào)。表2-1給出/BHE與A0相配合可能進(jìn)行的操作。A0操作數(shù)據(jù)引腳00從偶地址開始讀/寫一個(gè)字(規(guī)則字)AD15~AD010從偶地址開始讀/寫一個(gè)字節(jié)AD7~AD001從奇地址開始讀/寫一個(gè)字節(jié)AD15~AD80110從奇地址開始讀寫一個(gè)字(非規(guī)則字),第一總線周期高8位數(shù)據(jù)有效,第二總線周期低8位數(shù)據(jù)有效AD15~AD8AD7~AD0表2-1和A0的代碼組合對(duì)應(yīng)的存取操作當(dāng)在偶數(shù)地址中存取一個(gè)數(shù)據(jù)字節(jié)時(shí),CPU從低位庫中經(jīng)數(shù)據(jù)線AD7~AD0存取數(shù)據(jù)。由于被尋址的是偶數(shù)地址,所以地址位A0=0,由于A0是低電平所以才能在低位庫中實(shí)現(xiàn)數(shù)據(jù)的存取。而指令中給出的是在偶地址中存取一個(gè)字節(jié),/BHE信號(hào)應(yīng)為高電平,故不能從高位庫中讀出數(shù)據(jù)。相反,當(dāng)在奇數(shù)地址中存取一個(gè)字節(jié)數(shù)據(jù)時(shí),應(yīng)經(jīng)數(shù)據(jù)線的高8位AD15~AD8傳送。此時(shí),指令應(yīng)指出是從高位地址(奇數(shù)地址)尋址,/BHE信號(hào)為低電平有效狀態(tài),故高位庫能被選中,即能對(duì)高位庫中的存儲(chǔ)單元進(jìn)行存取操作。由于是高位地址尋址,故A0=1低位庫存儲(chǔ)單元不會(huì)被選中。如表2-1所示,8086CPU也可以一次在兩個(gè)庫中同時(shí)各存取一個(gè)字節(jié),完成一個(gè)字的存取操作。字?jǐn)?shù)據(jù)是將連續(xù)存放的兩個(gè)字節(jié)數(shù)據(jù)構(gòu)成一個(gè)16位的字?jǐn)?shù)據(jù)。規(guī)定字的高8位字節(jié)存放在高地址單元,字的低8位字節(jié)存放在低地址單元。同時(shí)規(guī)定將低位字節(jié)的地址作為這個(gè)字的地址。通常,一個(gè)字?jǐn)?shù)據(jù)總是位于偶地址,即偶地址對(duì)應(yīng)低位字節(jié),奇地址對(duì)應(yīng)高位字節(jié),符合這種規(guī)則存放的字?jǐn)?shù)據(jù)稱為“規(guī)則字”。雙字?jǐn)?shù)據(jù)要占用4個(gè)字節(jié),用以存放連續(xù)的兩個(gè)字。在存放低位字或高位字時(shí),高位字節(jié)位于高地址,低位字節(jié)位于低地址,以最低位字節(jié)地址作為它的地址。規(guī)則字的存取操作可以在一個(gè)總線周期中完成。由于地址線A19~A1是同時(shí)連接在兩個(gè)庫上的,只要BHE和A0信號(hào)同時(shí)有效,就可以一次實(shí)現(xiàn)在兩個(gè)庫中對(duì)一個(gè)字(高低兩字節(jié))完成存取操作。對(duì)字的存取操作所需的BHE及A0信號(hào)是由字操作指令給出的。對(duì)非規(guī)則字的存取操作就需要兩個(gè)總線周期才能完成:在第一個(gè)總線周期中,CPU是在高位庫中存取數(shù)據(jù)(低位字節(jié)),此時(shí)A0=1,BHE=0。然后再將存儲(chǔ)器地址加1,使A0=0,選中低位庫;在第二個(gè)總線周期中,是在低位庫中存取數(shù)據(jù)(高位字節(jié)),此時(shí)A0=0,BHE=1。本節(jié)主要內(nèi)容講解視頻2.3.3堆棧的概念

所謂堆棧是在存儲(chǔ)器中開辟一個(gè)區(qū)域,用來存放需要暫時(shí)保存的數(shù)據(jù)。堆棧段是由段定義語句在存儲(chǔ)器中定義的一個(gè)段,它可以在存儲(chǔ)器lMB空間內(nèi)任意浮動(dòng),堆棧段容量小于等于64KB,段基址由堆棧寄存器SS指定,棧頂由堆棧指針SP指定,根據(jù)堆棧構(gòu)成方式不同,堆棧指針SP指向的可以是當(dāng)前棧頂單元,也可以是棧頂上的一個(gè)“空”單元,一般采用SP指向當(dāng)前棧頂單元。堆棧的地址增長方式一般是向上增長,棧底設(shè)在存儲(chǔ)器的高地址區(qū),堆棧地址由高向低增長。例2.3:假如當(dāng)前SS=C000H,堆棧段<64KB,SP=1000H,指出當(dāng)前棧頂在存儲(chǔ)器中的位置。當(dāng)前棧頂在存儲(chǔ)器中的地址為C1000H,如圖所示:堆棧的工作方式是“先進(jìn)后出”,用入棧指令PUSH和出棧指令POP可將數(shù)據(jù)壓入堆?;驈亩褩V袕棾鰯?shù)據(jù),棧頂指針SP的變化由CPU自動(dòng)管理。堆棧以字為單位進(jìn)行操作,堆棧中的數(shù)據(jù)項(xiàng)以低字節(jié)在偶地址,高字節(jié)在奇地址的次序存放。當(dāng)執(zhí)行PUSH指令時(shí),CPU自動(dòng)修改指針SP-2→SP。使SP指向新棧頂,然后將低位數(shù)據(jù)壓人(SP)單元,高位數(shù)據(jù)壓入(SP+1)單元。當(dāng)執(zhí)行POP指令時(shí),CPU先將當(dāng)前棧頂SP(低位數(shù)據(jù))和SP+1(高位數(shù)據(jù))中的內(nèi)容彈出,然后再自動(dòng)修改指針,使SP+2→SP,SP指向新棧頂。

例2.4上圖中若AX=3322H,BX=1100H,CX=6655H,執(zhí)行指令PUSHAXPUSHBXPOPCX此時(shí)堆棧中內(nèi)容發(fā)生什么變化?AX,BX,CX中的內(nèi)容是什么?如圖C所示。

堆棧主要用于中斷及子程序調(diào)用,也可用于數(shù)據(jù)暫時(shí)保存。在進(jìn)入中斷服務(wù)子程序和子程序調(diào)用前,原來CPU中現(xiàn)行信息(指令指針I(yè)P,及寄存器中有關(guān)內(nèi)容)都必須保存,在中斷服務(wù)子程序和子程序調(diào)用結(jié)束返回主程序時(shí),又必須恢復(fù)原來保存的信息,這些均由堆棧操作來完成。其中指令指針的入棧和出棧由CPU自動(dòng)管理,而一些寄存器中內(nèi)容的保存及返回,需要用戶自己利用指令PUSH、POP來完成。

由于堆棧操作的先進(jìn)后出的特點(diǎn),一定要注意兩點(diǎn):1)先進(jìn)入的內(nèi)容要后彈出,保證返回寄存器內(nèi)容不發(fā)生錯(cuò)誤。例2.5PUSHAXPUSHBXPUSHCXPOPCXPOPAXPOPBX會(huì)使AX和BX內(nèi)容互相交換。2)PUSH和POP的指令要成對(duì),若不匹配的話,會(huì)造成返回主程序的地址出錯(cuò)。例2.6PUSHAXPUSHBXPUSHCX...POPCXPOPBXRET會(huì)使CPU返回主程序時(shí),返回地址取出的是原來AX中的內(nèi)容,使整個(gè)程序執(zhí)行出錯(cuò)。2.48086系統(tǒng)配置8086/8088系統(tǒng)可以有最小模式和最大模式兩種系統(tǒng)配置方式,兩種方式的選擇是由硬件設(shè)定的。當(dāng)CPU的引腳MN//MX端接高電平+5V時(shí),構(gòu)成最小模式,當(dāng)MN//MX接低電平時(shí),構(gòu)成最大模式。

最小模式:單機(jī)系統(tǒng),系統(tǒng)中所需要的控制信號(hào)由CPU提供,實(shí)現(xiàn)和存儲(chǔ)器及I/0接口電路的連接。

最大模式:可以構(gòu)成多處理器/協(xié)處理器系統(tǒng),即一個(gè)系統(tǒng)中存在兩個(gè)以上微處理器,每個(gè)處理器執(zhí)行自己的程序。

常用的處理器有數(shù)值運(yùn)算協(xié)處理器8087,輸入/輸出處理器8089。系統(tǒng)中所需要的控制信號(hào)由總線控制器8288提供,8086CPU提供信號(hào)控制8288,以實(shí)現(xiàn)全局資源分配及總線控制權(quán)傳遞。2.4.1最小模式系統(tǒng)

在最小模式系統(tǒng)中,除了8086CPU,存儲(chǔ)器及I/O接口芯片外,還要加入:1片8284A,作為時(shí)鐘發(fā)生器3片8282/8283或74LS373,作為地址鎖存器2片8286/8287或74LS245,作為雙向數(shù)據(jù)總線收發(fā)器配置成一個(gè)系統(tǒng)。圖2.158086CPU最小模式下的典型配置1.地址鎖存器8282/8283CPU與存儲(chǔ)器(或I/O端口)進(jìn)行數(shù)據(jù)交換時(shí),CPU首先要送出地址信號(hào),然后再發(fā)出控制信號(hào)及傳送數(shù)據(jù)。由于8086引腳限制,地址和數(shù)據(jù)分時(shí)復(fù)用一組總線,所以要加入地址鎖存器,先鎖存地址,使在讀/寫總線周期內(nèi)地址穩(wěn)定。8282/8283是三態(tài)緩沖的8位數(shù)據(jù)鎖存器,8282的輸入和輸出信號(hào)是同相的,8283的輸入和輸出信號(hào)反相。8282/8283在最小模式系統(tǒng)中作地址鎖存器用,20位物理地址需要用3片。OODQCLKOSTB。。。。。ODI0DO0OE。。。。。。。8282引腳及內(nèi)部結(jié)構(gòu)圖。。。。DI0~DI7輸入端DO0~DO7輸出端/OE允許控制(低電平有效)STB鎖存信號(hào)高電平允許(通過)低電平禁止(鎖存)DI7DO72.雙向數(shù)據(jù)總線收發(fā)器8286/8287

8086CPU驅(qū)動(dòng)數(shù)據(jù)的負(fù)載能力有限,當(dāng)掛在數(shù)據(jù)總線上的部件增加時(shí),可以利用雙向數(shù)據(jù)總線收發(fā)器8286/8287來增加驅(qū)動(dòng)能力。8286/8287是三態(tài)8位雙向數(shù)據(jù)收發(fā)器,8286數(shù)據(jù)輸入與輸出同相,8287數(shù)據(jù)輸入與輸出反相。DEN=0OE=0當(dāng)DT/R=0時(shí),當(dāng)DT/R=1時(shí),ABAOBOOO。。。。。。。OOETA1A7。。。B1B7。。。。接DEN接DT/R8286BA8286引腳及內(nèi)部結(jié)構(gòu)圖1289111218193.時(shí)鐘發(fā)生器8284

8086CPU的內(nèi)部和外部的時(shí)間基準(zhǔn)信號(hào)由時(shí)鐘輸入信號(hào)CLK提供,CLK信號(hào)是由外部時(shí)鐘發(fā)生器8284產(chǎn)生,并由驅(qū)動(dòng)門電路進(jìn)行功率放大。8284時(shí)鐘發(fā)生器與8086CPU的連接圖如下頁:RESETREADYCLKOSCPCLKRESRDY10+5V等待電路14.31818MHZ8284RESETREADYCLK14.318MHZ2.385MHZ8086/80882.4.2最大模式系統(tǒng)

CPU的引腳MN//MX接地時(shí),8086為最大模式系統(tǒng),在最大模式系統(tǒng)中需要增加總線控制器8288和總線裁決器8289,以完成8086CPU為中心的多處理器系統(tǒng)的協(xié)調(diào)工作。此時(shí)CPU輸出的狀態(tài)信號(hào)/S0~/S2同時(shí)送給8288和8289,由8288輸出原CPU所有的控制信號(hào):存儲(chǔ)器讀/寫控制,I/O端口讀/寫控制,中斷響應(yīng)信號(hào)等。由8289來裁決總線使用權(quán)賦給哪個(gè)處理器,以實(shí)現(xiàn)多主控者對(duì)總線資源的共享??偩€控制器8288

總線控制器8288是20個(gè)引腳的雙極型器件。8086CPU的總線狀態(tài)信號(hào)/S0、/S1、/S2輸入總線控

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論