微機(jī)原理第2章.ppt_第1頁
微機(jī)原理第2章.ppt_第2頁
微機(jī)原理第2章.ppt_第3頁
微機(jī)原理第2章.ppt_第4頁
微機(jī)原理第2章.ppt_第5頁
已閱讀5頁,還剩85頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、,8086CPU的基本性能指標(biāo): (1)16位微處理器; (2)采用高速運(yùn)算性能的HMOS工藝制造,芯片上集成了2.9萬只晶體管; (3)使用單一的+5V電源,40條引腳雙列直插式封裝(DIP); (4)時(shí)鐘頻率為5MHz10MHz,基本指令執(zhí)行時(shí)間為 0.3ms0.6ms (5)16根數(shù)據(jù)線和20根地址線,可尋址的地址空間達(dá)1MB (6)8086可以和浮點(diǎn)運(yùn)算器、輸入/輸出處理器或其他處理器組成多處理器系統(tǒng),從而極大地提高了系統(tǒng)的數(shù)據(jù)吞吐能力和數(shù)據(jù)處理能力。,第2章 8086系統(tǒng)結(jié)構(gòu),8086是Intel系列的16位微處理器,采用HMOS工藝,內(nèi)部包含29000個(gè)晶體管。同時(shí), Intel還

2、推出了準(zhǔn)16位微處理器8088(內(nèi)部總線16位,外部總線8位)。主要用于兼容當(dāng)時(shí)的外圍接口芯片。 8086CPU內(nèi)部結(jié)構(gòu)框圖如下頁圖所示。從圖中可以看出,8086CPU有兩部分組成,指令執(zhí)行部件EU和總線接口部件BIU。,2-1 8086CPU的結(jié)構(gòu),外部 總線,圖2.1.1 8086CPU內(nèi)部結(jié)構(gòu)框圖,一、8086CPU的內(nèi)部結(jié)構(gòu) 8086CPU有兩部分組成,指令執(zhí)行部件EU和總線接口部件BIU。 1. 總線接口部件BIU(Bus Interface Unit) 功能: 總線接口部件BIU是CPU與外部(存儲器和I/O口)的接口,它提供了16位雙向數(shù)據(jù)總線和20位地址總線,完成所有的外部總線

3、操作。具有地址形成、取指令、指令排隊(duì)、讀/寫操作數(shù)、總線控制等功能。 組成:4個(gè)16位段地址寄存器(CS、DS、ES、SS) 16位指令指針寄存器IP 20位物理地址加法器 6字節(jié)指令隊(duì)列 總線控制器,BIU的特點(diǎn): 8086/8088的指令隊(duì)列分別為6/4個(gè)字節(jié),在執(zhí)行指令的同時(shí),可從內(nèi)存中取出后續(xù)的指令代碼,放在指令隊(duì)列中,可以提高CPU的工作效率。地址加法器用來產(chǎn)生20位物理地址。8086可用20位地址尋址1M字節(jié)的內(nèi)存空間,而CPU內(nèi)部的寄存器都是16 位,因此需要由一個(gè)附加的機(jī)構(gòu)來計(jì)算出20位的物理地址,這個(gè)機(jī)構(gòu)就是20位的地址加法器。 例如:CS0FE00H,IP0400H,則表示

4、要取指令代碼的物理地址為0FE400H。,2020/10/5,合肥學(xué)院電子系,6,2. 指令執(zhí)行部件EU(Execution Unit),功能:指令執(zhí)行部件EU完成指令譯碼和指令執(zhí)行的工作。 組成:算術(shù)邏輯單元ALU 標(biāo)志寄存器PSW 4個(gè)16位通用寄存器(AX、BX、CX、DX) 4個(gè)16位專用寄存器(BP、SP、SI、DI) EU控制器,3. BIU與EU的動作協(xié)調(diào)原則 總線接口部件(BIU)和執(zhí)行部件(EU)按以下流水線技術(shù)原則協(xié)調(diào)工作,共同完成所要求的信息處理任務(wù): (1)每當(dāng)8086的指令隊(duì)列中有1個(gè)空字節(jié)時(shí),BIU就會自動把指令從存儲器取到指令隊(duì)列中。其取指的順序是按指令在程序中出

5、現(xiàn)的前后順序。 (2)每當(dāng)EU準(zhǔn)備執(zhí)行一條指令時(shí),它會從BIU部件的指令隊(duì)列前部取出指令的代碼,然后用幾個(gè)時(shí)鐘周期去執(zhí)行指令。在執(zhí)行指令的過程中,如果必須訪問存儲器或者IO端口,那么EU就會請求BIU,進(jìn)入總線周期,完成訪問內(nèi)存或者IO端口的操作;如果此時(shí)BIU正好處于空閑狀態(tài),會立即響應(yīng)EU的總線請求。如BIU正將某個(gè)指令字節(jié)取到指令隊(duì)列中,則BIU將首先完成這個(gè)取指令的總線周期,然后再去響應(yīng)EU發(fā)出的訪問總線的請求。,(3)當(dāng)指令隊(duì)列已滿,且EU又沒有總線訪問請求時(shí),BIU便進(jìn)入空閑狀態(tài)。 (4)在執(zhí)行轉(zhuǎn)移指令、調(diào)用指令和返回指令時(shí),由于待執(zhí)行指令的順序發(fā)生了變化,則指令隊(duì)列中已經(jīng)裝入的字

6、節(jié)被自動消除,BIU會接著往指令隊(duì)列裝入轉(zhuǎn)向的另一程序段中的指令代碼。 BIU與EU兩者的工作是不同步的,8086可以在執(zhí)行指令的同時(shí),進(jìn)行取指令代碼的操作,即BIU與EU是一種并行工作方式,改變了以往計(jì)算機(jī)取指令譯碼執(zhí)行指令的串行工作方式,大大提高了工作效率。,總結(jié): BIU狀態(tài): (1)將指令按序取入指令隊(duì)列(指令隊(duì)列中只要有兩個(gè)以上空,就取指令); (2)響應(yīng)EU的總線周期,完成訪問存儲器、I/O口; (3)空閑狀態(tài)(指令隊(duì)列不空,也無EU的總線的請求)。 EU狀態(tài): (1)從BIU指令隊(duì)列前部取出指令,經(jīng)指令譯碼后,執(zhí)行指令; (2)訪問存儲器、I/O口,向BIU提出總線周期申請; (

7、3) BIU指令隊(duì)列空時(shí),EU處于等待狀態(tài)。,2020/10/5,合肥學(xué)院電子系,10,4. 80X86CPU的寄存器,8086CPU的寄存器可分為通用寄存器、指針和變址寄存器、段寄存器指令指針及標(biāo)志寄存器。 (1) 通用寄存器(見教材P25表2-1) 8086有4個(gè)16位的通用寄存器(AX、BX、CX、DX),可以存放16位的操作數(shù),也可分為8個(gè)8位的寄存器(AL、AH;BL、BH;CL、CH;DL、DH)來使用。除了作為通用寄存器外,它們還有專門的用途: AX( Accumulator ):累加器,存放算術(shù)運(yùn)算操作數(shù)、結(jié)果; BX( Base ):基址寄存器; CX( Count ):計(jì)數(shù)

8、器寄存器; DX( Data ):數(shù)據(jù)寄存器。,上面4個(gè)16位寄存器都具有通用性,從而提高了指令系統(tǒng)的靈活性。但在有些指令中,這些通用寄存器還各自有特定的用法 ,如下表所示。 表21 寄存器主要用途,(2)指針和變址寄存器 (見教材P25表2-1) 8086有4個(gè)16位的指針或變址寄存器( SI 、 DI 、 SP 、 BP )。 SI( Source Index ):源變址寄存器 DI( Destination Index ):目的變址寄存器 SP( Stack Point ):堆棧指針,基址指針 BP( Base Point ):基址指針,指針寄存器 系統(tǒng)中有兩個(gè)16位的指針寄存器SP和B

9、P. BP 稱為基址指針寄存器,用于存放偏移量,通常和SS段寄存器配合使用,在間接尋址中用于定位堆棧段中的內(nèi)存單元。 SP 稱為堆棧指針,用于存放偏移量,只能和SS段寄存器配合使用,且始終指向堆棧的棧頂,在堆棧指令中隱含的使用它來定位棧頂數(shù)據(jù)。,注:BX稱為基址寄存器,可以用于存放偏移量或者是偏移量的一部分(后面介紹指令尋址方式時(shí)會詳細(xì)分析),通常和DS、ES這兩個(gè)段寄存器配合使用,用于定位數(shù)據(jù)段或附加段中的內(nèi)存單元。 變址寄存器 系統(tǒng)中有兩個(gè)16位的變址寄存器SI和DI,都用于指令的變址尋址方式。 SI 稱為源變址寄存器,用于存放偏移量或偏移量的一部分,通常和DS、ES這兩個(gè)段寄存器配合使用

10、,用于定位數(shù)據(jù)段或附加段中的內(nèi)存單元。在串操作指令中,用于指明源串偏移量。 DI 稱為目的變址寄存器,用于存放偏移量或偏移量的一部分,通常和DS、ES這兩個(gè)段寄存器配合使用,用于定位數(shù)據(jù)段或附加段中的內(nèi)存單元。在串操作指令中,用于指明目的串偏移量。,(3) 指令指針及標(biāo)志寄存器 8086的指令指針及標(biāo)志寄存器包括IP、SP和PSW 3個(gè) 16位寄存器。 IP、 PSW是系統(tǒng)中的兩個(gè)16位控制寄存器。 指令指針寄存器IP IP 用來控制CPU的指令執(zhí)行順序,用于存放偏移量,只能和代碼段寄存器CS配合使用,可以確定當(dāng)前所要取的指令的內(nèi)存地址,且始終指向代碼段中下一條將要讀取到CPU指令隊(duì)列的那條指

11、令。 順序執(zhí)行程序時(shí),CPU每取一個(gè)指令字節(jié),IP自動加1,指向下一個(gè)要讀取的字節(jié);修改IP中內(nèi)容的操作是CPU在每讀取一條指令到指令隊(duì)列后自動進(jìn)行的,使它指向要讀取的下一條指令。 跳轉(zhuǎn)指令中可以隱含的修改IP寄存器中的內(nèi)容。,標(biāo)志寄存器 PSW 標(biāo)志寄存器PSW(處理器狀態(tài)字),用來存放8086/8088CPU在工作過程中的狀態(tài)。 PSW為16位寄存器,其中共有9個(gè)標(biāo)志位,可分成兩類:一類為狀態(tài)標(biāo)志,一類為控制標(biāo)志。 狀態(tài)標(biāo)志:表示前一步操作(如加、減等)執(zhí)行以后,ALU所處的狀態(tài),后續(xù)操作可以根據(jù)這些狀態(tài)標(biāo)志進(jìn)行判斷,實(shí)現(xiàn)轉(zhuǎn)移; 控制標(biāo)志:可以通過指令人為設(shè)置,用以對某一種特定的功能起控制

12、作用(如中斷屏蔽等),反映了人們對微機(jī)系統(tǒng)工作方式的可控制性。 PSW中各標(biāo)志位的安排如下表所示。,PSW是按位操作的。可以通過轉(zhuǎn)移指令來判斷標(biāo)志位的變化,從而實(shí)現(xiàn)程序中的分支結(jié)構(gòu)或者循環(huán)結(jié)構(gòu)。 PSW中各標(biāo)志位含義如下: 狀態(tài)標(biāo)志:6個(gè) CF進(jìn)位標(biāo)志位,實(shí)現(xiàn)加法(或減法)時(shí),當(dāng)最高位出現(xiàn)進(jìn)位(或借位) ,CF位自動置1,反之置0。 PF奇偶標(biāo)志位,當(dāng)運(yùn)算結(jié)果的低8位中l(wèi)的個(gè)數(shù)為偶數(shù)時(shí),則PF位自動置1,反之為0( 和單片機(jī)相反)。 AF半進(jìn)位標(biāo)志位,實(shí)現(xiàn)加法(或減法)時(shí),當(dāng)?shù)退奈幌蚋咚奈挥羞M(jìn)位(或借位), AF位自動置1。通常用于對BCD算術(shù)運(yùn)算結(jié)果的調(diào)整。 例如:1101 1000+101

13、0 1110=1 1000 0110其中AF1,CF1 ZF零標(biāo)志位,運(yùn)算結(jié)果為0時(shí), ZF位自動置1,否則清0。 SF符號標(biāo)志位,當(dāng)運(yùn)算結(jié)果的最高位為1, SF自動位置1,否則清0。即與運(yùn)算結(jié)果的最高位相同。,OF溢出標(biāo)志位,OF溢出的判斷方法如下: 加法運(yùn)算: 若兩個(gè)加數(shù)的最高位為0,而和的最高位為1,則產(chǎn)生溢出; 若兩個(gè)加數(shù)的最高位為1,而和的最高位為0,則產(chǎn)生溢出; 兩個(gè)加數(shù)的最高位不相同時(shí),不可能產(chǎn)生溢出。 減法運(yùn)算: 若被減數(shù)的最高位為0,減數(shù)的最高位為1,而差的最高位為1,則產(chǎn)生溢出; 若被減數(shù)的最高位為1,減數(shù)的最高位為0,而差的最高位為0,則產(chǎn)生溢出; 被減數(shù)及減數(shù)的最高位相

14、同時(shí),按兩數(shù)的大小判斷溢出。 如果所進(jìn)行的運(yùn)算是帶符號數(shù)的運(yùn)算,則溢出標(biāo)志恰好能夠反映運(yùn)算結(jié)果是否超出了8位或16位帶符號數(shù)所能表達(dá)的范圍,即字節(jié)運(yùn)算大于十127或小于128時(shí),字運(yùn)算大于十32767或小于32768時(shí),該位置1,反之為0。,例如: 0101 0100 0011 1001 0100 0101 0110 1010 1001 1001 1010 0011 CF0、AF1、PF1、ZF0、SF1、OF1(兩正數(shù)相加結(jié)果為負(fù)) 一般來講,不是每次運(yùn)算后所有的標(biāo)志都改變,只是在某些操作之后,才對其中某個(gè)標(biāo)志進(jìn)行檢查。 控制標(biāo)志:3個(gè) TF陷阱標(biāo)志位(單步標(biāo)志位、跟蹤標(biāo)志)。當(dāng)TF位置1時(shí)

15、,將使8086/8088進(jìn)入單步工作方式,通常用于程序的調(diào)試。 IF中斷允許標(biāo)志位,若IF位置1,則處理器可以響應(yīng)可屏蔽中斷,否則就不能響應(yīng)可屏蔽中斷。 DF方向標(biāo)志位,若DF位置1,則串操作指令的地址修改為自動減量方向,反之,為自動增量方向。,(1)CF標(biāo)志位的實(shí)用價(jià)值: a. 如果用戶需要進(jìn)行多字節(jié)無符號數(shù)的算術(shù)運(yùn)算,那么 CF標(biāo)志就是低位字節(jié)和高位字節(jié)間進(jìn)位和借位的橋梁。 8086/8088CPU提供的指令,能夠直接處理的最大無符號數(shù)就是一個(gè)字(16位),如果超出這個(gè)范圍,就必須使用多字節(jié)來表示要計(jì)算的數(shù)據(jù)。 這個(gè)原理不光只在8086/8088芯片中有,任何芯片,無論它處理的數(shù)據(jù)范圍多么

16、大,它總是一個(gè)有限的單位,如果超出這個(gè)單位,就必須使用標(biāo)志位作為運(yùn)算的中介。 b. 在執(zhí)行移位指令時(shí), CF標(biāo)志用于存放移出位的值。 例如對01010011實(shí)行邏輯右移,即把這個(gè)字節(jié)中的每一位向右移動一位,左邊空出的那一位置為0,以前最右邊那一位就被移出字節(jié)范圍外了,那么這一位就是移出位,移出位都是保存在 CF中的。這個(gè)例子中,移位完成后, CF應(yīng)該等于1。 c. CF標(biāo)志位還能夠?yàn)橐恍l件轉(zhuǎn)移指令提供判別依據(jù)。 例如JC指令,它就是先判別CF標(biāo)志位的值,如果CF=1,就跳轉(zhuǎn)到指令中給出地址繼續(xù)執(zhí)行程序,如果 CF=0,就不作跳轉(zhuǎn),CPU會順序執(zhí)行下一條指令。也就是說,在程序中,可以根據(jù)CF標(biāo)

17、志取值的不同來實(shí)現(xiàn)程序的分支或循環(huán)結(jié)構(gòu)。,(2)奇偶標(biāo)志位PF(Parity Flag): 如果CPU所執(zhí)行的指令要影響PF標(biāo)志,并且該指令得到的數(shù)據(jù)結(jié)果低8位中含有偶數(shù)個(gè)“1”時(shí),PF=1;含有奇數(shù)個(gè)“1”,PF=0。 注意無論指令的操作數(shù)有多么長,只有低8位數(shù)據(jù)中1的個(gè)數(shù)能夠影響到PF標(biāo)志的取值。 PF標(biāo)志位的實(shí)用價(jià)值: 這個(gè)標(biāo)志位對于校驗(yàn)操作是很有用的。這里以對ASCII碼的校驗(yàn)來說明它的應(yīng)用,ASCII碼占用一個(gè)字節(jié),但是只有低7位是真正的碼值,最高位是校驗(yàn)位。如果使用奇校驗(yàn),那么必須保證編碼字節(jié)中始終保持有奇數(shù)個(gè)“1”,這種編碼格式可以通過調(diào)整最高位的取值來實(shí)現(xiàn),如果ASCII碼中已

18、經(jīng)有奇數(shù)個(gè)“1”,那么第7位應(yīng)取值為0;如果ASCII碼中僅有偶數(shù)個(gè)“1”,那么第7位應(yīng)取值為1,使“1”的個(gè)數(shù)變?yōu)槠鏀?shù)。 現(xiàn)在,試設(shè)想計(jì)算機(jī)通過網(wǎng)絡(luò)接收ASCII碼,如何判斷收到的編碼是否正確呢?那就需要判斷收到的字節(jié)中是否為奇數(shù)個(gè)“1”,如果為偶數(shù)個(gè)“1”,那么收到的編碼一定是錯(cuò)誤的,必須要求重新發(fā)送。 在判斷“1”的個(gè)數(shù)時(shí),PF標(biāo)志的作用就體現(xiàn)出來了。通過PF標(biāo)志也可以使用條件轉(zhuǎn)移指令來實(shí)現(xiàn)程序中的分支或循環(huán)結(jié)構(gòu)。 通過奇偶校驗(yàn)碼能夠識別大部分經(jīng)常出現(xiàn)的錯(cuò)碼,但是并不能完全避免錯(cuò)碼。關(guān)于編碼機(jī)制可以參見計(jì)算機(jī)組成原理中的相關(guān)內(nèi)容,這里不作詳細(xì)的介紹。,(3)輔助進(jìn)位標(biāo)志位AF: AF標(biāo)志

19、,又稱半進(jìn)位標(biāo)志,在CPU執(zhí)行算術(shù)運(yùn)算指令時(shí),如果該指令要影響AF標(biāo)志,并且用戶把操作數(shù)看作無符號數(shù),AF標(biāo)志才有意義。 如果低字節(jié)中的低4位向高4位產(chǎn)生進(jìn)位或借位時(shí)(也就是第3位向第4位產(chǎn)生進(jìn)位或借位),AF被置為1;否則,AF被置為0。 判別標(biāo)準(zhǔn): 和CF一樣,使用無符號數(shù)的加減運(yùn)算來作判斷,只是判斷進(jìn)位和借位的位置不在操作數(shù)的最高位,而是在低字節(jié)的第3位。 實(shí)用價(jià)值: AF標(biāo)志的使用主要針對二-十進(jìn)制調(diào)整(用二進(jìn)制算術(shù)運(yùn)算實(shí)現(xiàn)十進(jìn)制算術(shù)運(yùn)算的功能) ,單純的二進(jìn)制運(yùn)算中,幾乎不使用AF標(biāo)志。 使用二進(jìn)制數(shù)表示十進(jìn)制數(shù)-BCD碼是用4位二進(jìn)制數(shù)表示1位十進(jìn)制數(shù)。我們知道,4位連續(xù)的二進(jìn)制數(shù)

20、實(shí)際上是一位十六進(jìn)制的數(shù)位,在運(yùn)算中是逢16進(jìn)1或借1。如果能夠通過某種調(diào)整機(jī)制把它變?yōu)榉?0進(jìn)1或借1,那么就可以使用二進(jìn)制運(yùn)算來實(shí)現(xiàn)十進(jìn)制運(yùn)算。 AF標(biāo)志位對于實(shí)現(xiàn)這種二-十進(jìn)制調(diào)整機(jī)制是必不可少的,它就是用于表達(dá)一個(gè)字節(jié)中低4位向高4位的進(jìn)位或借位情況的。,(4)零值標(biāo)志位ZF: 如果CPU執(zhí)行的指令要影響ZF標(biāo)志,并且保證ZF標(biāo)志是有意義的,那么當(dāng)指令得到的結(jié)果數(shù)據(jù)各位全為“0”時(shí),則ZF置“1”,否則ZF置“0”。 實(shí)用價(jià)值: ZF標(biāo)志的使用主要是進(jìn)行比較,并根據(jù)比較的結(jié)果來進(jìn)行程序的分支或循環(huán)。例如,對兩個(gè)整數(shù)進(jìn)行比較,即對兩個(gè)整數(shù)進(jìn)行相減的操作,如果兩個(gè)數(shù)是相等的,那么結(jié)果為0,

21、ZF=1;如果不等,那么結(jié)果非0,ZF=0。 比較的范圍可以很廣闊,不僅限于無符號數(shù)、補(bǔ)碼,還可以對字符或者某些特定的編碼進(jìn)行比較。和ZF標(biāo)志相關(guān)的條件轉(zhuǎn)移指令也很多,具體的應(yīng)用示例在以后的課程中會遇到很多。 (5)符號標(biāo)志位SF: 如果CPU執(zhí)行的指令要影響SF標(biāo)志,并且用戶把指令得到的結(jié)果數(shù)據(jù)看作帶符號數(shù),那么當(dāng)結(jié)果為負(fù)數(shù)時(shí),SF置“1”;當(dāng)結(jié)果為正數(shù)時(shí),SF置“0”。即SF標(biāo)志位的取值和結(jié)果數(shù)據(jù)的最高位是一致的,因?yàn)檠a(bǔ)碼的最高位就是符號位。 實(shí)用價(jià)值: 主要用于對算術(shù)運(yùn)算結(jié)果的符號進(jìn)行判斷,只有針對帶符號的運(yùn)算才是有意義的,可以通過兩個(gè)帶符號數(shù)經(jīng)過減法運(yùn)算后所得結(jié)果符號來判斷哪一個(gè)數(shù)更大

22、或者更小,從而結(jié)合條件轉(zhuǎn)移指令來實(shí)現(xiàn)程序的分支或循環(huán)。 在8086/8088指令系統(tǒng)中有與SF標(biāo)志直接相關(guān)的條件轉(zhuǎn)移指令,這就比判斷結(jié)果數(shù)據(jù)的最高位要方便得多。,(6)溢出標(biāo)志位OF: 如果CPU執(zhí)行算術(shù)運(yùn)算指令,并且用戶把操作數(shù)看作帶符號數(shù)時(shí),OF標(biāo)志位的取值才有意義。如果運(yùn)算結(jié)果超出了補(bǔ)碼的表示范圍(對字節(jié)來說,是-128到127,對字來說,是-32768到32767),那么解釋為溢出,OF置為1;如果運(yùn)算結(jié)果沒有超出補(bǔ)碼的表示范圍,OF置為0。,b. 正數(shù)+正數(shù): 若結(jié)果為正數(shù),表示符號位沒有丟掉,也就是沒溢出:OF=0; 若結(jié)果為負(fù)數(shù),表示符號位已經(jīng)丟失,結(jié)果已經(jīng)溢出:OF=1; (等

23、價(jià)運(yùn)算:正數(shù)-負(fù)數(shù)) 因?yàn)槌霈F(xiàn)溢出時(shí),參加運(yùn)算的兩個(gè)原始補(bǔ)碼都沒有超過表示范圍,如果運(yùn)算中超出了表示范圍,只會是符號位超出了表示范圍一位(只能是一位,不會多于一位),所以符號位丟沒丟掉的問題和溢出問題是等價(jià)的,硬件邏輯也就是通過判斷符號位有沒有丟失來判斷運(yùn)算有沒有溢出。,a. 正數(shù)+負(fù)數(shù): OF=0(等價(jià)運(yùn)算:正數(shù)-正數(shù); 負(fù)數(shù)-負(fù)數(shù)) 這種情況一定沒有溢出,負(fù)數(shù)和正數(shù)是相互抵消的,得到的結(jié)果會比兩個(gè)原始數(shù)據(jù)中較大的一個(gè)更靠近數(shù)軸的原點(diǎn),所以一定不會超出定義的補(bǔ)碼表示范圍。,OF標(biāo)志位的取值邏輯如下:,帶符號數(shù)的加減運(yùn)算可能出現(xiàn)的各種組合都可以等價(jià)替換為上面三種情況。 因?yàn)槌霈F(xiàn)溢出時(shí),參加運(yùn)算

24、的兩個(gè)原始補(bǔ)碼都沒有超過表示范圍,如果運(yùn)算中超出了表示范圍,只會是符號位超出了表示范圍一位(只能是一位,不會多于一位),所以符號位丟沒丟掉的問題和溢出問題是等價(jià)的,硬件邏輯也就是通過判斷符號位有沒有丟失來判斷運(yùn)算有沒有溢出。,c. 負(fù)數(shù)+負(fù)數(shù): 若結(jié)果為負(fù)數(shù),表示符號位沒有丟掉,也就是沒溢出:OF=0; 若結(jié)果為正數(shù),表示符號位已經(jīng)丟失,結(jié)果已經(jīng)溢出:OF=1; (等價(jià)運(yùn)算:負(fù)數(shù)-正數(shù)),實(shí)用價(jià)值: 主要用于實(shí)現(xiàn)程序分支或循環(huán),8086/8088指令系統(tǒng)中有單獨(dú)使用OF標(biāo)志位的條件轉(zhuǎn)移指令,可以實(shí)現(xiàn)對溢出現(xiàn)象的判斷和分支處理;也有結(jié)合使用OF標(biāo)志和SF標(biāo)志的條件轉(zhuǎn)移指令,使用這些轉(zhuǎn)移指令可以根

25、據(jù)兩個(gè)帶符號數(shù)比較大小的結(jié)果來實(shí)現(xiàn)分支處理。這些細(xì)節(jié)將在介紹條件轉(zhuǎn)移指令時(shí)詳細(xì)介紹。,TF標(biāo)志為用戶單步調(diào)試自己的程序提供了相應(yīng)的硬件基礎(chǔ)。如果使用指令將TF標(biāo)志清0,那么將會使CPU退出單步運(yùn)行模式,回到連續(xù)執(zhí)行機(jī)器指令的狀態(tài)。,(7)單步(或跟蹤)標(biāo)志位TF:,前面講到的標(biāo)志位都屬于狀態(tài)標(biāo)志位,是指令根據(jù)自己的執(zhí)行情況而為后續(xù)指令留下的一些可供參考的狀態(tài)信息。TF標(biāo)志位是一個(gè)控制標(biāo)志位,和前面所講的標(biāo)志位功能不同,它是用于觸發(fā)單步中斷的。,如果使用指令將TF標(biāo)志位置為1,那么CPU將進(jìn)入單步執(zhí)行指令的工作方式,每執(zhí)行完一條指令就會觸發(fā)單步中斷,執(zhí)行單步中斷服務(wù)程序,一般會在屏幕上顯示CPU

26、內(nèi)部各寄存器和標(biāo)志位的狀態(tài),以便用戶觀察該指令產(chǎn)生的影響。進(jìn)入中斷時(shí),TF標(biāo)志會自動被清0,所以中斷服務(wù)程序的執(zhí)行并不會出現(xiàn)單步執(zhí)行的情況,中斷服務(wù)程序結(jié)束后TF標(biāo)志會恢復(fù)中斷以前的設(shè)置。,實(shí)用價(jià)值: 使用戶能夠單步跟蹤和調(diào)試機(jī)器指令組成的程序。,作為一個(gè)用戶可設(shè)置的開關(guān),可以控制CPU是否處理可屏蔽中斷,在程序執(zhí)行不允許被打斷的情況下,可以采用這個(gè)開關(guān)來屏蔽可屏蔽中斷。,(8)中斷標(biāo)志位IF:,這也是一個(gè)控制標(biāo)志位,用于控制CPU是否處理可屏蔽中斷。 如果使用指令將IF標(biāo)志置為1,那么CPU將會處理任何可屏蔽中斷,如果使用指令將IF標(biāo)志置為0,那么CPU將不會處理可屏蔽中斷。,實(shí)用價(jià)值:,例

27、如,某些對執(zhí)行時(shí)間要求非常嚴(yán)格的程序段,執(zhí)行這種程序段時(shí)就不允許被中斷打斷,因?yàn)橹袛嗵幚頃砑宇~外的處理時(shí)間。 注意,IF標(biāo)志只能屏蔽可屏蔽中斷,對于一些由嚴(yán)重錯(cuò)誤或故障引起的不可屏蔽中斷則是無法屏蔽的。,對于標(biāo)志寄存器PSW中的標(biāo)志位,一些標(biāo)志位直接有條件轉(zhuǎn)移指令與之對應(yīng),能夠方便的通過這些標(biāo)志位實(shí)現(xiàn)程序的分支或循環(huán)結(jié)構(gòu)。一些標(biāo)志位沒有直接可用的條件轉(zhuǎn)移指令與之對應(yīng),但是仍然可以用其他方法來進(jìn)行判斷,從而實(shí)現(xiàn)分支或循環(huán)結(jié)構(gòu)。關(guān)于哪些指令具體會對哪些標(biāo)志位產(chǎn)生何種影響,以及如何在程序設(shè)計(jì)中正確的使用標(biāo)志位,將會在后面的課程中逐步熟悉起來。,(9)方向標(biāo)志位DF:,這也是一個(gè)控制標(biāo)志位,用于控制

28、串操作指令存取數(shù)據(jù)的方向。如果使用指令將DF標(biāo)志置為0,每執(zhí)行完一次串操作以后,源串地址指針SI和目的串地址指針DI中的內(nèi)容會自動遞增;如果使用指令將DF標(biāo)志置為1,那么每執(zhí)行完一次串操作以后,SI和DI中的內(nèi)容會自動遞減。,實(shí)用價(jià)值:,使用該控制標(biāo)志,可以由用戶來選擇串操作指令存取數(shù)據(jù)的方向。串操作指令是一種特殊的指令,它能對一串相同類型的數(shù)據(jù)作相同的一次處理,比使用循環(huán)結(jié)構(gòu)的程序效率更高,因?yàn)榇僮髦噶畹难h(huán)是在指令內(nèi)部完成的,而循環(huán)結(jié)構(gòu)的程序要完成循環(huán)需要執(zhí)行多條指令。,功能:段寄存器的內(nèi)容與有效的地址偏移量一起,可確定內(nèi)存的物理地址。通常CS劃定并控制程序區(qū),DS和ES控制數(shù)據(jù)區(qū),SS

29、控制堆棧區(qū)。,(4)段寄存器,段:內(nèi)存中一段連續(xù)的空間,在程序中具有特定的用途。 段基址:段在內(nèi)存中的起始地址 = 段基值 16 (左移4位) 8086CPU系統(tǒng)中共有4個(gè)16位段寄存器,用于存放程序所要使用的4個(gè)存儲段的段基值,分別對應(yīng)于內(nèi)存中的四塊存儲區(qū)域,代碼段CS、堆棧段SS、數(shù)據(jù)段DS、附加段ES。,2020/10/5,合肥學(xué)院電子系,29,代碼段:用于存放程序的機(jī)器指令序列; 堆棧段:用于存放程序使用堆棧指令所保存的數(shù)據(jù),自動保存的斷點(diǎn)等信息; 數(shù)據(jù)段:存放程序直接使用的數(shù)據(jù); 附加段:其中的內(nèi)容不確定,可以由程序開發(fā)人員根據(jù)實(shí)際需要自己決定。,每個(gè)程序都可能會使用這樣四個(gè)段,其中

30、代碼段是必須的,實(shí)用的程序通常至少包含代碼段、堆棧段、數(shù)據(jù)段。,代碼段寄存器CS (Code Segment) 數(shù)據(jù)段寄存器DS (Data Segment) 堆棧段寄存器SS (Stack Segment) 附加段寄存器ES (Extra Segment),2020/10/5,合肥學(xué)院電子系,30,2-2 8086的引腳信號和功能,如下頁圖所示,是8088/8086CPU的外部結(jié)構(gòu),即引腳信號圖。,8088/8086CPU芯片都是40引腳雙列直插式(DIP)封裝的集成電路芯片,其中32個(gè)引腳在兩種工作模式下的名稱和功能是相同的,還有8個(gè)引腳(24-37) 在不同的工作模式下,具有不同的名稱和

31、功能。,8086和8088的外部引腳信號,2020/10/5,合肥學(xué)院電子系,32,1. 兩種模式下,名稱和功能相同的32個(gè)引腳,(1)VCC、GND:電源、接地引腳,8088/8086CPU采用單一的+5V電源,但有兩個(gè)接地引腳。,(3)A19/S6A15/S3(Address Status Bus)(輸出、三態(tài)):高4位地址/狀態(tài)復(fù)用信號輸出引腳(4條),分時(shí)輸出地址的高4位及狀態(tài)信息。 S6 保持“0” 用以指示8086/8088CPU當(dāng)前與總線連通; S5 為狀態(tài)寄存器中斷允許標(biāo)志的狀態(tài),它在每個(gè)時(shí)鐘周期開始時(shí)修改,若當(dāng)前允許可屏蔽中斷,則S5置1,若S5 =0,則禁止一切可屏蔽中斷;

32、,(2)AD15AD0(Address Data Bus)(雙向、三態(tài)):地址/數(shù)據(jù)復(fù)用信號輸入/輸出引腳(16條),分時(shí)輸出低16位地址信號及輸入/輸出數(shù)據(jù)信號。通過時(shí)間上區(qū)分:T1狀態(tài)輸出低16位地址信號,然后外部地址鎖存, T3狀態(tài)輸入/輸出數(shù)據(jù)信號。,S4、S3共有四個(gè)組態(tài),用以指明當(dāng)前使用的段寄存器,如下表所示。,(4)NMI(Non-Maskable Interrupt)、INTR(Interrupt Request) NMI為非屏蔽中斷請求信號輸入引腳,高電平有效,上升沿觸發(fā),CPU必須在當(dāng)前指令結(jié)束后響應(yīng)該中斷,不受可屏蔽中斷允許標(biāo)志IF的限制,不能用軟件屏蔽。 INTR為可屏

33、蔽中斷請求信號輸入引腳,電平觸發(fā),CPU在指令的最后一個(gè)周期采樣INTR ,在當(dāng)前指令結(jié)束后響應(yīng)該中斷,可用軟件通過復(fù)位內(nèi)部中斷允許標(biāo)志IF 來屏蔽INTR信號的中斷請求。,(6)CLK(Clock)(輸入) :系統(tǒng)時(shí)鐘信號輸入引腳,時(shí)鐘信號的方波信號,占空比約為33%,即1/3周期為高電平,2/3周期為低電平,8088/8086的時(shí)鐘頻率(又稱為主頻)為4.77MHz,即從該引腳輸入的時(shí)鐘信號的頻率為4.77MHz。 8086-1時(shí)鐘頻率為10MHz, 8086-2時(shí)鐘頻率為8MHz。,(7)RESET( Reset ) (輸入) :復(fù)位信號輸入引腳,高電平有效。8088/8086CPU要求

34、復(fù)位信號至少維持4個(gè)時(shí)鐘周期才能起到復(fù)位的效果,復(fù)位信號輸入之后,CPU結(jié)束當(dāng)前操作,進(jìn)行復(fù)位操作,并對微處理器的標(biāo)志寄存器PSW、IP、DS、SS、ES寄存器及指令隊(duì)列進(jìn)行清零操作,而將CS設(shè)置為0FFFFH。,(8)READY(Ready):“準(zhǔn)備好”狀態(tài)信號輸入引腳,高電平有效,“Ready”輸入引腳接收來自于內(nèi)存單元或I/O端口向CPU發(fā)來的“準(zhǔn)備好”狀態(tài)信號,表明內(nèi)存單元或I/O端口已經(jīng)準(zhǔn)備好進(jìn)行讀/寫操作。該信號是協(xié)調(diào)CPU與內(nèi)存單元或I/O端口之間進(jìn)行信息傳送的聯(lián)絡(luò)信號。 CPU在T3(或TW )狀態(tài)采樣Ready信號,當(dāng)Ready=0(無效),則在T3(或TW )狀態(tài)結(jié)束后插入

35、TW狀態(tài)(等待周期),當(dāng)Ready=1(有效),進(jìn)入T4狀態(tài),完成數(shù)據(jù)傳送。,2020/10/5,合肥學(xué)院電子系,36,(10)MN/MX(Minimum/Maximum Model Control) :最小/最大模式設(shè)置信號輸入引腳,該輸入引腳電平的高、低決定了CPU工作在最小模式還是最大模式,當(dāng)該引腳接+5V時(shí),CPU工作于最小模式下,當(dāng)該引腳接地時(shí),CPU工作于最大模式下。,(11)BHE/S7(Bus High Enable/Status)(輸出、三態(tài)):高8位數(shù)據(jù)總線允許/狀態(tài)復(fù)用信號復(fù)用輸出引腳。分時(shí)輸出BHE有效信號(表示高8為數(shù)據(jù)線D15D8上的數(shù)據(jù)有效)和S7 狀態(tài)信號,但S

36、7未定義任何實(shí)際意義。,BHE信號與A0信號配合,控制數(shù)據(jù)傳送時(shí)的字、字節(jié)方式。具體規(guī)定如下表所示。,表 BHE和A0的代碼組合和對應(yīng)的操作,2020/10/5,合肥學(xué)院電子系,38,2. 最小模式下的24-31引腳,(1)M/IO (Memory/Input and Output):存儲器I/O端口控制輸出信號,是CPU區(qū)分進(jìn)行存儲器訪問還是I/O訪問的輸出控制信號。 M/IO=1,選擇訪問存儲器(表示CPU與存儲器之間進(jìn)行傳送數(shù)據(jù)); M/IO=0,選擇訪問I/O端口(表示CPU與之間I/O端口進(jìn)行傳送數(shù)據(jù))。,(2)INTA(Interrupt Acknowledge)(輸出):中斷響應(yīng)

37、信號輸出引腳,低電平有效,該引腳是CPU響應(yīng)中斷請求后,向中斷源發(fā)出的認(rèn)可信號,用以通知中斷源,以便提供中斷類型碼。該信號為兩個(gè)連續(xù)的負(fù)脈沖,在每個(gè)總線周期的T2、T3(TW)狀態(tài)INTA有效。 第一個(gè)負(fù)脈沖:通知外部I/O接口,它發(fā)出的中斷請求已得到允許。 第二個(gè)負(fù)脈沖:外部I/O接口收到第二個(gè)負(fù)脈沖后,往數(shù)據(jù)總線上送自己的中斷類型碼,從而CPU得到了有關(guān)此中斷源的詳細(xì)信息。 (3)ALE(Address Lock Enable)(輸出):地址鎖存允許輸出信號引腳,高電平有效,在任何一個(gè)總線周期的T1狀態(tài),ALE有效。CPU通過該引腳向地址鎖存器8282發(fā)出地址鎖存允許信號,把當(dāng)前地址/數(shù)據(jù)

38、復(fù)用總線上輸出的地址信息鎖存到地址鎖存器8282中去。注意:ALE信號不能被浮空。 (4)DEN(Data Enable)(輸出、三態(tài)):數(shù)據(jù)允許輸出信號引腳,低電平有效,當(dāng)AD15-AD0作為數(shù)據(jù)總線使用時(shí),DEN作為外部數(shù)據(jù)發(fā)送器8286的選通信號,表示CPU當(dāng)前準(zhǔn)備發(fā)送或接收一個(gè)數(shù)據(jù)。在訪問存儲器、I/O端口或中斷響應(yīng)周期時(shí)DEN有效。,(5)DT/R(Data Transmit/Receive) (輸出、三態(tài)):數(shù)據(jù)收發(fā)控制信號輸出引腳,CPU通過該引腳發(fā)出控制數(shù)據(jù)傳送方向的控制信號,在使用8286/8287作為數(shù)據(jù)總線收發(fā)器時(shí),DT/R信號用以控制數(shù)據(jù)傳送的方向,DT/R=1,表示發(fā)

39、送(數(shù)據(jù)由CPU經(jīng)總線收發(fā)器8286/8287輸出); DT/R=0 ,表示接收(數(shù)據(jù)由外設(shè)經(jīng)總線收發(fā)器8286/8287輸入到CPU )。 (6)WR( Write ) (輸出、三態(tài)):寫控制信號輸出引腳,低電平有效,與M/IO配合實(shí)現(xiàn)對存儲單元、I/O端口進(jìn)行寫操作的控制。P34 表2-6 注:讀RD、寫WR信號不能同時(shí)有效。 (7)HOLD(Hold Request)(輸入): 總線保持請求信號輸入引腳,高電平有效。當(dāng)系統(tǒng)中的其它總線部件要求占用總線時(shí),向CPU發(fā)出總線請求信號,使HOLD=1,有效。 (8)HLDA(Hold Acknowledge) (輸出):總線保持響應(yīng)信號輸出引腳

40、,高電平有效。當(dāng)CPU監(jiān)測到HOLD有效時(shí),就在當(dāng)前總線周期T4狀態(tài)從HLDA引腳向外設(shè)發(fā)出應(yīng)答信號(HLDA=1),同時(shí)使CPU與AB、DB、CB總線浮空,總線請求部件收到HLDA信號后,獲得總線控制權(quán)( HOLD=1,HLDA=1 )。,在總線占有部件用完總線后,置HOLD=0無效,CPU檢測到HOLD=0后,使HLDA=0,CPU又重新獲得AB、DB、CB總線控制權(quán)。 3. 最大模式下的24-31引腳 當(dāng)8088/8086CPU的引腳MN/MX接地時(shí),CPU處于最大模式下,這時(shí)候剩余的2431共8個(gè)引腳的名稱及功能如下: (1) QS1、QS0(Instruction Queue Sta

41、tus)(輸出):指令隊(duì)列狀態(tài)信號輸出引腳,這兩個(gè)信號的組合給出了前一個(gè)T狀態(tài)中指令隊(duì)列的狀態(tài),以便于外部對8086CPU內(nèi)部指令隊(duì)列的動作跟蹤,如下表所示:,(2)S2、S1、S0(Bus cycle status)(輸出):總線周期狀態(tài)信號輸出引腳,低電平有效,這些信號組合起來,可以指出當(dāng)前總線周期中,所進(jìn)行數(shù)據(jù)傳輸過程的類型,總線控制器8288利用這些信號來產(chǎn)生對存儲單元、I/O端口的控制信號。S2、S1、S0與具體物理過程之間的對應(yīng)關(guān)系,如下表所示。,有源狀態(tài):對于 S2、S1、S0的組合來說,在前一個(gè)總線周期的T4狀態(tài)和本總線周期的T1和T2狀態(tài)中,至少有一個(gè)信號為0(低電平),每種

42、組合都對應(yīng)一個(gè)具體的總線操作,稱為有源狀態(tài)。 無源狀態(tài):在總線周期的T3和TW狀態(tài)且READY1時(shí), S2S1S0=111(全為高電平),此時(shí)一個(gè)總線操作即將結(jié)束,另一個(gè)總線周期還未開始,稱為無源狀態(tài)。 在無源狀態(tài)時(shí),若S2、S1、S0其中任一信號的改變,都意味著一個(gè)新的總線周期的開始。 (3)LOCK (Lock)(輸出、三態(tài)):總線封鎖輸出信號引腳,低電平有效。當(dāng)該引腳輸出低電平時(shí),系統(tǒng)中其它總線部件不能占用系統(tǒng)總線。 LOCK信號是由指令前綴LOCK產(chǎn)生的,在LOCK前綴后面的一條指令執(zhí)行完畢之后,便撤消LOCK信號。此外,在8086的2個(gè)中斷響應(yīng)脈沖之間 LOCK信號也自動變?yōu)橛行У牡?/p>

43、電平,以防止其它總線部件在中斷響應(yīng)過程中,占有總線而使一個(gè)完整的中斷響應(yīng)過程被中斷。,(4)RQ/GT0、RQ/GT1(Request/Grant)(雙向):總線請求信號輸入/總線允許信號輸出引腳。這兩個(gè)信號端可供CPU以外的兩個(gè)處理器,用來發(fā)出使用總線的請求信號和接收CPU對總線請求信號的應(yīng)答。這兩個(gè)引腳都是雙向的,請求與應(yīng)答信號在同一引腳上分時(shí)傳輸,方向相反。其中RQ/GT1比RQ/GT0的優(yōu)先級低。 4. 8086/8088CPU的引腳分類 (1)數(shù)據(jù)/地址復(fù)用線、地址線、地址/狀態(tài)復(fù)用線:AD0AD7 、AD8AD15、A16A19/S3S6 (2)電源、地:VCC、GND(2個(gè)) (

44、3)最小模式下與地址總線有關(guān)的信號:ALE (4)最小模式下與數(shù)據(jù)總線有關(guān)的信號:DEN、DT/R、BHE/S7 (5)最小模式下與CPU有關(guān)的控制信號:RESET、CLK、TEST、READY、HOLD/HLDA (6)最小模式下與存儲器、I/O操作有關(guān)的信號:M/IO、RD、WR (7)最小模式下與中斷有關(guān)的信號:NMI、INTR、INTA (8)最小/最大模式選擇信號:MN/MX,2020/10/5,合肥學(xué)院電子系,45,(9)最大模式下總線周期狀態(tài)信號: S2、S1、S0 (10)最大模式下指令隊(duì)列狀態(tài)信號: QS1、QS0 (11)最大模式下總線請求信號/總線請求允許信號: RQ/G

45、T1、RQ/GT0 (12)總線封鎖信號:LOCK,2020/10/5,合肥學(xué)院電子系,46,2-3 8086存儲器組織,一、存儲器地址的分段 1.存儲器地址的分段,由于CPU內(nèi)部的寄存器都是16位的,為了能夠提供20位的物理地址,8086系統(tǒng)中采用了存儲器分段的方法。規(guī)定存儲器的一個(gè)段為64KB,由段寄存器來確定存儲單元的段地址,由指令提供該單元相對于相應(yīng)段起始地址的16位偏移量。這樣,系統(tǒng)的整個(gè)存儲空間可分為16個(gè)互不重疊的邏輯段,如左下圖所示。,存儲器的每個(gè)段的容量為64KB,并允許在整個(gè)存儲空間內(nèi)浮動,即段與段之間可以部分重疊、完全重疊、連續(xù)排列,非常靈活,如右下圖所示。,2020/1

46、0/5,合肥學(xué)院電子系,47,2. 存儲容量,8086系統(tǒng)有20根地址總線,因此,它可以直接尋址的存儲器單元數(shù)為220=1MB,這1MB的存儲器單元按照00000FFFFFH來編址。,3. 邏輯地址(LA)和物理地址(PA),邏輯地址:是在程序中使用的地址,它由段地址和偏移地 址兩部分組成(16位)。 邏輯地址的表示形式為“段地址:偏移地址”。 例如:2000H:0100H。,物理地址: 8086可直接尋址1MB的存儲空間,其地址區(qū)域?yàn)?0000HFFFFFH ,與存儲單元一一對應(yīng)的20位地址,我們稱之為存儲單元的物理地址。就是存儲器的實(shí)際地址,它是指CPU和存儲器進(jìn)行數(shù)據(jù)交換時(shí)所使用的地址(

47、20位)。,2020/10/5,合肥學(xué)院電子系,48,物理地址是由段地址與偏移地址共同決定的,段地址來自于段寄存器(CS、DS、ES、SS),是十六位地址,由段地址及偏移地址計(jì)算物理地址的表達(dá)式為:,物理地址 = 段地址 16 + 偏移地址,例如:系統(tǒng)啟動后,指令的物理地址由CS的內(nèi)容與IP的內(nèi)容共同決定,由于系統(tǒng)啟動的CS=0FFFFH,IP=0000H,所以初始指令的物理地址為0FFFF0H,我們可以在0FFFF0H單元開始的幾個(gè)單元中,固化一條無條件轉(zhuǎn)移指令的代碼,即轉(zhuǎn)移到系統(tǒng)初始化程序部分所在存儲器的地址位置處。,5. 存儲器分段組織帶來存儲器管理的新特點(diǎn),偏移地址是某存儲單元相對其所

48、在段起始位置的偏移字節(jié)數(shù),或簡稱偏移量。它是一個(gè)16位的地址,根據(jù)指令的不同,它可以來自于CPU中不同的16位寄存器(IP、SP、BP、SI、DI、BX等)。,在程序代碼量、數(shù)據(jù)量不是太大的情況下,可使它們處于同一段內(nèi),即使它們在64KB的范圍內(nèi),這樣可以減少指令的長度,提高指令運(yùn)行的速度。 內(nèi)存分段為程序的浮動分配創(chuàng)造了條件。 物理地址與邏輯地址并不是一一對應(yīng)的,舉例:6832H:1280H,物理地址為695A0H。 各個(gè)分段之間可以重疊 。,4. 偏移地址,8088/8086系統(tǒng)中,有些內(nèi)存區(qū)域的作用是固定的,用戶不能隨便使用,如:,(3)啟動區(qū):FFFF0HFFFFFH共16個(gè)單元,用以

49、存放一條無條件轉(zhuǎn)移指令的代碼,轉(zhuǎn)移到系統(tǒng)的初始化部分。,(2)顯示緩沖區(qū):B0000HB0F9FH約4000(25802)字節(jié),是單色顯示器的顯示緩沖區(qū),在存放文本方式下,用于顯示字符的ASCII碼及屬性碼;B8000HBBF3FH約16K字節(jié),是彩色顯示器的顯示緩沖區(qū),在存放圖形方式下,用于屏幕顯示像素的代碼。,(1)中斷矢量區(qū):00000H003FFH共1K字節(jié),用以存放256種中斷類型的中斷矢量,每個(gè)中斷矢量占用4個(gè)字節(jié),共2564=1024=1K,6. 特殊的內(nèi)存區(qū)域,2020/10/5,合肥學(xué)院電子系,51,二、8086存儲器的分體結(jié)構(gòu),在組成與8086CPU連接的存儲器時(shí),1M字節(jié)

50、的存儲空間實(shí)際上被分成兩512K字節(jié)的存儲體,分別叫高位庫和低位庫。低位庫固定與8086CPU的低位字節(jié)數(shù)據(jù)線D7D0相連,因此又可稱它為低字節(jié)存儲體,該存儲體中的每個(gè)地址均為偶地址。高位庫與8086CPU的高位字節(jié)數(shù)據(jù)線D15D8相連,因此又稱它為高字節(jié)存儲體,該存儲體中的每個(gè)地址均為奇地址,如下頁圖所示。,存儲器是按字節(jié)進(jìn)行組織的,兩個(gè)相鄰的字節(jié)被稱為一個(gè)“字” 。存放的信息若是以字節(jié)(8位)為單位的,將在存儲器中按順序排列存放;若存放的數(shù)據(jù)為一個(gè)字(16位)時(shí),則將每一個(gè)字的低字節(jié)(低8位)存放在低地址中,高字節(jié)(高8位)存放在高地址中,并以低地址作為該字的地址。,2020/10/5,合

51、肥學(xué)院電子系,54,如果一個(gè)16位數(shù)據(jù),高8位數(shù)據(jù)存儲在存儲器的奇地址單元中,低8位數(shù)據(jù)存儲在存儲器的偶地址單元中,則讀寫該數(shù)據(jù)需要一個(gè)總線周期。,如果一個(gè)16位數(shù)據(jù),高8位數(shù)據(jù)存儲在存儲器的偶地址單元中,低8位數(shù)據(jù)存儲在存儲器的奇地址單元中,則讀寫該數(shù)據(jù)需要兩個(gè)總線周期。第一個(gè)總線周期用于在奇地址中完成低8位數(shù)據(jù)的傳送,然后IP自動加1;第二個(gè)總線周期用于在偶地址中完成高8位數(shù)據(jù)的傳送;這些是8086自動完成的。所以,這種情況下,除增加一個(gè)總線周期外,其余與從偶地址開始的16位數(shù)據(jù)的操作是一樣的。,2020/10/5,合肥學(xué)院電子系,55,三、堆棧的概念,堆棧:在存儲器中開辟一段區(qū)域,用于存

52、儲一些暫時(shí)需要保護(hù)而以后還要用到數(shù)據(jù)(如中斷現(xiàn)場的保護(hù)與恢復(fù)、子程序現(xiàn)場的保護(hù)與恢復(fù)等),這個(gè)區(qū)域稱為堆棧。,功能:主要用于保護(hù)中間數(shù)據(jù)、子程序的現(xiàn)場、中斷程序的現(xiàn)場等。,堆棧的特點(diǎn):,堆棧存儲數(shù)據(jù)的原則為后進(jìn)先出。 堆棧在存儲器中的位置由SS:SP確定。 SP指令可由MOV指令設(shè)置。 堆棧指針SP在8086系統(tǒng)中始終指向棧的頂部,即:始終指向最后壓入棧中的數(shù)據(jù)的地址。 8086系統(tǒng)中棧的操作是以字為單位的。執(zhí)行一次入棧操作, SP-2,直至SP=0( SS )棧滿為止。執(zhí)行一次出棧操作, SP+2。見教材P39 圖2-13,1統(tǒng)一編址 又稱“存儲器映射方式”。在這種編址方式下 ,I/O端口地

53、址置于1MB的存儲器空間中,在整個(gè)存儲空間中劃出一部分空間給外設(shè)端口 ,端口和存儲單元統(tǒng)一編址。如:6502、6800.,優(yōu)點(diǎn):端口所需的地址線較少,地址譯碼器較簡單,采用專用的I/O指令,端口操作指令執(zhí)行時(shí)間少,指令長度短 。 缺點(diǎn):輸入輸出指令類別少,一般只能進(jìn)行傳送操作。,2獨(dú)立編址 又稱“I/O映射方式”。這種方式的端口單獨(dú)編址構(gòu)成一個(gè)I/O空間,不占用存儲器地址空間。如:8086,優(yōu)點(diǎn):無需專門的I/O指令,對端口操作的指令類型多,從而簡化了指令系統(tǒng)的設(shè)計(jì)。 缺點(diǎn):端口占用存儲器的地址空間,使存儲器容量更加緊張,同時(shí)端口指令的長度增加,執(zhí)行時(shí)間較長,端口地址譯碼器較復(fù)雜。,四、808

54、6的I/O編址,8086系統(tǒng)采用獨(dú)立編址方式。有專用的I/O指令(IN、OUT)。8086允許有64K(65536個(gè))8位的I/O端口,兩個(gè)編號相鄰的8位端口可以組成一個(gè)16位端口。指令系統(tǒng)中既有訪問8位端口的I/O指令,又有訪問16位端口的I/O指令。,8086CPU執(zhí)行訪問I/O端口指令時(shí),硬件上產(chǎn)生M/IO=0、RD( 或WR )=0有效。端口地址不占用存儲空間,端口地址獨(dú)立編址構(gòu)成I/O空間。其特點(diǎn)是:I/O指令類型少,只能進(jìn)行傳送操作; M/IO 、 RD( 或WR )兩組信號,信號線根數(shù)多。,8086系統(tǒng)和外設(shè)之間都是通過I/O接口芯片聯(lián)系的,每個(gè)I/O接口芯片都有一個(gè)或幾個(gè)端口,

55、一個(gè)端口往往對應(yīng)芯片內(nèi)部的一個(gè)或一組寄存器,微機(jī)系統(tǒng)要為每個(gè)端口分配一個(gè)地址,此地址也稱為端口號。各個(gè)端口號不能重復(fù)。,3. 8086的I/O編址,2020/10/5,合肥學(xué)院電子系,58,2-4 8086系統(tǒng)配置,為了適應(yīng)各種使用場合,在設(shè)計(jì)8088/8086CPU芯片時(shí),就考慮了其應(yīng)能夠使它工作在兩種模式下,即最小模式與最大模式。,最小模式(最小工作方式 ),最大模式(最大工作方式 ),(2)輸入/輸出協(xié)處理器8089,在原理上有點(diǎn)象帶有兩個(gè)DMA通道的處理器,它有一套專門用于輸入/輸出操作的指令系統(tǒng),但是8089又和DMA控制器不同,它可以直接為輸入/輸出設(shè)備服務(wù),使主處理器不再承擔(dān)這類

56、工作。所以,在系統(tǒng)中增加8089協(xié)處理器之后,會明顯提高主處理器的效率,尤其是在輸入/輸出操作比較頻繁的系統(tǒng)中。,與8088/8086CPU配合工作的協(xié)處理器有兩類:,(1)數(shù)值協(xié)處理器8087,它能實(shí)現(xiàn)多種類型的數(shù)值運(yùn)算,如高精度的整型和浮點(diǎn)型數(shù)值運(yùn)算,超越函數(shù)(三角函數(shù)、對數(shù)函數(shù))的計(jì)算等,這些運(yùn)算若用軟件的方法來實(shí)現(xiàn),將耗費(fèi)大量的機(jī)器時(shí)間。換句話說,引入了8087協(xié)處理器,就是把軟件功能硬件化,可以大大提高主處理器的運(yùn)行速度。,一、 8086/8088最小系統(tǒng)中的外圍芯片簡介 1. 鎖存器Intel 8282(或74LA373) P44 圖2-16 8282是典型的8位鎖存器,8位輸入(

57、DI0-DI7), 8位輸出(DO0-DO7),選通輸入信號(鎖存輸入信號)STB,輸出數(shù)據(jù)允許信號OE(低電平有效)。74LS373作為鎖存器,其用法與8282完全一樣。 8282與8086連接時(shí),作為8086外部地址鎖存器,8086有20條地址線,加上高8位數(shù)據(jù)允許引腳BHE,共21條線,需要3片8282。8282的輸入與8086的地址線A19-A16、AD15-AD0和BHE相連,輸出即為8086系統(tǒng)的地址線和BHE;8282的STB接8086的ALE,8282的OE接地,直接數(shù)據(jù)輸出允許。 P43 圖2-15,2. 總線收發(fā)器Intel 8286/8287 P44 圖2-17 8286

58、是Intel系列典型的8位總線收發(fā)器,8位輸入(A0-A7), 8位輸出(B0-B7)。 T為控制數(shù)據(jù)傳送方向信號,T=1時(shí), A0-A7為輸入, B0-B7為輸出; T=0時(shí), B0-B7為輸入, A0-A7 為輸出。輸出數(shù)據(jù)允許信號OE(低電平有效)。 8286與8086連接時(shí),作為8086外部總線收發(fā)器,8086有16條數(shù)據(jù)線,需要2片8286。8286的輸入與8086的地址線AD15-AD0相連,輸出即為8086系統(tǒng)的數(shù)據(jù)總線;8286的T接8086(或8288)的DT/R,8286的OE接8086 (或8288)的DEN。P41 圖2-14,2020/10/5,合肥學(xué)院電子系,62,3. 時(shí)鐘發(fā)生器8284,Fosc=14.318MHz Fclk=4.77MHz Fpclk=2.385MHz,3. 時(shí)鐘發(fā)生器8284 (1)輸入:晶振與復(fù)位 晶振接8284的X1、X2引腳(F/C接低電平,選擇外界晶振產(chǎn)生時(shí)鐘),外部復(fù)位接RES引腳。 (2)輸出:CLK(時(shí)鐘)、RESET(復(fù)位)、READY(準(zhǔn)備好) 8284輸出的時(shí)鐘頻率CLK為外界晶振頻率的1/3。 CLK、 RESET、 READY分別為8086系統(tǒng)提供時(shí)鐘、復(fù)位、準(zhǔn)備好信號。 (3)外部復(fù)位的接法(上電復(fù)位,按鍵復(fù)位),如下圖所示。,

溫馨提示

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

評論

0/150

提交評論