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

下載本文檔

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

文檔簡(jiǎn)介

1、第2章 8086系統(tǒng)結(jié)構(gòu)2.1 8086CPU結(jié)構(gòu)結(jié)構(gòu) 2.2 8086CPU的引腳及其功能的引腳及其功能2.3 8086存儲(chǔ)器組織存儲(chǔ)器組織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基本相同但對(duì)外數(shù)據(jù)總線只有基本相同但對(duì)外數(shù)據(jù)總線只有8條,稱為準(zhǔn)條,稱為準(zhǔn)16位微處理器。位微處理器。2.1.1 8086CPU的內(nèi)部結(jié)構(gòu)的內(nèi)部結(jié)構(gòu) 微型計(jì)算機(jī)工作時(shí),總是先從存儲(chǔ)器中取指令,

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

3、訪問存儲(chǔ)器或令,不必訪問存儲(chǔ)器或I/O端口端口。若需要訪問存儲(chǔ)器或若需要訪問存儲(chǔ)器或I/O端口,也是由端口,也是由EU向向BIU發(fā)出訪問所需要的地址,在發(fā)出訪問所需要的地址,在BIU中形成物理地址,然后訪問存儲(chǔ)器或中形成物理地址,然后訪問存儲(chǔ)器或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運(yùn)算暫存器ALU標(biāo)志寄存器執(zhí)行單元

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

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

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

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

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

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

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

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

12、P中存放現(xiàn)行堆棧段中一個(gè)數(shù)據(jù)區(qū)的中存放現(xiàn)行堆棧段中一個(gè)數(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均為隱含尋址,此時(shí),均為隱含尋址,此時(shí),SISI和和DSDS聯(lián)用,聯(lián)用,DIDI和和ESES聯(lián)用。聯(lián)用。3.3.段寄存器段寄存器 8086/8088CPU8086/8088CPU可直接尋址可直接尋址1MB1MB的存儲(chǔ)器空間,直接的存儲(chǔ)器空間,直接尋址需要尋址需要2020位地址碼,而所有內(nèi)部寄存器都

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

15、相應(yīng)邏輯段的首地,由它們給出相應(yīng)邏輯段的首地址,稱為址,稱為“段基址段基址”。 段基址與段內(nèi)偏移地址組合形成段基址與段內(nèi)偏移地址組合形成2020位物理地址,段位物理地址,段內(nèi)偏移地址可存放在寄存器中,也可存放在存儲(chǔ)器中內(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)存放可執(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ū),采用先進(jìn)后出的段開辟為程序執(zhí)行中所要用的堆棧區(qū),采用先進(jìn)后出的方式訪問它。方式訪問它。 各個(gè)段寄存器指明了一個(gè)規(guī)定的現(xiàn)行段,各段寄存各個(gè)段寄存器指明了一個(gè)規(guī)定的現(xiàn)行段,各段寄存器不可互換使用。程序較小時(shí),代碼段、數(shù)據(jù)段、堆棧器不可互換使用。程序較小時(shí),代碼段、數(shù)據(jù)段、堆棧段可放在一個(gè)段內(nèi),即包含在段可放在一個(gè)段內(nèi),即包含在64KB64KB之內(nèi),而當(dāng)程序或數(shù)之內(nèi),而當(dāng)程序或數(shù)據(jù)量較大時(shí),超過了據(jù)量較大時(shí),超過了6

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

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

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

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

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

22、還是奇數(shù)。當(dāng)指令執(zhí)行結(jié)果的低8位中含有偶數(shù)個(gè)1時(shí),PF=1;否則PF=0。 AF(Auxiliary carry Flag)輔助進(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(Zero Flag)全零標(biāo)志位。若當(dāng)前的運(yùn)算結(jié)果為零,ZF=1;否則ZF=0。 SF(Sign Flag)符號(hào)標(biāo)志位。它和運(yùn)算結(jié)果的最高位相同。 OF(Overflow Flag)溢出標(biāo)志位。當(dāng)運(yùn)算過程中產(chǎn)生溢出時(shí),OF=1;否則OF=0。 (2) 3個(gè)控制標(biāo)志位用來控制CPU的操作,由指令進(jìn)行置位和復(fù)位。

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

24、當(dāng)該位復(fù)位后,CPU恢復(fù)正常工作。例2.2 將5394H與777FH兩數(shù)相加,并說明其標(biāo)志位狀態(tài): 0101 0011 1001 0100 1000 1000 1000 0001 1101 1100 0001 0101 運(yùn)算結(jié)果為23EBH,并置標(biāo)志位為 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ù)它的基本性能,應(yīng)包括根據(jù)它的基本性能,應(yīng)包括2020條地址條地址線線,16,16條數(shù)據(jù)線,加上控制信號(hào),電源和地線,芯片的引條數(shù)據(jù)線,加上控制信號(hào),電

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

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

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

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

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

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

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

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

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

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

35、15-AD0地址地址/數(shù)據(jù)總線。數(shù)據(jù)總線。(12)DT/R:數(shù)據(jù)發(fā)送:數(shù)據(jù)發(fā)送/接收控制信號(hào),三態(tài)輸出。此接收控制信號(hào),三態(tài)輸出。此信號(hào)控制數(shù)據(jù)總線上的收發(fā)器信號(hào)控制數(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ù)允許信號(hào),三態(tài)輸出,低電平有效。:數(shù)據(jù)允許信號(hào),三態(tài)輸出,低電平有效。作為數(shù)據(jù)總線上收發(fā)器作為數(shù)據(jù)總線上收發(fā)器8286的選通信號(hào)。的選通信號(hào)。(14)HOLD:總線請(qǐng)求信號(hào),輸入,高電平有效。當(dāng):總線請(qǐng)求信號(hào),輸入,高電平有效。當(dāng)系統(tǒng)中系統(tǒng)中CPU之

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

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

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

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

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

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

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

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

44、位二進(jìn)制數(shù),程序設(shè)計(jì)時(shí)采用位二進(jìn)制數(shù),程序設(shè)計(jì)時(shí)采用邏輯地址。邏輯地址。物理地址物理地址:存儲(chǔ)器的絕對(duì)地址,從:存儲(chǔ)器的絕對(duì)地址,從0000000000FFFFFHFFFFFH,是,是CPUCPU訪問存儲(chǔ)器的實(shí)際尋址地址,它由邏輯地址變換而來。訪問存儲(chǔ)器的實(shí)際尋址地址,它由邏輯地址變換而來。物理地址計(jì)算如下所示:物理地址計(jì)算如下所示: 物理地址段基址物理地址段基址1616偏移地址偏移地址 因?yàn)槎位分该慷蔚钠鹗嫉刂?,它必須是每小段的因?yàn)槎位分该慷蔚钠鹗嫉刂罚仨毷敲啃《蔚氖椎刂?,其低首地址,其? 4位一定為位一定為0 0,所以在實(shí)際工作時(shí),是從段,所以在實(shí)際工作時(shí),是從段寄存器中取出段基

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ù)段堆棧段堆棧段存儲(chǔ)器存儲(chǔ)器段寄存器和偏移地址寄存器組合

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

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

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

49、狀態(tài),故高位庫(kù)能被選中,即能對(duì)高位庫(kù)中的存儲(chǔ)單元進(jìn)行存取操作。由于是高位地址尋址,故A0=1低位庫(kù)存儲(chǔ)單元不會(huì)被選中。如表2-1所示,8086 CPU也可以一次在兩個(gè)庫(kù)中同時(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é)位于低地

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

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

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

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

54、數(shù)據(jù)高位數(shù)據(jù))中的內(nèi)容彈出,然后再自動(dòng)修改中的內(nèi)容彈出,然后再自動(dòng)修改指針,使指針,使SP+2SP,SP指向新棧頂。指向新棧頂。 例例2.4 上圖中若上圖中若AX3322H,BX 1100H , CX6655H,執(zhí)行指令,執(zhí)行指令 PUSH AX PUSH BX POP CX此時(shí)堆棧中內(nèi)容發(fā)生什么變化此時(shí)堆棧中內(nèi)容發(fā)生什么變化?AX,BX,CX中的內(nèi)容是什么中的內(nèi)容是什么? 如圖如圖C所示。所示。 堆棧主要用于中斷及子程序調(diào)用堆棧主要用于中斷及子程序調(diào)用,也可用于也可用于數(shù)數(shù)據(jù)暫時(shí)保存。在進(jìn)入中斷服務(wù)子程序和子程序調(diào)據(jù)暫時(shí)保存。在進(jìn)入中斷服務(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é)束返回主程序時(shí),又必須恢復(fù)序和子程序調(diào)用結(jié)束返回主程序時(shí),又必須恢復(fù)原來保存的信息,這些均由堆棧操作來完成。其原來保存的信息,這些均由堆棧操作來完成。其中指令指針的入棧和出棧由中指令指針的入棧和出棧由CPU自動(dòng)管理,而一自動(dòng)管理,而一些寄存器中內(nèi)容的保存及返回,需要用戶自己利些寄存器中內(nèi)容的保存及返回,需要用戶自己利用指令用指令PUSH、POP來完成。來完成。 由于堆棧操作的先進(jìn)后出的特點(diǎn),一定要注由于堆棧操作的先進(jìn)后出的特點(diǎn),一定要注意兩點(diǎn):意兩點(diǎn):

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

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

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

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

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論