第二章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ù)免費閱讀

下載本文檔

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

文檔簡介

1、第2章 8086系統(tǒng)結(jié)構(gòu)2.1 8086CPU結(jié)構(gòu)結(jié)構(gòu) 2.2 8086CPU的引腳及其功能的引腳及其功能2.3 8086存儲器組織存儲器組織2.4 8086系統(tǒng)配置系統(tǒng)配置2.1 8086CPU結(jié)構(gòu)結(jié)構(gòu) Inter 8086CPU是是16位微處理器,它有位微處理器,它有16根數(shù)據(jù)線和根數(shù)據(jù)線和20根地根地址線,直接尋址空間為址線,直接尋址空間為 ,即,即1MB。8088CPU內(nèi)部結(jié)構(gòu)與內(nèi)部結(jié)構(gòu)與8086基本相同但對外數(shù)據(jù)總線只有基本相同但對外數(shù)據(jù)總線只有8條,稱為準條,稱為準16位微處理器。位微處理器。2.1.1 8086CPU的內(nèi)部結(jié)構(gòu)的內(nèi)部結(jié)構(gòu) 微型計算機工作時,總是先從存儲器中取指令,

2、需要的話再取操作數(shù),微型計算機工作時,總是先從存儲器中取指令,需要的話再取操作數(shù),然后執(zhí)行指令,送結(jié)果。通常然后執(zhí)行指令,送結(jié)果。通常8位機是串行執(zhí)行的,而位機是串行執(zhí)行的,而16位機可并行操作。位機可并行操作。 8086 CPU由總線接口部件由總線接口部件BIU和指令執(zhí)行部件和指令執(zhí)行部件EU組成組成,BIU和和EU的操作的操作是并行的。總線接口部件是并行的。總線接口部件BIU完成取指令,讀操作數(shù),送結(jié)果,所有與外部完成取指令,讀操作數(shù),送結(jié)果,所有與外部的操作由其完成。而指令執(zhí)行部件的操作由其完成。而指令執(zhí)行部件EU從從BIU的指令隊列中取出指令,執(zhí)行指的指令隊列中取出指令,執(zhí)行指令,不必

3、訪問存儲器或令,不必訪問存儲器或I/O端口端口。若需要訪問存儲器或若需要訪問存儲器或I/O端口,也是由端口,也是由EU向向BIU發(fā)出訪問所需要的地址,在發(fā)出訪問所需要的地址,在BIU中形成物理地址,然后訪問存儲器或中形成物理地址,然后訪問存儲器或I/O端口,取得操作數(shù)送到端口,取得操作數(shù)送到EU,或送結(jié)果到指定的內(nèi)存單元或,或送結(jié)果到指定的內(nèi)存單元或I/O端口。這種端口。這種并行工作方式,大大提高了系統(tǒng)工作效率。并行工作方式,大大提高了系統(tǒng)工作效率。 220圖2.1 8086 CPU內(nèi)部結(jié)構(gòu)示意圖AHALBHBLCHCLDHDLSIDISPBPAXBXCXDX運算暫存器ALU標志寄存器執(zhí)行單元

4、(EU)16位內(nèi)部總線EU控制電路123456指令隊列緩沖器內(nèi)部暫存器ESSSDSCSIP16位總線20位地址總線總線控制邏輯電路8位8086總線總線接口單元(BIU)通用寄存器組1.1.總線接口部件總線接口部件BIUBIU 總線接口部件總線接口部件BIU是是8086CPU與外部與外部(存儲器和存儲器和I/O端口端口)的接口,它提供了的接口,它提供了16位雙向數(shù)據(jù)總線和位雙向數(shù)據(jù)總線和20位地址位地址總線,完成所有外部總線操作??偩€,完成所有外部總線操作。 BIUBIU具有下列功能:地址形成、取指令、指令排隊,具有下列功能:地址形成、取指令、指令排隊,讀讀/ /寫操作數(shù)和總線控制。它由下列各部

5、分組成:寫操作數(shù)和總線控制。它由下列各部分組成:(1 1)1616位段地址寄存器:位段地址寄存器: CSCS代碼段寄存器代碼段寄存器 DSDS數(shù)據(jù)段寄存器數(shù)據(jù)段寄存器 ESES附加段寄存器附加段寄存器 SSSS堆棧段寄存器堆棧段寄存器(2 2)1616位指令指針寄存器位指令指針寄存器IPIP:存放下一條要執(zhí)行指令的:存放下一條要執(zhí)行指令的偏移地址。偏移地址。(3 3)2020位物理地址加法器:將位物理地址加法器:將1616位邏輯地址變換成存儲位邏輯地址變換成存儲器讀器讀/ /寫所需要的寫所需要的2020位物理地址,實際上完成地址加法位物理地址,實際上完成地址加法操作。操作。 (4 4)6 6字

6、節(jié)指令隊列:預放字節(jié)指令隊列:預放6 6字節(jié)的指令代碼。字節(jié)的指令代碼。(5 5)總線控制邏輯:發(fā)出總線控制信號。)總線控制邏輯:發(fā)出總線控制信號。2.2.指令執(zhí)行部件指令執(zhí)行部件EUEU 指令執(zhí)行部件指令執(zhí)行部件EU完成指令譯碼和執(zhí)行指令的工作。完成指令譯碼和執(zhí)行指令的工作。 它由以下幾個部分組成:它由以下幾個部分組成:(1)(1)算術(shù)邏輯運算單元算術(shù)邏輯運算單元ALUALU:完成:完成8 8位或位或1616位的二進制運位的二進制運 算,算,1616位暫存器可暫存參加運算的操作數(shù)。位暫存器可暫存參加運算的操作數(shù)。(2)(2)標志寄存器標志寄存器PSWPSW:存放:存放ALUALU運算結(jié)果特征

7、。運算結(jié)果特征。(3)(3)寄存器組:寄存器組:4 4個通用個通用1616位寄存器位寄存器AXAX、BXBX、CXCX、DXDX,其,其 中中AXAX又稱累加器。又稱累加器。4 4個專用個專用1616位寄存器:源變址寄存器位寄存器:源變址寄存器SISI、目的變址寄存器、目的變址寄存器DIDI、堆棧指針寄存器、堆棧指針寄存器SPSP、基址指、基址指針寄存器針寄存器BPBP。(4)EU(4)EU控制器:取指令控制和時序控制部件控制器:取指令控制和時序控制部件。2.1.22.1.2寄存器結(jié)構(gòu)寄存器結(jié)構(gòu) 寄存器用來存放運算過程中所需要的操作數(shù)地址寄存器用來存放運算過程中所需要的操作數(shù)地址、操作數(shù)及中間

8、結(jié)果。操作數(shù)及中間結(jié)果。 80868086微處理器內(nèi)部包含有微處理器內(nèi)部包含有4 4組組1616位寄存器,它們分別位寄存器,它們分別是通用寄存器組,指針和變址寄存器,段寄存器,指令是通用寄存器組,指針和變址寄存器,段寄存器,指令指針及標志位寄存器。如圖指針及標志位寄存器。如圖2.22.2所示。所示。2. 8086 CPU的內(nèi)部寄存器的內(nèi)部寄存器圖2.2 8086 CPU內(nèi)部寄存器 數(shù)據(jù)寄存器 指針與變址寄存器AXAHALSP 堆棧指針寄存器BXBHBLBP 基址寄存器CXCHCLSI 源變址寄存器DXDHDLDI 目的變址寄存器 段寄存器 指令指針與標志寄存器CS 代碼段寄存器IP 指令指針寄

9、存器DS 數(shù)據(jù)段寄存器FLAGS 標志位寄存器ES 附加段寄存器 SS 堆棧段寄存器 1.1.通用寄存器組通用寄存器組 8086/8088CPU8086/8088CPU在指令執(zhí)行部件在指令執(zhí)行部件EUEU中有中有4 4個個1616位通用寄位通用寄存器,它們是存器,它們是AXAX、BXBX、CXCX和和DX,DX,用以存放用以存放1616位數(shù)據(jù)或地址位數(shù)據(jù)或地址。也可分為。也可分為8 8個個8 8位寄存器來使用,低位寄存器來使用,低8 8位是位是ALAL、BLBL、CLCL和和DLDL,高,高8 8位為位為AHAH、BHBH、CHCH和和DHDH,只能存放,只能存放8 8位數(shù)據(jù),不能位數(shù)據(jù),不能

10、存放地址。存放地址。 在在80868086中,某些通用寄存器用作專門用途。例如,中,某些通用寄存器用作專門用途。例如,串指令中必須用串指令中必須用CXCX寄存器作為計數(shù)寄存器,存放串的長寄存器作為計數(shù)寄存器,存放串的長度,同樣,度,同樣,AXAX、BXBX、DXDX寄存器又可分別稱為累加器、基寄存器又可分別稱為累加器、基址寄存器及數(shù)據(jù)寄存器。址寄存器及數(shù)據(jù)寄存器。2.2.指針和變址寄存器指針和變址寄存器 8086/8088CPU8086/8088CPU中,有一組中,有一組4 4個個1616位寄存器,它們是基位寄存器,它們是基址指針寄存器址指針寄存器BPBP,堆棧指針寄存器,堆棧指針寄存器SPS

11、P,源變址寄存器,源變址寄存器SISI和目的變址寄存器和目的變址寄存器DIDI。 這組寄存器存放的內(nèi)容是某一段內(nèi)地址偏移量,用這組寄存器存放的內(nèi)容是某一段內(nèi)地址偏移量,用來形成操作數(shù)地址,主要在堆棧操作和變址運算中使用。來形成操作數(shù)地址,主要在堆棧操作和變址運算中使用。BPBP和和SPSP寄存器稱為指針寄存器,與寄存器稱為指針寄存器,與SSSS聯(lián)用,為訪問現(xiàn)行聯(lián)用,為訪問現(xiàn)行堆棧段提供方便。通常堆棧段提供方便。通常BPBP寄存器在間接尋址中使用,操寄存器在間接尋址中使用,操作數(shù)在堆棧段中,由作數(shù)在堆棧段中,由SSSS段寄存器與段寄存器與BPBP組合形成操作數(shù)地組合形成操作數(shù)地址。即址。即BPB

12、P中存放現(xiàn)行堆棧段中一個數(shù)據(jù)區(qū)的中存放現(xiàn)行堆棧段中一個數(shù)據(jù)區(qū)的“基址基址”的偏移量,所以稱的偏移量,所以稱BPBP寄存器為基址指針。寄存器為基址指針。 SP SP寄存器在堆棧操作中使用,寄存器在堆棧操作中使用,PUSHPUSH和和POPPOP指令是從指令是從SPSP寄存器得到現(xiàn)行堆棧段的段內(nèi)地址偏移量,所以稱寄存器得到現(xiàn)行堆棧段的段內(nèi)地址偏移量,所以稱SPSP寄寄存器為堆棧指針,存器為堆棧指針,SPSP始終指向棧頂。始終指向棧頂。 寄存器寄存器SISI和和DIDI稱為變址寄存器,通常與稱為變址寄存器,通常與DSDS一起使一起使用,為訪問現(xiàn)行數(shù)據(jù)段提供段內(nèi)地址偏移量。用,為訪問現(xiàn)行數(shù)據(jù)段提供段內(nèi)

13、地址偏移量。 在串指令中,其中源操作數(shù)的偏移量存放在在串指令中,其中源操作數(shù)的偏移量存放在SISI中,中,目的操作數(shù)的偏移量存放在目的操作數(shù)的偏移量存放在DIDI中,中,SISI與與DIDI的作用不能互的作用不能互換,否則傳送地址相反。換,否則傳送地址相反。 在串指令中,在串指令中,SISI、DIDI均為隱含尋址,此時,均為隱含尋址,此時,SISI和和DSDS聯(lián)用,聯(lián)用,DIDI和和ESES聯(lián)用。聯(lián)用。3.3.段寄存器段寄存器 8086/8088CPU8086/8088CPU可直接尋址可直接尋址1MB1MB的存儲器空間,直接的存儲器空間,直接尋址需要尋址需要2020位地址碼,而所有內(nèi)部寄存器都

14、是位地址碼,而所有內(nèi)部寄存器都是1616位的,位的,只能直接尋址只能直接尋址64KB64KB,因此采用分段技術(shù)來解決。將,因此采用分段技術(shù)來解決。將1MB1MB的的存儲空間分成若干邏輯段,每段最長存儲空間分成若干邏輯段,每段最長64KB64KB,這些邏輯段,這些邏輯段在整個存儲空間中可浮動。在整個存儲空間中可浮動。 8086/8088CPU8086/8088CPU內(nèi)部設(shè)置了內(nèi)部設(shè)置了4 4個個1616位段寄存器,它們分位段寄存器,它們分別是代碼段寄存器別是代碼段寄存器CSCS、數(shù)據(jù)段寄存器、數(shù)據(jù)段寄存器DSDS、堆棧段寄存器、堆棧段寄存器SSSS、附加段寄存器、附加段寄存器ESES,由它們給出

15、相應邏輯段的首地,由它們給出相應邏輯段的首地址,稱為址,稱為“段基址段基址”。 段基址與段內(nèi)偏移地址組合形成段基址與段內(nèi)偏移地址組合形成2020位物理地址,段位物理地址,段內(nèi)偏移地址可存放在寄存器中,也可存放在存儲器中內(nèi)偏移地址可存放在寄存器中,也可存放在存儲器中 。 例2.1 代碼段寄存器CS存放當前代碼段基地址,IP指令指針寄存器存放了下一條要執(zhí)行指令的段內(nèi)偏移地址,其中CS=2000H,IP=003AH.通過組合,形成20位存儲單元的尋址地址為2003AH 。 代碼段內(nèi)存放可執(zhí)行的指令代碼,數(shù)據(jù)段和附加段代碼段內(nèi)存放可執(zhí)行的指令代碼,數(shù)據(jù)段和附加段內(nèi)存放操作的數(shù)據(jù),通常操作數(shù)在現(xiàn)行數(shù)據(jù)段

16、中,而在內(nèi)存放操作的數(shù)據(jù),通常操作數(shù)在現(xiàn)行數(shù)據(jù)段中,而在串指令中,目的操作數(shù)指明必須在現(xiàn)行附加段中。堆棧串指令中,目的操作數(shù)指明必須在現(xiàn)行附加段中。堆棧段開辟為程序執(zhí)行中所要用的堆棧區(qū),采用先進后出的段開辟為程序執(zhí)行中所要用的堆棧區(qū),采用先進后出的方式訪問它。方式訪問它。 各個段寄存器指明了一個規(guī)定的現(xiàn)行段,各段寄存各個段寄存器指明了一個規(guī)定的現(xiàn)行段,各段寄存器不可互換使用。程序較小時,代碼段、數(shù)據(jù)段、堆棧器不可互換使用。程序較小時,代碼段、數(shù)據(jù)段、堆棧段可放在一個段內(nèi),即包含在段可放在一個段內(nèi),即包含在64KB64KB之內(nèi),而當程序或數(shù)之內(nèi),而當程序或數(shù)據(jù)量較大時,超過了據(jù)量較大時,超過了6

17、4KB64KB,可以定義多個代碼段或數(shù)據(jù),可以定義多個代碼段或數(shù)據(jù)段、堆棧段、附加段。段、堆棧段、附加段。 現(xiàn)行段由段寄存器指明段地址,使用中可以修改段現(xiàn)行段由段寄存器指明段地址,使用中可以修改段寄存器內(nèi)容,指向其它段。有時為了明確起見,可在指寄存器內(nèi)容,指向其它段。有時為了明確起見,可在指令前加上段超越的前綴字,以指定操作數(shù)所在段。令前加上段超越的前綴字,以指定操作數(shù)所在段。4.4.指令指針寄存器指令指針寄存器 8086/8088CPU8086/8088CPU中設(shè)置了一個中設(shè)置了一個1616位指令指針寄存器位指令指針寄存器IPIP,用來存放將要執(zhí)行的下一條指令在現(xiàn)行代碼段中的,用來存放將要執(zhí)

18、行的下一條指令在現(xiàn)行代碼段中的偏移地址。程序運行中,它由偏移地址。程序運行中,它由BIUBIU自動將其修改,使自動將其修改,使IPIP始始終指向下一條將要執(zhí)行的指令的地址,因此它是用來終指向下一條將要執(zhí)行的指令的地址,因此它是用來控制指令序列的執(zhí)行流程的??刂浦噶钚蛄械膱?zhí)行流程的。80868086程序不能直接訪問程序不能直接訪問IPIP,但可以通過某些指令修改,但可以通過某些指令修改IPIP的內(nèi)容。例如,當遇到的內(nèi)容。例如,當遇到中斷指令或調(diào)用子程序指令時,中斷指令或調(diào)用子程序指令時,80868086自動調(diào)整自動調(diào)整IPIP的內(nèi)的內(nèi)容,將容,將IPIP中下一條將要執(zhí)行的指令地址偏移量入棧保中下

19、一條將要執(zhí)行的指令地址偏移量入棧保護,待中斷程序執(zhí)行完畢或子程序返回時,可將保護的護,待中斷程序執(zhí)行完畢或子程序返回時,可將保護的內(nèi)容從堆棧中彈出到內(nèi)容從堆棧中彈出到IPIP,使主程序繼續(xù)運行。在跳轉(zhuǎn)指,使主程序繼續(xù)運行。在跳轉(zhuǎn)指令時,則將新的跳轉(zhuǎn)目標地址送入令時,則將新的跳轉(zhuǎn)目標地址送入IPIP,改變它的內(nèi)容,改變它的內(nèi)容,實現(xiàn)了程序的轉(zhuǎn)移。實現(xiàn)了程序的轉(zhuǎn)移。 5.標志寄存器標志寄存器PSW 標志寄存器是一個標志寄存器是一個16位的寄存器,位的寄存器,8086共使用了共使用了9個有效個有效位,格式如圖位,格式如圖2.3所示。其中的所示。其中的6位是狀態(tài)標志位位是狀態(tài)標志位: CF、PF 、

20、AF、ZF、CF和和OF。 3位為控制標志位位為控制標志位: TF、IF和和DF。狀態(tài)標狀態(tài)標志位是當一些指令執(zhí)行后,表征所產(chǎn)生數(shù)據(jù)的一些特征。而控志位是當一些指令執(zhí)行后,表征所產(chǎn)生數(shù)據(jù)的一些特征。而控制標志位則可以由程序?qū)懭?,以達到控制處理機狀態(tài)或程序執(zhí)制標志位則可以由程序?qū)懭?,以達到控制處理機狀態(tài)或程序執(zhí)行方式的表征。行方式的表征。圖2.3 標志寄存器格式D15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0 OFDFIFTFSFZF AF PF CFD15D0 OF DF IF TF SF ZF AF PF CF進進借借位位標標志志奇奇偶偶標標志志半半進進借借位位標

21、標志志零零標標志志符符號號標標志志單單步步中中斷斷中中斷斷允允許許方方向向標標志志溢溢出出標標志志1-有進、借位有進、借位0-無進、借位無進、借位1-低低8位有偶數(shù)個位有偶數(shù)個10-低低8位有奇數(shù)個位有奇數(shù)個11-低低4位向高位向高4位有進、借位位有進、借位0-低低4位向高位向高4位無進、借位位無進、借位1-結(jié)果為結(jié)果為00-結(jié)果不為結(jié)果不為0 (1) 6個狀態(tài)標志位的功能分別敘述如下: CF(Carry Flag)進位標志位。當執(zhí)行一個加法(或減法)運算,最高位產(chǎn)生進位(或借位)時,CF為1;否則為0。 PF(Parity Flag)奇偶標志位。該標志位反映運算結(jié)果低8位中“1”的個數(shù)是偶數(shù)

22、還是奇數(shù)。當指令執(zhí)行結(jié)果的低8位中含有偶數(shù)個1時,PF=1;否則PF=0。 AF(Auxiliary carry Flag)輔助進位標志位。當執(zhí)行一個加法(或減法)運算,結(jié)果的低4位向高4位有進位(或借位)時,AF=1;否則AF=0。一般用在BCD碼運算中,判斷是否需要十進制調(diào)整。 ZF(Zero Flag)全零標志位。若當前的運算結(jié)果為零,ZF=1;否則ZF=0。 SF(Sign Flag)符號標志位。它和運算結(jié)果的最高位相同。 OF(Overflow Flag)溢出標志位。當運算過程中產(chǎn)生溢出時,OF=1;否則OF=0。 (2) 3個控制標志位用來控制CPU的操作,由指令進行置位和復位。

23、DF(Direction Flag)方向標志位。它用以指定字符串處理時的方向,當該位置“1”時,字符串以遞減順序處理,即地址以從高到低順序遞減。反之,則以遞增順序處理。 IF(Interrupt enable Flag)中斷標志位。它用來控制8086是否允許接收外部中斷請求。若IF=1,允許CPU響應外部中斷,反之則不響應外部中斷。注意:IF的狀態(tài)不影響非屏蔽中斷請求(NMI)和CPU內(nèi)部中斷請求。 TF(Trap Flag)單步標志位。它是為調(diào)試程序而設(shè)定的控制位。當該位置“1”時,8086 CPU處于單步狀態(tài),此時CPU每執(zhí)行完一條指令就自動產(chǎn)生一次內(nèi)部中斷,使用戶能逐條跟蹤程序進行調(diào)試。

24、當該位復位后,CPU恢復正常工作。例2.2 將5394H與777FH兩數(shù)相加,并說明其標志位狀態(tài): 0101 0011 1001 0100 1000 1000 1000 0001 1101 1100 0001 0101 運算結(jié)果為23EBH,并置標志位為 CF=0,PF=0,AF=0,ZF=0,SF=1,OF=0。本節(jié)主要內(nèi)容講解視本節(jié)主要內(nèi)容講解視頻頻2.2 8086CPUD 引腳及其功能 8086/8088CPU 8086/8088CPU根據(jù)它的基本性能,應包括根據(jù)它的基本性能,應包括2020條地址條地址線線,16,16條數(shù)據(jù)線,加上控制信號,電源和地線,芯片的引條數(shù)據(jù)線,加上控制信號,電

25、源和地線,芯片的引腳比較多。但由于制造工藝的限制,腳比較多。但由于制造工藝的限制,8086/8088CPU8086/8088CPU芯片芯片采用采用4040條引腳的雙列直插式封裝,因此部分引腳采用了條引腳的雙列直插式封裝,因此部分引腳采用了分時復用的方式。分時復用的方式。 另外另外8086/8088CPU8086/8088CPU可以工作在兩種工作模式可以工作在兩種工作模式( (最小模最小模式和最大模式式和最大模式) ),最小模式用于單機系統(tǒng)。系統(tǒng)中所需要,最小模式用于單機系統(tǒng)。系統(tǒng)中所需要的控制信號全部由的控制信號全部由80868086直接提供。最大模式用于多處理直接提供。最大模式用于多處理機系

26、統(tǒng),系統(tǒng)中所需要的控制信號由總線控制器機系統(tǒng),系統(tǒng)中所需要的控制信號由總線控制器82888288提提供。供。這樣,這樣,2424腳腳3131腳的腳的8 8條引腳在兩種工作模式中具有條引腳在兩種工作模式中具有不同的功能不同的功能。2.2.1 8086/8088CPU8086/8088CPU在最小模式中引腳定義在最小模式中引腳定義 8086CPU采用雙列直插式的封裝形式,具有采用雙列直插式的封裝形式,具有40條引條引腳,見圖腳,見圖2.4。它采用分時復用的地址。它采用分時復用的地址/數(shù)據(jù)總線,所以有數(shù)據(jù)總線,所以有一部分引腳具有雙重功能,即在不同時鐘周期內(nèi),引腳一部分引腳具有雙重功能,即在不同時鐘

27、周期內(nèi),引腳的作用不同的作用不同。圖圖2.4 8086的引腳信號(括號中為最大模式下的名稱)的引腳信號(括號中為最大模式下的名稱)1、地址、地址/數(shù)據(jù)總線數(shù)據(jù)總線AD15-AD0:地址:地址/數(shù)據(jù)數(shù)據(jù)復用引腳,雙向,三態(tài)。復用引腳,雙向,三態(tài)。 16位地址總線位地址總線A15-A0,輸出訪問存儲器或,輸出訪問存儲器或I/O的地址的地址信息。信息。 16位數(shù)據(jù)總線位數(shù)據(jù)總線D15-D0,與存儲器和,與存儲器和I/O設(shè)備交換數(shù)據(jù)設(shè)備交換數(shù)據(jù)信息。信息。 地址地址/數(shù)據(jù)總線復用數(shù)據(jù)總線復用2、地址、地址/狀態(tài)總線狀態(tài)總線A19/S6-A16/S3 :地址:地址/狀態(tài)總線復用引腳,輸出,三態(tài)。輸出狀態(tài)

28、總線復用引腳,輸出,三態(tài)。輸出訪問存儲器的訪問存儲器的20位地址的高位地址的高4位地址位地址A19-A16或輸出或輸出CPU的工作狀態(tài)。的工作狀態(tài)。S6:指示:指示8086/8088當前是否與總線相連,當前是否與總線相連,S6=0,表示,表示8086/8088當前與總線相連。當前與總線相連。 S5:表明中斷允許標志當前的設(shè)置。:表明中斷允許標志當前的設(shè)置。S5=0,表示,表示CPU中斷是關(guān)閉的,禁止一切可屏蔽中斷源的中斷請求;中斷是關(guān)閉的,禁止一切可屏蔽中斷源的中斷請求;S5=1,表示,表示CPU中斷是開放的,允許一切可屏蔽中斷中斷是開放的,允許一切可屏蔽中斷源的中斷申請。源的中斷申請。 S4

29、、S3:指出當前使用段寄存器的情況。:指出當前使用段寄存器的情況。 S4 S3 段寄存器段寄存器 0 0 當前正在使用當前正在使用ES 0 1 當前正在使用當前正在使用SS 1 0 當前正在使用當前正在使用CS或不需使用段寄存器或不需使用段寄存器 1 1 當前正在使用當前正在使用DS3、控制總線、控制總線(1)(1)、/BHE /BHE / /S7S7:高:高8 8位數(shù)據(jù)總線允許位數(shù)據(jù)總線允許/ /狀態(tài)復用引腳。狀態(tài)復用引腳。 在總線周期的在總線周期的T1T1狀態(tài),此引腳輸出狀態(tài),此引腳輸出/BHE/BHE信號,表示信號,表示高高8 8位數(shù)據(jù)線位數(shù)據(jù)線D15-D8D15-D8上的數(shù)據(jù)有效。上的

30、數(shù)據(jù)有效。 在在T2T2、T3T3、TWTW和和T4T4狀態(tài)時,此引腳輸出狀態(tài)時,此引腳輸出S7S7狀態(tài)信號。狀態(tài)信號。/BHE、A0組合:組合:/BHE A0 總線使用情況總線使用情況 0 0 從偶地址單元開始,在從偶地址單元開始,在16位數(shù)據(jù)總線上進行字傳送位數(shù)據(jù)總線上進行字傳送 0 1 從奇地址單元開始,在高從奇地址單元開始,在高8位數(shù)據(jù)總線上進行字節(jié)傳送位數(shù)據(jù)總線上進行字節(jié)傳送 1 0 從偶地址單元開始,在低從偶地址單元開始,在低8位數(shù)據(jù)總線上進行字節(jié)傳送位數(shù)據(jù)總線上進行字節(jié)傳送 1 1 無效無效S7:8086中無定義。中無定義。(2)/RD:讀信號,三態(tài)輸出,低電平有效。:讀信號,三

31、態(tài)輸出,低電平有效。/RD=0,表示當前表示當前CPU正在對存儲器或正在對存儲器或I/O端口進行讀操作。端口進行讀操作。(3)/WR:寫信號,三態(tài)輸出,低電平有效。:寫信號,三態(tài)輸出,低電平有效。/WR=0,表示當前表示當前CPU正在對存儲器或正在對存儲器或I/O端口進行讀操作。端口進行讀操作。(4)M/IO:存儲器或:存儲器或IO端口訪問信號,三態(tài)輸出。端口訪問信號,三態(tài)輸出。M/IO=1,表示,表示CPU正在訪問存儲器;正在訪問存儲器;M/IO=0,表示,表示CPU正在訪問正在訪問IO端口。端口。(5)READY:準備就緒信號,輸入,高電平有效。:準備就緒信號,輸入,高電平有效。READY

32、=1,表示,表示CPU訪問的存儲器或訪問的存儲器或IO端口已準備端口已準備好傳送數(shù)據(jù)。若好傳送數(shù)據(jù)。若CPU在總線周期在總線周期T3狀態(tài)檢測到狀態(tài)檢測到READY=0,表示未準備好,表示未準備好,CPU自動插入一個或多個自動插入一個或多個等待狀態(tài)等待狀態(tài)TW,直到,直到READY=1為止。為止。(6)INTR:可屏蔽中斷請求信號,輸入,高電平有效。:可屏蔽中斷請求信號,輸入,高電平有效。當當INTR=1,表示外設(shè)向,表示外設(shè)向CPU發(fā)出中斷請求,發(fā)出中斷請求,CPU在當在當前指令周期的最后一個前指令周期的最后一個T狀態(tài)去采樣該信號,若此時狀態(tài)去采樣該信號,若此時IF=1,CPU響應中斷,執(zhí)行中

33、斷服務(wù)程序。響應中斷,執(zhí)行中斷服務(wù)程序。(7)/INTA:中斷響應信號,輸出,低電平有效。表示:中斷響應信號,輸出,低電平有效。表示CPU響應了外設(shè)發(fā)來的中斷申請信號響應了外設(shè)發(fā)來的中斷申請信號INTR。(8)NMI:不可屏蔽中斷請求信號,輸入,上升沿觸:不可屏蔽中斷請求信號,輸入,上升沿觸 發(fā)。該請求信號不受發(fā)。該請求信號不受IF狀態(tài)的影響,也不能用軟件屏狀態(tài)的影響,也不能用軟件屏 蔽,一旦該信號有效,則執(zhí)行完當前指令后立即響應蔽,一旦該信號有效,則執(zhí)行完當前指令后立即響應 中斷。中斷。(9)/TEST:測試信號,輸入,低電平有效。當:測試信號,輸入,低電平有效。當CPU執(zhí)執(zhí)行行WAIT指令

34、時,每隔指令時,每隔5個時鐘周期對個時鐘周期對/TEST進行一次進行一次測試,若測試,若/TEST=1,繼續(xù)等待,直到,繼續(xù)等待,直到/TEST=0。(10)RESET:復位信號,輸入,高電平有效。:復位信號,輸入,高電平有效。RESET信號至少要保持信號至少要保持4個時鐘周期。復位時:標志寄存器、個時鐘周期。復位時:標志寄存器、IP、DS、SS、ES為為0,CS=FFFFH,復位后,復位后CPU從從FFFF0H處開始處開始 執(zhí)行。執(zhí)行。(11)ALE:地址鎖存允許信號,輸出,高電平有效。:地址鎖存允許信號,輸出,高電平有效。用來鎖存地址信號用來鎖存地址信號A15-A0,分時使用,分時使用AD

35、15-AD0地址地址/數(shù)據(jù)總線。數(shù)據(jù)總線。(12)DT/R:數(shù)據(jù)發(fā)送:數(shù)據(jù)發(fā)送/接收控制信號,三態(tài)輸出。此接收控制信號,三態(tài)輸出。此信號控制數(shù)據(jù)總線上的收發(fā)器信號控制數(shù)據(jù)總線上的收發(fā)器8286的數(shù)據(jù)傳送方向,的數(shù)據(jù)傳送方向, DT/R =1,發(fā)送數(shù)據(jù),發(fā)送數(shù)據(jù)寫操作;寫操作; DT/R =0,接收數(shù)據(jù),接收數(shù)據(jù)讀操作。讀操作。(13)/DEN:數(shù)據(jù)允許信號,三態(tài)輸出,低電平有效。:數(shù)據(jù)允許信號,三態(tài)輸出,低電平有效。作為數(shù)據(jù)總線上收發(fā)器作為數(shù)據(jù)總線上收發(fā)器8286的選通信號。的選通信號。(14)HOLD:總線請求信號,輸入,高電平有效。當:總線請求信號,輸入,高電平有效。當系統(tǒng)中系統(tǒng)中CPU之

36、外的另一個控制器要求使用總線時,通之外的另一個控制器要求使用總線時,通過它向過它向CPU發(fā)一高電平的請求信號。發(fā)一高電平的請求信號。(15)HLDA:總線請求響應信號,輸出,高電平有效。:總線請求響應信號,輸出,高電平有效。當當HLDA有效時,表示有效時,表示CPU對其它控制器的總線請求對其它控制器的總線請求作出響應,與此同時,所有與三總線相接的作出響應,與此同時,所有與三總線相接的CPU的引的引腳呈現(xiàn)高阻抗狀態(tài),從而讓出總線。腳呈現(xiàn)高阻抗狀態(tài),從而讓出總線。(16)MN/MX:工作模式選擇信號,輸入。:工作模式選擇信號,輸入。 MN/MX =1,表示,表示CPU工作在最小模式系統(tǒng);工作在最小

37、模式系統(tǒng); MN/MX =0,表示,表示CPU工作在最大模式系統(tǒng)。工作在最大模式系統(tǒng)。(17)CLK:主時鐘信號,輸入。:主時鐘信號,輸入。8086/8088的時鐘頻率的時鐘頻率為為5MHZ。4、電源線和地線、電源線和地線8086/8088采用單采用單+5V電源,電源,1、20引腳為地線。引腳為地線。5、最大模式下的有關(guān)引腳、最大模式下的有關(guān)引腳(1)QS1、QS0:指令隊列狀態(tài)信號,輸出。指令隊列狀態(tài)信號,輸出。 QS1 QS0 含義含義 0 0 無操作無操作 0 1 將指令首字節(jié)送入指令隊列將指令首字節(jié)送入指令隊列 1 0 隊列為空隊列為空 1 1 將指令其余字節(jié)送指令隊列將指令其余字節(jié)送

38、指令隊列(2)/S2、/S1、/S0:總線周期狀態(tài)信號,三態(tài)輸出??偩€周期狀態(tài)信號,三態(tài)輸出。 /S2、/S1、/S0狀態(tài)信號的編碼狀態(tài)信號的編碼 /S2 /S1 /S0 操作過程操作過程 產(chǎn)生信號產(chǎn)生信號 0 0 0 發(fā)中斷響應信號發(fā)中斷響應信號 /INTA 0 0 1 讀讀I/O端口端口 IORC 0 1 0 寫寫I/O端口端口 IOWC 0 1 1 暫停暫停 無無 1 0 0 取指令取指令 /MRDC 1 0 1 讀存儲器讀存儲器 /MRDC 1 1 0 寫存儲器寫存儲器 /AMWC 1 1 1 無作用無作用 無無(3)/RQ/GT0、/RQ/GT1:總線請求信號(輸入)總線請求信號(輸

39、入)/總總線請求允許信號(輸出),雙向,低電平有效。輸入線請求允許信號(輸出),雙向,低電平有效。輸入時表示其他主控者向時表示其他主控者向CPU請求使用總線,輸出時表示請求使用總線,輸出時表示CPU對總線請求的響應信號,兩個引腳可以同時與兩對總線請求的響應信號,兩個引腳可以同時與兩個主控者相連。其中個主控者相連。其中/RQ/GT0比比/RQ/GT1有較高的優(yōu)有較高的優(yōu)先權(quán)。先權(quán)。(4)/LOCK:總線封鎖信號,三態(tài)輸出,低電平有效??偩€封鎖信號,三態(tài)輸出,低電平有效。/LOCK=0,CPU不允許其它控制器占用總線。不允許其它控制器占用總線。本節(jié)主要內(nèi)容講解視本節(jié)主要內(nèi)容講解視頻頻2.3 808

40、6存儲器組織2.3.1存儲器地址的分段存儲器地址的分段1.1.存儲器地址的分段存儲器地址的分段 在存儲器中是以字節(jié)為單位存儲信息的,每個存儲在存儲器中是以字節(jié)為單位存儲信息的,每個存儲單元有唯一的地址來確定。單元有唯一的地址來確定。8086/80888086/8088系統(tǒng)有系統(tǒng)有2020根地址線根地址線可尋址可尋址1MB1MB字節(jié)的存儲空間,即對存儲器尋址要字節(jié)的存儲空間,即對存儲器尋址要2020位物理位物理地址,而地址,而80868086為為1616位機,位機,CPUCPU內(nèi)部寄存器只有內(nèi)部寄存器只有1616位,可尋位,可尋址址64KB64KB。因此。因此80868086系統(tǒng)把整個存儲空間分

41、成許多邏輯,系統(tǒng)把整個存儲空間分成許多邏輯,每段容量不超過每段容量不超過64KB64KB。 80868086系統(tǒng)對存儲器的分段采用靈活的方法,允許各系統(tǒng)對存儲器的分段采用靈活的方法,允許各個邏輯段在整個存儲空間中浮動,這樣在程序設(shè)計時可個邏輯段在整個存儲空間中浮動,這樣在程序設(shè)計時可使程序保持相對的完整性。段和段之間可以是連續(xù)的使程序保持相對的完整性。段和段之間可以是連續(xù)的( (整整個存儲空間分成個存儲空間分成1616個邏輯段個邏輯段) ),也可以是分開的或重疊的。,也可以是分開的或重疊的。如圖如圖2 27 7所示:所示:任何一個存儲單元的實際地址,都是由段地址及段內(nèi)偏任何一個存儲單元的實際地

42、址,都是由段地址及段內(nèi)偏移地址兩部分組成,從圖移地址兩部分組成,從圖2 27 7可以看出,任何一個存儲可以看出,任何一個存儲單元,可以在一個段中定義,也可定義在兩個重疊的邏單元,可以在一個段中定義,也可定義在兩個重疊的邏輯段中,關(guān)鍵看段的首地址如何指定。輯段中,關(guān)鍵看段的首地址如何指定。IBM PCIBM PC機對段的機對段的首地址有限制。規(guī)定必須從每小段的首地址開始,每首地址有限制。規(guī)定必須從每小段的首地址開始,每1616字節(jié)為一小段,所以段起始地址必須能被字節(jié)為一小段,所以段起始地址必須能被1616整除才行。整除才行。2.2.物理地址形成物理地址形成 80868086系統(tǒng)將段地址放在段寄存

43、器中,稱為系統(tǒng)將段地址放在段寄存器中,稱為“段基段基址址”。有有4 4個段寄存器,分別為代碼段寄存器個段寄存器,分別為代碼段寄存器CSCS,數(shù)據(jù)段寄存器,數(shù)據(jù)段寄存器DSDS,附加段寄存器,附加段寄存器ESES和堆棧段寄存器和堆棧段寄存器SSSS。 段內(nèi)段內(nèi)“偏移地址偏移地址”指出了從段地址開始的相對偏移指出了從段地址開始的相對偏移位位置。它可以放在指令指針寄存器置。它可以放在指令指針寄存器IPIP中,或中,或1616位通用寄存位通用寄存器中。器中。 邏輯地址邏輯地址:存儲器的任一個邏輯地址由段基址和偏移地:存儲器的任一個邏輯地址由段基址和偏移地址組成,都是無符號的址組成,都是無符號的1616

44、位二進制數(shù),程序設(shè)計時采用位二進制數(shù),程序設(shè)計時采用邏輯地址。邏輯地址。物理地址物理地址:存儲器的絕對地址,從:存儲器的絕對地址,從0000000000FFFFFHFFFFFH,是,是CPUCPU訪問存儲器的實際尋址地址,它由邏輯地址變換而來。訪問存儲器的實際尋址地址,它由邏輯地址變換而來。物理地址計算如下所示:物理地址計算如下所示: 物理地址段基址物理地址段基址1616偏移地址偏移地址 因為段基址指每段的起始地址,它必須是每小段的因為段基址指每段的起始地址,它必須是每小段的首地址,其低首地址,其低4 4位一定為位一定為0 0,所以在實際工作時,是從段,所以在實際工作時,是從段寄存器中取出段基

45、址,將其左移寄存器中取出段基址,將其左移4 4位,再與位,再與1616位偏移地址位偏移地址相加,就得到了物理地址相加,就得到了物理地址,此地址在此地址在CPUCPU的總線接口部的總線接口部件件BIUBIU的地址加法器中形成。的地址加法器中形成。 圖2.3 物理地址形成過程邏輯地址150偏移地址段寄存器0000加法器15020位物理地址190段地址3.3.邏輯地址來源邏輯地址來源邏輯地址來源如下表所示:邏輯地址來源如下表所示: CS 0000 IP代碼段代碼段 DS或或ES 0000 SI、DI或或BX SS 0000 SP或或BP數(shù)據(jù)段數(shù)據(jù)段堆棧段堆棧段存儲器存儲器段寄存器和偏移地址寄存器組合

46、關(guān)系段寄存器和偏移地址寄存器組合關(guān)系2.3.2 80862.3.2 8086存儲器的分體結(jié)構(gòu)存儲器的分體結(jié)構(gòu) 80868086系統(tǒng)中,系統(tǒng)中,1MB1MB的存儲空間分成兩個存儲體:偶地的存儲空間分成兩個存儲體:偶地址存儲體和奇地址存儲體,各為址存儲體和奇地址存儲體,各為512KB,512KB,示意圖如圖示意圖如圖2-102-10所示:所示:圖2-11 8086系統(tǒng)的存儲器結(jié)構(gòu)CSA19A1奇地址(高字節(jié))存儲體512K8D7D0A19A1地址總線8D15D8高8位數(shù)據(jù)線CSA19A1偶地址(低字節(jié))存儲體512K8D7D08D7D0低8位數(shù)據(jù)線BHEA0 圖2-11所示為8086系統(tǒng)的存儲器結(jié)

47、構(gòu)。1 MB存儲器分為兩個庫,每個庫的容量都是512 KB。其中和數(shù)據(jù)總線D15D8相連的庫全部由奇地址單元組成,稱為高位字節(jié)庫或奇地址庫,利用/BHE信號低電平作為此庫的選擇信號;另一個庫和數(shù)據(jù)總線D7D0相連,由偶地址單元組成,稱為低位字節(jié)庫或偶地址庫,利用地址線A00(低電平)作為此庫的選擇信號。所以只有A19A1 共19個地址線用來作為兩個庫內(nèi)的存儲單元的尋址信號。表2-1給出/BHE與A0相配合可能進行的操作。BHEA0操 作數(shù)據(jù)引腳00從偶地址開始讀/寫一個字(規(guī)則字)AD15AD010從偶地址開始讀/寫一個字節(jié)AD7AD001從奇地址開始讀/寫一個字節(jié)AD15AD80110從奇地

48、址開始讀寫一個字(非規(guī)則字),第一總線周期高8位數(shù)據(jù)有效,第二總線周期低8位數(shù)據(jù)有效AD15AD8AD7AD0表表2-1 和和A0的代碼組合對應的存取操作的代碼組合對應的存取操作BHE 當在偶數(shù)地址中存取一個數(shù)據(jù)字節(jié)時,CPU從低位庫中經(jīng)數(shù)據(jù)線AD7AD0存取數(shù)據(jù)。由于被尋址的是偶數(shù)地址,所以地址位A0=0,由于A0是低電平所以才能在低位庫中實現(xiàn)數(shù)據(jù)的存取。而指令中給出的是在偶地址中存取一個字節(jié),/BHE信號應為高電平,故不能從高位庫中讀出數(shù)據(jù)。相反,當在奇數(shù)地址中存取一個字節(jié)數(shù)據(jù)時,應經(jīng)數(shù)據(jù)線的高8位AD15AD8傳送。此時,指令應指出是從高位地址(奇數(shù)地址)尋址, /BHE信號為低電平有效

49、狀態(tài),故高位庫能被選中,即能對高位庫中的存儲單元進行存取操作。由于是高位地址尋址,故A0=1低位庫存儲單元不會被選中。如表2-1所示,8086 CPU也可以一次在兩個庫中同時各存取一個字節(jié),完成一個字的存取操作。 字數(shù)據(jù)是將連續(xù)存放的兩個字節(jié)數(shù)據(jù)構(gòu)成一個16位的字數(shù)據(jù)。規(guī)定字的高8位字節(jié)存放在高地址單元,字的低8位字節(jié)存放在低地址單元。同時規(guī)定將低位字節(jié)的地址作為這個字的地址。通常,一個字數(shù)據(jù)總是位于偶地址,即偶地址對應低位字節(jié),奇地址對應高位字節(jié),符合這種規(guī)則存放的字數(shù)據(jù)稱為“規(guī)則字”。雙字數(shù)據(jù)要占用4個字節(jié),用以存放連續(xù)的兩個字。在存放低位字或高位字時,高位字節(jié)位于高地址,低位字節(jié)位于低地

50、址,以最低位字節(jié)地址作為它的地址。 規(guī)則字的存取操作可以在一個總線周期中完成。由于地址線A19A1是同時連接在兩個庫上的,只要BHE和A0信號同時有效,就可以一次實現(xiàn)在兩個庫中對一個字(高低兩字節(jié))完成存取操作。對字的存取操作所需的BHE及A0信號是由字操作指令給出的。 對非規(guī)則字的存取操作就需要兩個總線周期才能完成:在第一個總線周期中,CPU是在高位庫中存取數(shù)據(jù)(低位字節(jié)),此時A0=1,BHE=0。然后再將存儲器地址加1,使A0=0,選中低位庫;在第二個總線周期中,是在低位庫中存取數(shù)據(jù)(高位字節(jié)),此時A0=0,BHE=1。本節(jié)主要內(nèi)容講解視頻本節(jié)主要內(nèi)容講解視頻2.3.3 堆棧的概念堆棧

51、的概念 所謂堆棧是在存儲器中開辟一個區(qū)域,用來存放需所謂堆棧是在存儲器中開辟一個區(qū)域,用來存放需要暫時保存的數(shù)據(jù)。堆棧段是由段定義語句在存儲器中要暫時保存的數(shù)據(jù)。堆棧段是由段定義語句在存儲器中定義的一個段,它可以在存儲器定義的一個段,它可以在存儲器lMB空間內(nèi)任意浮動,空間內(nèi)任意浮動,堆堆棧段容量小于等于棧段容量小于等于64KB,段基址由堆棧寄存器,段基址由堆棧寄存器SS指定,指定,棧頂由堆棧指針棧頂由堆棧指針SP指定,根據(jù)堆棧構(gòu)成方式不同,堆棧指定,根據(jù)堆棧構(gòu)成方式不同,堆棧指針指針SP指向的可以是當前棧頂單元,也可以是棧頂上的指向的可以是當前棧頂單元,也可以是棧頂上的一個一個“空空”單元,

52、一般采用單元,一般采用SP指向當前棧頂單元。堆棧指向當前棧頂單元。堆棧的的地址增長方式一般是向上增長,棧底設(shè)在存儲器的高地地址增長方式一般是向上增長,棧底設(shè)在存儲器的高地址區(qū),堆棧地址由高向低增長。址區(qū),堆棧地址由高向低增長。例例2.3 :假如當前:假如當前SSC000H,堆棧段,堆棧段64KB,SP1000H,指出當前棧頂在存儲器中的位置。當前棧頂,指出當前棧頂在存儲器中的位置。當前棧頂在存儲器中的地址為在存儲器中的地址為C1000H,如圖所示:,如圖所示: 堆棧的工作方式是堆棧的工作方式是“先進后出先進后出”,用入棧指,用入棧指令令PUSH和出棧指令和出棧指令POP可將數(shù)據(jù)壓入堆?;驈亩芽?/p>

53、將數(shù)據(jù)壓入堆?;驈亩褩V袕棾鰯?shù)據(jù),棧頂指針棧中彈出數(shù)據(jù),棧頂指針SP的變化由的變化由CPU自動管自動管理。堆棧以理。堆棧以字字為單位進行操作,堆棧中的數(shù)據(jù)項為單位進行操作,堆棧中的數(shù)據(jù)項以低字節(jié)在偶地址,高字節(jié)在奇地址的次序存放。以低字節(jié)在偶地址,高字節(jié)在奇地址的次序存放。 當執(zhí)行當執(zhí)行PUSH指令時,指令時,CPU自動修改指針自動修改指針SP-2SP。使。使SP指向新棧頂,然后將低位數(shù)據(jù)壓人指向新棧頂,然后將低位數(shù)據(jù)壓人(SP)單元,高位數(shù)據(jù)壓入單元,高位數(shù)據(jù)壓入(SP+1)單元。當執(zhí)行單元。當執(zhí)行POP指令時,指令時,CPU先將當前棧頂先將當前棧頂SP(低位數(shù)據(jù)低位數(shù)據(jù))和和SP+1(高位

54、數(shù)據(jù)高位數(shù)據(jù))中的內(nèi)容彈出,然后再自動修改中的內(nèi)容彈出,然后再自動修改指針,使指針,使SP+2SP,SP指向新棧頂。指向新棧頂。 例例2.4 上圖中若上圖中若AX3322H,BX 1100H , CX6655H,執(zhí)行指令,執(zhí)行指令 PUSH AX PUSH BX POP CX此時堆棧中內(nèi)容發(fā)生什么變化此時堆棧中內(nèi)容發(fā)生什么變化?AX,BX,CX中的內(nèi)容是什么中的內(nèi)容是什么? 如圖如圖C所示。所示。 堆棧主要用于中斷及子程序調(diào)用堆棧主要用于中斷及子程序調(diào)用,也可用于也可用于數(shù)數(shù)據(jù)暫時保存。在進入中斷服務(wù)子程序和子程序調(diào)據(jù)暫時保存。在進入中斷服務(wù)子程序和子程序調(diào)用前,原來用前,原來CPU中現(xiàn)行信息

55、中現(xiàn)行信息(指令指針指令指針I(yè)P,及寄,及寄存器中有關(guān)內(nèi)容存器中有關(guān)內(nèi)容)都必須保存,在中斷服務(wù)子程都必須保存,在中斷服務(wù)子程序和子程序調(diào)用結(jié)束返回主程序時,又必須恢復序和子程序調(diào)用結(jié)束返回主程序時,又必須恢復原來保存的信息,這些均由堆棧操作來完成。其原來保存的信息,這些均由堆棧操作來完成。其中指令指針的入棧和出棧由中指令指針的入棧和出棧由CPU自動管理,而一自動管理,而一些寄存器中內(nèi)容的保存及返回,需要用戶自己利些寄存器中內(nèi)容的保存及返回,需要用戶自己利用指令用指令PUSH、POP來完成。來完成。 由于堆棧操作的先進后出的特點,一定要注由于堆棧操作的先進后出的特點,一定要注意兩點:意兩點:

56、1)先進入的內(nèi)容要后彈出,保證返回寄存器內(nèi)容先進入的內(nèi)容要后彈出,保證返回寄存器內(nèi)容不發(fā)生錯誤。不發(fā)生錯誤。例例2.5 PUSH AX PUSH BX PUSH CX POP CX POP AX POP BX 會使會使AX和和BX內(nèi)容互相交換。內(nèi)容互相交換。2) PUSH和和POP的指令要成對,若不匹配的話,的指令要成對,若不匹配的話, 會造成返回主程序的地址出錯。會造成返回主程序的地址出錯。例例2.6 PUSH AX PUSH BX PUSH CX . POP CX POP BX RET 會使會使CPU返回主程序時,返回地址取出的是返回主程序時,返回地址取出的是原來原來AX中的內(nèi)容,使整個程

57、序執(zhí)行出錯。中的內(nèi)容,使整個程序執(zhí)行出錯。2.4 8086系統(tǒng)配置 8086/8088系統(tǒng)可以有最小模式和最大模式兩種系統(tǒng)系統(tǒng)可以有最小模式和最大模式兩種系統(tǒng)配置方式,兩種方式的選擇是由硬件設(shè)定的。當配置方式,兩種方式的選擇是由硬件設(shè)定的。當CPU的的引腳引腳 MN/MX 端接高電平端接高電平+5V時,構(gòu)成最小模式,當時,構(gòu)成最小模式,當MN/MX接低電平時,構(gòu)成最大模式。接低電平時,構(gòu)成最大模式。 最小模式最小模式: 單機系統(tǒng),系統(tǒng)中所需要的控制信號由單機系統(tǒng),系統(tǒng)中所需要的控制信號由CPU提供,實現(xiàn)和存儲器及提供,實現(xiàn)和存儲器及I/0接口電路的連接。接口電路的連接。 最大模式最大模式:可以

58、構(gòu)成多處理器可以構(gòu)成多處理器/協(xié)處理器系統(tǒng),即一個協(xié)處理器系統(tǒng),即一個系統(tǒng)中存在兩個以上微處理器,每個處理器執(zhí)行自己的系統(tǒng)中存在兩個以上微處理器,每個處理器執(zhí)行自己的程序。程序。 常用的處理器有數(shù)值運算協(xié)處理器常用的處理器有數(shù)值運算協(xié)處理器8087,輸入,輸入/輸出輸出處理器處理器8089。 系統(tǒng)中所需要的控制信號由總線控制器系統(tǒng)中所需要的控制信號由總線控制器8288提供,提供,8086 CPU提供信號控制提供信號控制8288,以實現(xiàn)全局資源分配及總,以實現(xiàn)全局資源分配及總線控制權(quán)傳遞。線控制權(quán)傳遞。2.4.1 最小模式系統(tǒng)最小模式系統(tǒng) 在最小模式系統(tǒng)中,除了在最小模式系統(tǒng)中,除了8086CP

59、U,存儲器,存儲器及及I/O接口芯片外,還要加入接口芯片外,還要加入: 1片片8284A,作為時鐘發(fā)生器,作為時鐘發(fā)生器 3片片8282/8283或或74LS373,作為地址鎖存器,作為地址鎖存器 2片片8286/8287或或74LS245,作為雙向數(shù)據(jù)總線,作為雙向數(shù)據(jù)總線收發(fā)器收發(fā)器配置成一個系統(tǒng)。配置成一個系統(tǒng)。圖圖2.15 8086CPU最小模式下的典型配置最小模式下的典型配置1.地址鎖存器地址鎖存器8282/8283 CPU與存儲器與存儲器(或或I/O端口端口)進行數(shù)據(jù)交換時,進行數(shù)據(jù)交換時,CPU首首先要送出地址信號,然后再發(fā)出控制信號及傳送數(shù)據(jù)。先要送出地址信號,然后再發(fā)出控制信

60、號及傳送數(shù)據(jù)。由于由于8086引腳限制,地址和數(shù)據(jù)分時復用一組總線,所引腳限制,地址和數(shù)據(jù)分時復用一組總線,所以要加入地址鎖存器,先鎖存地址,使在讀以要加入地址鎖存器,先鎖存地址,使在讀/寫總線周期寫總線周期內(nèi)地址穩(wěn)定。內(nèi)地址穩(wěn)定。8282/8283是三態(tài)緩沖的是三態(tài)緩沖的8位數(shù)據(jù)鎖存器,位數(shù)據(jù)鎖存器,8282的輸入和輸出信號是同相的,的輸入和輸出信號是同相的, 8283的輸入和輸出信的輸入和輸出信號反相。號反相。 8282/8283在最小模式系統(tǒng)中作地址鎖存器用,在最小模式系統(tǒng)中作地址鎖存器用,20位物理地址需要用位物理地址需要用3片。片。OODQCLKOSTB。ODI 0DO 0OE。82

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論