第3章8086計(jì)算機(jī)系統(tǒng)64hua_第1頁
第3章8086計(jì)算機(jī)系統(tǒng)64hua_第2頁
第3章8086計(jì)算機(jī)系統(tǒng)64hua_第3頁
第3章8086計(jì)算機(jī)系統(tǒng)64hua_第4頁
第3章8086計(jì)算機(jī)系統(tǒng)64hua_第5頁
已閱讀5頁,還剩123頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第3章8086微型計(jì)算機(jī)系統(tǒng)3.18086微處理器的結(jié)構(gòu)

3.1.18086的編程結(jié)構(gòu)

3.1.28086的存儲器組織3.28086微處理器的引腳特性及工作模式

3.2.18086的引腳特性

3.2.2

8086的工作模式3.38086的系統(tǒng)的總線時(shí)序3.18086微處理器的結(jié)構(gòu)1978年,Intel公司推出首枚16位微處理器8086,同時(shí)生產(chǎn)出與之配套的數(shù)學(xué)協(xié)處理器8087,這兩種芯片使用相同的指令集,以后Intel公司生產(chǎn)的處理器,均與其兼容。為了方便與當(dāng)時(shí)的8位外部設(shè)備連接,Intel公司在同一年推出準(zhǔn)16位微處理器8088。

8086有16根數(shù)據(jù)線和20根地址線。由于可用20位地址,所以可尋址的地址空間達(dá)220即1M字節(jié)單元。

8088的內(nèi)部寄存器、內(nèi)部運(yùn)算部件以及內(nèi)部操作都是按16位設(shè)計(jì)的,但對外的數(shù)據(jù)總線只有8根。3.1.18086的編程結(jié)構(gòu)

編程結(jié)構(gòu),就是指從程序員和使用者的角度看到的邏輯結(jié)構(gòu)。這種結(jié)構(gòu)與CPU內(nèi)部的物理結(jié)構(gòu)和實(shí)際布局是有區(qū)別的。從功能上,8086CPU由執(zhí)行部件EU和總線接口部件BIU兩部分組成。

8088的指令執(zhí)行示例1.總線接口部件(BIU)總線接口部件負(fù)責(zé)CPU與存儲器、輸入/輸出設(shè)備之間的數(shù)據(jù)傳送,包括取指令、存儲器讀寫和I/O讀寫等操作??偩€接口部件要從內(nèi)存取指令送到指令隊(duì)列;CPU執(zhí)行指令時(shí),總線接口部件要配合執(zhí)行部件從指定的內(nèi)存單元或外設(shè)端口中取數(shù)據(jù),將數(shù)據(jù)傳送給執(zhí)行部件,或者把執(zhí)行部件的操作結(jié)果傳送到指定的內(nèi)存單元或外設(shè)端口中。總線接口部件由段寄存器(CS、DS、SS、ES)、指令指針寄存器(IP)、地址加法器、內(nèi)部暫存器、指令隊(duì)列緩沖器及I/O控制邏輯等部分組成。⑴段寄存器

8086CPU采用段地址、段內(nèi)偏移地址兩級存儲器尋址方式,段地址和段內(nèi)偏移地址均為16位。8086內(nèi)部設(shè)置了4個(gè)段寄存器,用于存放段的高16位地址,稱為段的邏輯地址,4個(gè)段寄存器分別是:

CS:16位代碼段寄存器(CodeSegmentRegister)

DS:16位數(shù)據(jù)段寄存器(DataSegmentRegister)

SS:16位堆棧段寄存器(StackSegmentRegister)

ES:16位附加段寄存器(ExtraSegmentRegister)

⑵20位地址加法器

8086可用20位地址尋址1M字節(jié)的內(nèi)存空間,但8086內(nèi)部所有的寄存器都為16位。8086CPU采用段地址、段內(nèi)偏移地址兩級存儲器尋址方式,由一個(gè)20位地址加法器根據(jù)16位段地址和16位段內(nèi)偏移地址計(jì)算出20位的物理地址PA(PhysicalAddress)。其計(jì)算方法是:將CPU中的16位段寄存器內(nèi)容左移4位(×16)與16位的邏輯地址(又稱偏移地址)在地址加法器內(nèi)相加,得到所尋址單元的20位物理地址。根據(jù)尋址方式的不同,偏移地址可以來自指令指針寄存器(IP)或其它寄存器。假設(shè)CS=8311H,IP=1234H,則該指令單元的20位物理地址為:PA=8311H×10H+1234H=83110H+1234H=84344H。⑶16位指令指針寄存器IP(InstructionPointer)

IP總是保存著EU要執(zhí)行的下一條指令的偏移地址。程序不能直接對指令指針寄存器進(jìn)行存取,但能在程序運(yùn)行中自動修正,使之指向要執(zhí)行的下條指令,有些指令(如轉(zhuǎn)移、調(diào)用、中斷、返回)能使IP的值改變,或使IP的值存進(jìn)堆棧,或由堆?;謴?fù)原有的值。⑷指令隊(duì)列緩沖器

8086有6字節(jié)指令隊(duì)列緩沖器,在執(zhí)行指令的同時(shí),可以從內(nèi)存中取出下一條或下幾條指令放到緩沖器中,一條指令執(zhí)行完后,可立即執(zhí)行下一條指令,從而解決了以往CPU取指令期間,運(yùn)算器的等待問題。⑸輸入/輸出控制電路(總線控制邏輯)輸入/輸出控制電路控制CPU與外部電路的數(shù)據(jù)交換。8086有20條地址線,16條數(shù)據(jù)線,由輸入/輸出控制電路控制分時(shí)復(fù)用CPU芯片的16條引腳。⑹內(nèi)部暫存器用于內(nèi)部數(shù)據(jù)的暫存,該部分對用戶透明,在編程時(shí)可不予理會,用戶無權(quán)訪問。8086的總線接口部件和執(zhí)行部件并不是同步工作的,它們是按以下流水線技術(shù)原則管理:

(1)每當(dāng)8086的指令隊(duì)列中有兩個(gè)空字節(jié)時(shí),總線接口部件就會自動把指令取到指令隊(duì)列中。

(2)每當(dāng)執(zhí)行部件準(zhǔn)備執(zhí)行一條指令時(shí),它會從總線接口部件的指令隊(duì)列前部取出指令的代碼,然后再用幾個(gè)時(shí)鐘周期去執(zhí)行指令。在指令執(zhí)行過程中,如須訪問存儲器或輸入/輸出設(shè)備,執(zhí)行部件會請求總線接口部件,進(jìn)入總線周期,完成內(nèi)存或輸入/輸出端口的讀寫操作;如果總線接口部件此時(shí)處于空閑狀態(tài),它會立即響應(yīng)執(zhí)行部件的總線請求。如果此時(shí)總線接口部件正在將某個(gè)指令字節(jié)取到指令隊(duì)列中,它將首先完成這個(gè)取指令的總線周期,然后再去響應(yīng)執(zhí)行部件發(fā)出的訪問總線請求。(3)當(dāng)指令隊(duì)列已滿,而且執(zhí)行部件又沒有總線訪問時(shí),總線接口部件便進(jìn)入空閑狀態(tài)。

(4)在執(zhí)行轉(zhuǎn)移指令、調(diào)用指令和返回指令時(shí),下面將要執(zhí)行的指令就不是在程序中緊接著的那條指令了,而總線接口部件向指令隊(duì)列裝入指令時(shí),總是按順序進(jìn)行的,這樣,指令隊(duì)列中已經(jīng)裝入的字節(jié)就沒有用了。遇到這種情況,指令隊(duì)列中的原有內(nèi)容被自動消除,總線接口部件會接著向指令隊(duì)列中裝入另一個(gè)程序段中的指令。2.執(zhí)行部件(EU)執(zhí)行部件的功能就是負(fù)責(zé)指令的執(zhí)行。從編程結(jié)構(gòu)圖可見到,8086CPU內(nèi)部共有14個(gè)寄存器,其中執(zhí)行部件含有9個(gè)寄存器,總線接口部件含有5個(gè)寄存器。這些寄存器在指令中的隱含使用見表3.1。表3.1寄存器在指令中的隱含使用表(EU)寄存器名稱含義所屬部件AX累加器,還用于乘、除法和輸入/輸出的數(shù)據(jù)寄存器EUBX基數(shù)寄存器,在間接尋址時(shí)作為地址寄存器和基址寄存器CX計(jì)數(shù)寄存器,在循環(huán)和字符串操作中作為循環(huán)計(jì)數(shù)器DX數(shù)據(jù)寄存器,還用于乘、除法,在輸入輸出指令中作間址寄存器BP基數(shù)指針,在間接尋址時(shí)作為基址寄存器(注意:默認(rèn)SS段)SP堆棧指針,用于指示棧頂元素的地址SI源變址寄存器,在間接尋址時(shí)作為地址或變址寄存器。在字符串操作中作為源變址寄存器。DI目的變址寄存器,在間接尋址時(shí)作為地址或變址寄存器。在字符串操作中作為目的變址寄存器。F標(biāo)志寄存器,又稱程序狀態(tài)寄存器(PSW),用來保存和反映運(yùn)算操作結(jié)果的特征,以及CPU內(nèi)部的某種控制狀態(tài)。表3.1寄存器在指令中的隱含使用表(BIU)寄存器名稱含義所屬部件CS代碼段寄存器,用于存放程序代碼段的段地址BIUDS數(shù)據(jù)段寄存器,用于存放數(shù)據(jù)段的段地址ES附加段寄存器,用于存放附加段的段地址SS堆棧段寄存器,用于存堆棧段的段地址IP指令指針寄存器,用于存放下一條要執(zhí)行的指令的邏輯地址⑴4個(gè)通用寄存器AX、BX、CX、DXEU中有4個(gè)16位的寄存器AX、BX、CX和DX,一般用來存放16位數(shù)據(jù),故稱為數(shù)據(jù)寄存器。每個(gè)數(shù)據(jù)寄存器又可分為兩個(gè)8位的寄存器,即AH、AL、BH、BL、CH、CL、DH、DL,用以存放8位數(shù)據(jù),它們均可獨(dú)立使用。數(shù)據(jù)寄存器主要用來存放操作數(shù)或中間結(jié)果,以減少訪問存儲器的次數(shù)。多數(shù)情況下,這些數(shù)據(jù)寄存器用于算術(shù)運(yùn)算或邏輯運(yùn)算指令,進(jìn)行算術(shù)邏輯運(yùn)算。在有些指令中,它們則有特定的用途:AX作累加器用;BX作基址(Base)寄存器,如在查表指令XLAT中存放表的起始地址;CX作計(jì)數(shù)(Count)寄存器,如在數(shù)據(jù)串操作指令的REP中用CX存放數(shù)據(jù)單元的個(gè)數(shù)作為循環(huán)操作的次數(shù);DX作數(shù)據(jù)(Data)寄存器,如在字的除法運(yùn)算指令DIV中,存放余數(shù)。⑵4個(gè)專用寄存器SP、BP、SI、DI

指針寄存器SP和BP用來存取位于當(dāng)前堆棧段中的數(shù)據(jù),但SP和BP在使用上有區(qū)別。入棧(PUSH)和出棧(POP)指令是由SP給出棧頂?shù)钠频刂罚史Q為堆棧指針寄存器。BP則用來存放位于堆棧段中某個(gè)數(shù)據(jù)區(qū)基址的偏移地址,故稱作基址指針寄存器。變址寄存器SI和DI用來存放當(dāng)前數(shù)據(jù)段的偏移地址。在字符串操作中,源操作數(shù)地址的偏置放于SI中,所以SI稱為源變址寄存器;目的操作數(shù)地址的偏置放于DI中,所以DI稱為目的變址寄存器。⑶狀態(tài)標(biāo)志寄存器F8086CPU的狀態(tài)標(biāo)志寄存器是一個(gè)十六位的寄存器,其中9個(gè)位用作標(biāo)志位:6個(gè)狀態(tài)標(biāo)志位,3個(gè)控制標(biāo)志位。狀態(tài)標(biāo)志寄存器如圖所示。狀態(tài)標(biāo)志中用6位來反映EU執(zhí)行算術(shù)或邏輯運(yùn)算以后的結(jié)果特征。這6位都是邏輯值,判斷結(jié)果為邏輯真(true)時(shí),其值為1;判斷結(jié)果為邏輯假(false)時(shí),其值為0。

狀態(tài)標(biāo)志:控制標(biāo)志:OF溢出標(biāo)志DF方向標(biāo)志SF符號標(biāo)志IF中斷標(biāo)志ZF零標(biāo)志TF跟蹤標(biāo)志CF進(jìn)位標(biāo)志AF輔助進(jìn)位標(biāo)志PF奇偶標(biāo)志OF111512DF10IF9TF8SF7ZF65AF43PF21CF0進(jìn)位標(biāo)志:指令執(zhí)行后,如果運(yùn)算結(jié)果在最高位上產(chǎn)生了一個(gè)進(jìn)位或借位,則CF=1;否則,CF=0。CF5、標(biāo)志寄存器FR—條件標(biāo)志OF111512DF10IF9TF8SF7ZF65AF43PF21CF05、標(biāo)志寄存器FR—條件標(biāo)志奇偶標(biāo)志:如果運(yùn)算結(jié)果低八位1的個(gè)數(shù)為偶數(shù),則PF=1;否則,PF=0。PFOF111512DF10IF9TF8SF7ZF65AF43PF21CF05、標(biāo)志寄存器FR—條件標(biāo)志輔助進(jìn)位標(biāo)志:如果運(yùn)算結(jié)果低4位產(chǎn)生了進(jìn)位,則AF=1;否則,AF=0。AFOF111512DF10IF9TF8SF7ZF65AF43PF21CF05、標(biāo)志寄存器FR—條件標(biāo)志零標(biāo)志:如果運(yùn)算結(jié)果為0,則ZF=1;否則,ZF=0。ZFOF111512DF10IF9TF8SF7ZF65AF43PF21CF05、標(biāo)志寄存器FR—條件標(biāo)志符號標(biāo)志:如果運(yùn)算結(jié)果為正數(shù),則SF=0;否則,SF=1。SFOF111512DF10IF9TF8SF7ZF65AF43PF21CF05、標(biāo)志寄存器FR—條件標(biāo)志溢出標(biāo)志:如果運(yùn)算過程產(chǎn)生了溢出,則OF=1;否則,OF=0。OFOF111512DF10IF9TF8SF7ZF65AF43PF21CF05、標(biāo)志寄存器FR—控制標(biāo)志單步標(biāo)志:TF=1,處理器按單步執(zhí)行指令;TF=0,處理器正常工作。TFOF111512DF10IF9TF8SF7ZF65AF43PF21CF05、標(biāo)志寄存器FR—控制標(biāo)志中斷允許標(biāo)志:IF=1,允許可屏蔽中斷;IF=0,不允許可屏蔽中斷。IFOF111512DF10IF9TF8SF7ZF65AF43PF21CF05、標(biāo)志寄存器FR—控制標(biāo)志方向標(biāo)志(用于串操作指令):DF=1,存儲器地址會自動減值;DF=0,存儲器地址會自動增值。DFCF(CarryFlag):進(jìn)位標(biāo)志位F(CarryFlag):進(jìn)位標(biāo)志位

CF=l,表示本次運(yùn)算中最高位MSB有進(jìn)位(加法運(yùn)算時(shí))或有借位(減法運(yùn)算時(shí))。CF標(biāo)志可通過STC指令置位,通過CLC指令復(fù)位(清除進(jìn)位標(biāo)志),還可通過CMC指令將當(dāng)前CF標(biāo)志取反。PF(Parity)奇偶標(biāo)志:運(yùn)算結(jié)果的低8位中所含1的個(gè)數(shù)為偶數(shù)時(shí)PF=1舉例:2345H+3219H=555EH(0101010101011110)AF(AuxiliaryCarryFlag):輔助進(jìn)位標(biāo)志位

AF=l,表示運(yùn)算結(jié)果的8位數(shù)據(jù)中,低4位向高4位有進(jìn)位(加法運(yùn)算時(shí))或有借位(減法運(yùn)算時(shí)),這個(gè)標(biāo)志位只在十進(jìn)制運(yùn)算中有用。ZF(ZeroFlag):零標(biāo)志位

ZF=1,表示本次運(yùn)算結(jié)果為零,否則即運(yùn)算結(jié)果非零時(shí),ZF=0。SF(SignFlag):符號標(biāo)志

SF=1,表示本次運(yùn)算結(jié)果的最高位(第7位或第15位)為“l(fā)”,否則SF=0。標(biāo)志

OF(OverflowFlag)溢出標(biāo)志:當(dāng)運(yùn)算過程中產(chǎn)生溢出時(shí),會使OF為1。所謂溢出,就是當(dāng)字節(jié)運(yùn)算的結(jié)果超出了范圍-128~+127,或者當(dāng)字運(yùn)算的結(jié)果超出了范圍-32768~+32767時(shí)稱為溢出。計(jì)算機(jī)在進(jìn)行加法運(yùn)算時(shí),每當(dāng)判斷出低位向最高有效位產(chǎn)生進(jìn)位,而最高有效位往前沒有進(jìn)位時(shí),便得知產(chǎn)生了溢出,即OF置1;或者反過來,每當(dāng)判斷出低位向最高位無進(jìn)位,而最高位往前卻有進(jìn)位時(shí),便得知產(chǎn)生了溢出,即OF置1。在減法運(yùn)算時(shí),每當(dāng)判斷出最高位需要借位,而低位并不向最高位產(chǎn)生借位時(shí),OF置1;或者反過來,每當(dāng)判斷出低位從最高位有借位,而最高位并不需要從更高位借位時(shí),OF置1。例如,執(zhí)行兩個(gè)數(shù)的加法:

0010001101000101+00110010000110010101010101011110

由于運(yùn)算結(jié)果的最高位為0,所以,SF=0;而運(yùn)算結(jié)果本身不為0,所以,ZF=0;低8位所含的1的個(gè)數(shù)為5個(gè),即有奇數(shù)個(gè)1,所以,PF=0;由于最高位沒有產(chǎn)生進(jìn)位,所以,CF=0;又由于第3位沒有往第4位產(chǎn)生進(jìn)位,所以,AF=0;由于低位沒有往最高位產(chǎn)生進(jìn)位,最高位往前也沒有進(jìn)位,所以,OF=0。又比如,執(zhí)行下面兩個(gè)數(shù)的加法:

0101010000111001+01000101011010101001100110100011

顯然,由于運(yùn)算結(jié)果的最高位為1,所以,SF=1;由于運(yùn)算結(jié)果本身不為0,所以ZF=0;由于低8位所含的1的個(gè)數(shù)為4個(gè),即含有偶數(shù)個(gè)1,所以,PF=1;由于最高位沒有往前產(chǎn)生進(jìn)位,所以,CF=0;運(yùn)算過程中,第3位往第4位產(chǎn)生了進(jìn)位,所以,AF=1;由于低位往最高位產(chǎn)生了進(jìn)位,而最高位沒有往前產(chǎn)生進(jìn)位,所以O(shè)F=1??刂茦?biāo)志DF(方向):控制串操作指令用的控制標(biāo)志,DF=0,增值;DF=1,減值可通過STD指令置位,也可通過CLD指令復(fù)位。IF(中斷允許):控制可屏蔽中斷的標(biāo)志。IF=1,CPU可響應(yīng)可屏蔽中斷;通過STI指令置位,CLI指令復(fù)位TF(跟蹤,又稱為單步):TF=1,則CPU按跟蹤方式執(zhí)行指令??刂茦?biāo)志位有3個(gè),即DF、IF、TF。

DF(DirectionFlag)方向標(biāo)志:控制串操作指令用的標(biāo)志。如果DF為0,則串操作過程中地址會不斷增值;反之,如果DF為1,則串操作過程中地址會不斷減值。

IF(InterruptEnableFlag)中斷允許標(biāo)志:控制可屏蔽中斷的標(biāo)志。如果IF為0,則關(guān)閉可屏蔽中斷,此時(shí)CPU不響應(yīng)可屏蔽中斷請求;如果IF為1,則打開可屏蔽中斷,此時(shí)CPU可以響應(yīng)可屏蔽中斷請求。

TF(TrapFlag)跟蹤標(biāo)志:如果TF為1,則CPU按跟蹤方式執(zhí)行指令。這些控制標(biāo)志一旦設(shè)置之后,將控制后面的操作。

狀態(tài)標(biāo)志的狀態(tài)表示在PC中,可由調(diào)試程序(DEBUG)顯示出來表2.2狀態(tài)標(biāo)志表標(biāo)志位名為1對應(yīng)符為0對應(yīng)符OFDFIFSFZFAFPFCFOVDNEINGZRACPECYNVUPDIPLNZNAPONC3.1.28086的存儲器組織8086有20根地址線,因此,具有1M(220)字節(jié)的存儲器地址空間。其內(nèi)存單元按照00000H~FFFFFH來編址。

1.存儲器的分段

8086存儲器操作采用了典型的存儲器分段技術(shù),對存儲器的尋址操作不是直接用20位的物理地址,而是采用段地址加段內(nèi)偏移地址的二級尋址方式,即先用16位的段地址經(jīng)過簡單運(yùn)算(左移4位)得到單元所在段的物理地址,再加上該單元的16位邏輯地址(相對于段首的偏移地址)即可得到該單元的物理地址。什么是段基址和偏移地址?段基址(又稱段地址):段首地址的高16位偏移地址:相對于段首地址的偏移量。最大尋址范圍216=64KB(0000H~FFFFH)存儲器的邏輯分段

在8086存儲空間中,把16個(gè)字節(jié)的存儲空間稱作一節(jié)(Paragraph)。為了簡化操作,要求各個(gè)邏輯段從節(jié)的整數(shù)邊界開始,也就是說段首地址低4位應(yīng)該是“0”,因此就把段首地址的高16位稱為“段基址”,存放在段寄存器CS或DS或ES或SS中,段內(nèi)的偏移地址存放在IP或SP中。若已知當(dāng)前有效的代碼段、數(shù)據(jù)段、附加段和堆棧段的段基址分別為1055H、250AH、8FFBH和EFF0H:2.存儲器中的邏輯地址和物理地址采用分段結(jié)構(gòu)的存儲器中,存儲單元的邏輯地址由段基址和偏移地址(也稱有效地址EA)兩個(gè)部分構(gòu)成,它們都是無符號的16位二進(jìn)制數(shù)。任何一個(gè)存儲單元對應(yīng)一個(gè)20位的物理地址(PA),也稱為絕對地址,它是由邏輯地址變換得來的。可以把每一個(gè)存儲單元看成是具有兩種類型的地址:物理地址和邏輯地址。物理地址就是實(shí)際地址,它具有20位的地址值,它是唯一標(biāo)識1MB存儲空間的某一個(gè)字節(jié)的地址。邏輯地址由段基址和偏移地址組成。程序以邏輯地址編址,而不是用物理地址。什么是物理地址和邏輯地址?表示一個(gè)存儲單元的地址有兩種形式:(1)物理地址(PA)

:就是實(shí)際地址,具有20位地址值,它是唯一標(biāo)識1M字節(jié)存儲空間的某一個(gè)字節(jié)的地址。尋址范圍220=1MB(00000H~FFFFFH)(2)邏輯地址(EA)

:由段基址和偏移地址組成(均為16位)。舉例:代碼段邏輯地址可表成CS:IP又如邏輯地址為2000H:2000H對應(yīng)的物理地址22000H物理地址與邏輯地址關(guān)系就是公式:物理地址=段基址×10H+偏移地址

當(dāng)CPU需要訪問存儲器時(shí),必須完成如下的物理地址計(jì)算:

物理地址=段基址×10H+偏移地址同一個(gè)物理地址可以由不同的段地址和偏移量組合來得到。比如:CS=0000,IP=306AH,物理地址為0306AH;而CS=0300H,IP=006AH,物理地址也是0306AH。當(dāng)然,還可以有許多別的組合。物理地址的形成如圖2.5所示,它是通過CPU的總線接口部件BIU的地址加法器來實(shí)現(xiàn)的?!纠看a寄存器CS=2000H,指令指針寄存器存放偏移地址IP=2200H,存儲器的物理地址為20000H+2200H=22200H。

再以剛復(fù)位后的取指令動作為例來說明物理地址的形成。復(fù)位時(shí),除了CS=FFFFH外,8086的其它內(nèi)部寄存器的值均為0,指令的物理地址應(yīng)為CS的值乘16,再加IP的值,所以,復(fù)位后執(zhí)行的第一條指令的物理地址為:FFFF0H。因此,在存儲器編址時(shí),將高地址區(qū)分配給ROM(只讀存儲器),而在FFFF0H開始的單元中固化了一條無條件轉(zhuǎn)移指令,轉(zhuǎn)到系統(tǒng)初始化程序。4個(gè)段寄存器分別指向4個(gè)現(xiàn)行可尋址的分段的起始字節(jié)單元。程序指令存放在代碼段中,代碼段地址來源于代碼段寄存器CS,偏移地址來源于指令指針I(yè)P。當(dāng)涉及堆棧操作時(shí),堆棧段地址寄存器為SS,偏移地址來源于棧指針寄存器SP。當(dāng)涉及數(shù)據(jù)存取操作時(shí),則由數(shù)據(jù)段寄存器DS或附加段寄存器ES作為段地址寄存器,而偏移地址是由16位的偏移量得到。16位偏移量的確定與指令的尋址方式有關(guān)。

在IBMPC/XT的8086系統(tǒng)中,存儲器有幾個(gè)部分的用處是固定的:⑴00000~003FFH共1KB區(qū)域用來存放中斷向量,這一區(qū)域稱為中斷向量表。中斷向量實(shí)際上就是中斷處理子程序的入口地址,每個(gè)中斷向量占4個(gè)字節(jié),低地址的2個(gè)字節(jié)為中斷處理子程序入口地址的偏移量,高地址的2個(gè)字節(jié)為中斷處理子程序的段地址。當(dāng)然,對一個(gè)具體系統(tǒng)來說,一般并不需要多達(dá)256個(gè)中斷處理程序,因此,實(shí)際系統(tǒng)中的中斷向量表的大部分區(qū)域是空白的。⑵B0000H~B0F9FH約4KB是單色顯示器的顯示緩沖區(qū),存放單色顯示器當(dāng)前屏幕字符所對應(yīng)的ASCII碼和屬性。⑶B8000H~BBF3FH約16KB是彩色顯示器的顯示緩沖區(qū),存放彩色顯示器當(dāng)前屏幕像素點(diǎn)所對應(yīng)的代碼。⑷從FFFF0H開始到存儲器底部FFFFFH共16個(gè)單元,一般只用來存放一條無條件轉(zhuǎn)移指令,轉(zhuǎn)到系統(tǒng)的初始化程序。這樣在系統(tǒng)加電或者復(fù)位時(shí),就會自動轉(zhuǎn)到FFFF0H執(zhí)行。3.2.18086引腳特性3.28086的引腳特性及工作模式數(shù)據(jù)總線為16位地址總線為20位40條引腳

部分引腳分時(shí)復(fù)用

1、兩種工作模式的公共引腳AD0~AD15低16位地址/數(shù)據(jù)的復(fù)用引腳線三態(tài)、雙向采用分時(shí)復(fù)用法來實(shí)現(xiàn)對地址線和數(shù)據(jù)線的復(fù)用1、兩種工作模式的公共引腳

A19/S6~A16/S3高4位地址/狀態(tài)的復(fù)用引腳線三態(tài)、輸出采用分時(shí)復(fù)用方法來實(shí)現(xiàn)對地址線和狀態(tài)線的復(fù)用狀態(tài)信息S6總是為低電平。S5反映當(dāng)前允許中斷標(biāo)志的狀態(tài)。S4與S3一起指示當(dāng)前哪一個(gè)段寄存器被使用。其規(guī)定如表所示。S4S3當(dāng)前正在使用的段寄存器名00ES01SS10CS或未用11DS1、兩種工作模式的公共引腳BHE/S7高8位數(shù)據(jù)總線允許/狀態(tài)的復(fù)用引腳線三態(tài)、輸出

BHE與A0結(jié)合使用BHE與A0結(jié)合使用BHE與A0結(jié)合使用

BHEAD0有效的數(shù)據(jù)引腳操作00AD15~AD0從偶地址讀/寫一個(gè)字10AD7~AD0從偶地址讀/寫一個(gè)字節(jié)01AD15~AD8從奇地址讀/寫一個(gè)字節(jié)0110AD15~AD8(第一個(gè)總線周期讀到該字?jǐn)?shù)據(jù)的低8位)AD7~AD0(第二個(gè)總線周期讀到該字?jǐn)?shù)據(jù)的高8位)從奇地址讀/寫一個(gè)字1、兩種工作模式的公共引腳RD讀信號三態(tài)、輸出低電平時(shí)有效有效時(shí)表示對存儲器或I/O進(jìn)行讀操作RD讀信號三態(tài)、輸出低電平時(shí)有效有效時(shí)表示對存儲器或I/O進(jìn)行讀操作1、兩種工作模式的公共引腳READY準(zhǔn)備就緒信號輸入高電平時(shí)有效有效時(shí)表示存儲器或I/O設(shè)備準(zhǔn)備就緒1、兩種工作模式的公共引腳TEST測試信號輸入低電平時(shí)有效與WAIT指令配合使用1、兩種工作模式的公共引腳INTR可屏蔽中斷請求信號輸入高電平時(shí)有效標(biāo)志寄存器中IF位:IF=1,允許中斷IF=0,禁止中斷1、兩種工作模式的公共引腳NMI非屏蔽中斷請求信號輸入上升沿有效不受IF位影響8086只有NMI和INTR可以引入外部中斷。1、兩種工作模式的公共引腳RESET復(fù)位信號輸入高電平有效復(fù)位后:指令隊(duì)列空CS為FFFFH其它寄存器清零1、兩種工作模式的公共引腳

其它CLK輸入時(shí)鐘信號VCC輸入電源GND接地MN/MX最小/最大模式信號,輸入。與工作模式有關(guān)的引腳2、最小模式下的引腳

INTA中斷響應(yīng)信號輸出低電平有效2、最小模式下的引腳ALE地址鎖存信號輸出下降沿時(shí)鎖存地址2、最小模式下的引腳

DEN數(shù)據(jù)允許信號輸出,三態(tài)低電平有效2、最小模式下的引腳

DT/R數(shù)據(jù)發(fā)送/接收控制信號輸出,三態(tài)有效時(shí)控制數(shù)據(jù)傳送方向2、最小模式下的引腳

M/IO訪問M或I/O控制信號輸出,三態(tài)=1,訪問M=0,訪問I/O2、最小模式下的引腳WR寫信號輸出,三態(tài)低電平有效有效時(shí)表示CPU正在寫2、最小模式下的引腳HOLD和HLDAHOLD輸入,總線保持請求信號HLDA輸出,總線響應(yīng)信號3、最大模式下的引腳QS1,QS0指令隊(duì)列狀態(tài)信號輸出組合見表QS1和QS0的組合與對應(yīng)的操作QS1QS0操作00無操作01從指令隊(duì)列的第一個(gè)字節(jié)中取走代碼10隊(duì)列為空11除第一個(gè)字節(jié)外,還取走了后續(xù)字節(jié)中的代碼3、最大模式下的引腳LOCK總線封鎖信號輸出,三態(tài)低電平有效3、最大模式下的引腳RQ/GT總線請求/允許信號雙向輸入:請求輸出:響應(yīng)共有2個(gè)同樣的引腳RQ/GT0優(yōu)先級高3、最大模式下的引腳S2~0總線周期狀態(tài)信號輸出信號

組合見表3.2.28086的工作模式一、最小模式和最大模式的概念

當(dāng)把8086CPU與存儲器和外設(shè)構(gòu)成一個(gè)計(jì)算機(jī)系統(tǒng)時(shí),根據(jù)所連的存儲器和外設(shè)的規(guī)模,8086具有兩種不同的工作模式,即最小模式和最大模式。8086到底工作在最大模式還是最小模式,由硬件設(shè)計(jì)決定。1.最小模式

當(dāng)要利用8086構(gòu)成一個(gè)較小的系統(tǒng)時(shí),在系統(tǒng)中只有8086一個(gè)微處理器,所連的存儲器容量不大、片子不多,所要連的I/O端口也不多,系統(tǒng)中的總線控制電路被減到最少。系統(tǒng)的地址總線可以由CPU的AD0~AD15、A16~A19通過地址鎖存器8282(或74LS373)構(gòu)成;數(shù)據(jù)總線可以直接由AD0~AD15供給,也可以通過發(fā)送/接收接口芯片8286(或74LS245)供給(增大總線的驅(qū)動能力);系統(tǒng)的控制總線就直接由CPU的控制線供給,這種組態(tài)就稱為8086的最小組態(tài)。最小模式系統(tǒng)的硬件組成8086最小模式圖2.最大模式最大模式是相對最小模式而言的。最大模式用在中等規(guī)模的或者大型的8086系統(tǒng)中。若要構(gòu)成的系統(tǒng)較大,就要求有較強(qiáng)的總線驅(qū)動能力,這樣8086要通過一個(gè)總線控制器8288來形成各種總線周期,控制信號由8288供給。在最大模式系統(tǒng)中,總是包含有兩個(gè)以上總線主控設(shè)備,其中一個(gè)就是8086微處理器,其他的通常是協(xié)處理器,它們是協(xié)助微處理器工作的。

8086最大模式圖最大模式系統(tǒng)的硬件組成*8086CPU引腳功能1.與工作模式無關(guān)的引腳功能

⑴AD15~AD0(雙向,三態(tài))為低16位地址/數(shù)據(jù)的復(fù)用引腳線。采用分時(shí)的多路轉(zhuǎn)換方法來實(shí)現(xiàn)對地址線和數(shù)據(jù)線的復(fù)用。在總線周期的T1狀態(tài),這些引線表示作為低16位地址線,在總線周期的T2,T3,TW狀態(tài),這些引線作為數(shù)據(jù)總線??梢妼?fù)用信號是用時(shí)間來加以劃分的,所以在T1狀態(tài),必須用鎖存器將地址加以鎖存,這樣在隨后的T狀態(tài),即使這些線用作數(shù)據(jù)線,而地址信息不變。在DMA方式時(shí),這些引線被浮空,置為高阻狀態(tài)。⑵A19/S6~A16/S3(輸出、三態(tài))為地址/狀態(tài)復(fù)用引腳線,在總線周期的T1狀態(tài),這些引線表示為最高4位地址線(在讀/寫外設(shè)端口時(shí),最高4位地址線不用,故這些引線全為低電平),在總線周期的其它T狀態(tài)(T2,T3,TW和T4)時(shí),這些引線作為狀態(tài)信息。同樣需要鎖存器對T1狀態(tài)出現(xiàn)的最高4位地址加以鎖存。狀態(tài)信息S6總是為低電平。S5反映當(dāng)前允許中斷標(biāo)志的狀態(tài)。S4與S3一起指示當(dāng)前哪一個(gè)段寄存器被使用。其規(guī)定如表所示。S4S3當(dāng)前正在使用的段寄存器名00ES01SS10CS11DS⑶/S7(輸出,三態(tài))為高8位數(shù)據(jù)總線允許/狀態(tài)復(fù)用引腳。在T1周期時(shí),為,與A0結(jié)合使用;在其他T狀態(tài)為S7,在8086中未賦實(shí)際意義。

A0操作所用引腳00從偶地址開始讀寫一個(gè)字AD15~AD010從偶地址開始讀寫一個(gè)字節(jié)AD7~AD001從奇地址開始讀寫一個(gè)字節(jié)AD15~AD8從奇地址開始讀寫一個(gè)字,需兩個(gè)總線周期:01從奇地址開始讀寫一個(gè)字節(jié)AD15~AD810從偶地址開始讀寫一個(gè)字節(jié)AD7~AD0

⑷(輸出,三態(tài))讀信號,當(dāng)其有效時(shí)(低電平)表示正在對存儲器或I/O端口進(jìn)行讀操作,若

為低電平,表示讀取I/O端口的數(shù)據(jù);若

為高電平,表示讀取存儲器的數(shù)據(jù)。T2、T3、TW狀態(tài)有效。在DMA方式時(shí),此線被浮置為高阻。⑸READY(輸入)為準(zhǔn)備就緒信號。是由選中的存儲器或I/O端口送來的響應(yīng)信號,當(dāng)有效時(shí)(高電平),表示被訪問的存儲器或I/O端口已準(zhǔn)備就緒,可完成一次數(shù)據(jù)傳送。CPU在讀操作總線周期的T3狀誠開始處,采樣READY信號,若發(fā)現(xiàn)為低電平,則在T1狀態(tài)結(jié)束后,插入等待狀態(tài)TW。然后在TW開始處,繼續(xù)采樣READY信號,直至變?yōu)橛行Вǜ唠娖剑?,才進(jìn)入T4狀態(tài),完成數(shù)據(jù)傳送,以結(jié)束總線周期。

⑹(輸入)為測試信號,低電平有效。信號和WAIT指令配合使用。當(dāng)CPU執(zhí)行WAIT指令時(shí),CPU處于等待狀態(tài),并且每隔5個(gè)T對該信號進(jìn)行一次測試,一旦檢測到信號為低,則結(jié)束等待狀態(tài),繼續(xù)執(zhí)行WAIT指令下面的指令。WAIT指令是使CPU與外部硬件同步的,相當(dāng)于外部硬件的同步信號。⑺INTR(輸入)可屏蔽中斷請求信號,高電平有效。CPU在執(zhí)行每條指令的最后一個(gè)T狀態(tài)時(shí),去采樣INTR信號,若發(fā)現(xiàn)為有效,而中斷允許標(biāo)志IF又為1,則CPU在結(jié)束當(dāng)前指令周期后響應(yīng)中斷請求,轉(zhuǎn)去執(zhí)行中斷處理程序。

⑼RESET(輸入)復(fù)位信號,高電平有效。復(fù)位時(shí)該信號要求維持高電平至少4個(gè)時(shí)鐘周期,若是初次加電,則高電平信號至少要保持50μs。復(fù)位信號的到來,將立即結(jié)束CPU的當(dāng)前操作,內(nèi)部寄存器恢復(fù)到初始狀態(tài),如表所示。當(dāng)RESET信號從高電平回到低電平時(shí),即復(fù)位后進(jìn)入重新啟動時(shí),便執(zhí)行從內(nèi)存FFFF0H處開始的指令,通常在FFFF0H存放一條無條件轉(zhuǎn)移指令,轉(zhuǎn)移到系統(tǒng)程序的實(shí)際入口處。這樣只要系統(tǒng)被復(fù)位啟動,就自動進(jìn)入系統(tǒng)程序。標(biāo)志寄存器清零指令指針(IP)0000HCS寄存器FFFFH其它寄存器0000H指令隊(duì)列空⑽CLK(輸入)時(shí)鐘信號,它為CPU和總線控制電路提供基準(zhǔn)時(shí)鐘。⑾電源和地VCC為電源引線,單一的+5V電源。引腳1和20為兩條GND線,要求均要接地。⑿(輸入)為最小/最大模式信號。它決定8086的工作模式。將此引線接電源+5V,則8086工作于最小模式;若此引線接地,則8086工作在最大模式。2.最小模式下的引腳功能⑴(InterruptAcknowledge,輸出)CPU向外輸出的中斷響應(yīng)信號,用于對外部中斷源發(fā)出的中斷請求的響應(yīng),中斷響應(yīng)周期由兩個(gè)連續(xù)的總線周期組成,在每個(gè)響應(yīng)周期的T2,T3和TW狀態(tài),均為有效(低電平),在第二個(gè)中斷響應(yīng)周期,外設(shè)端口往數(shù)據(jù)總線上發(fā)送中斷類型號,CPU根據(jù)中斷向量而轉(zhuǎn)向中斷處理程序。⑵ALE(AddressLockEnable,輸出)地址鎖存允許信號,高電平有效。在總線周期的T1狀態(tài),當(dāng)?shù)刂?數(shù)據(jù)復(fù)用線AD15~AD0和地址/狀態(tài)復(fù)用線A19/S6~A16/S3上出現(xiàn)地址信號時(shí),CPU提供ALE有效電平,將地址信息鎖存到地址鎖存器中。。⑶(DataEnable,輸出,三態(tài))數(shù)據(jù)允許信號,在使用8286或74LS245數(shù)據(jù)收發(fā)器的最小模式系統(tǒng)中,在存儲器訪問周期,I/O訪問周期或中斷響應(yīng)周期,此信號有效,用來作為8286或74LS245數(shù)據(jù)收發(fā)器的輸出允許信號,即允許收發(fā)器和系統(tǒng)數(shù)據(jù)總線進(jìn)行數(shù)據(jù)傳送。T2~T4有效。在DMA方式時(shí),此線被浮置為高阻。⑷(DataTransmit/Receive,輸出,三態(tài))數(shù)據(jù)發(fā)送/接收控制信號。在使用8286或74LS245數(shù)據(jù)收發(fā)器的最小模式系統(tǒng)中,用

來控制數(shù)據(jù)傳送方向。

為低電平,進(jìn)行數(shù)據(jù)接收(CPU讀),即收發(fā)器把系統(tǒng)數(shù)據(jù)總線上的數(shù)據(jù)讀進(jìn)來。當(dāng)CPU處在DMA方式時(shí),此線浮空。⑸(輸出,三態(tài))訪問存儲器或I/O端口的控制信號。若

為高電平,則訪問的是存儲器;若

為低電平,則訪問的是I/O端口。⑹(輸出,三態(tài))寫信號。當(dāng)其有效時(shí)(低電平)表示CPU正在對存儲器或I/O端口進(jìn)行寫操作,具體對誰進(jìn)行寫操作,由信號決定。本信號在總線周期的T2~T4狀態(tài)有效。⑺HOLD(輸入)總線保持請求信號。當(dāng)系統(tǒng)中CPU之外的總線主設(shè)備要求使用總線時(shí),通過HOLD引腳向CPU發(fā)出請求,如果CPU允許讓出總線,則CPU在當(dāng)前周期的T4狀態(tài)或下一總線周期的T1狀態(tài)。,由HLDA引腳向主設(shè)備輸出高電平信號作為響應(yīng)。同時(shí)使地址總線、數(shù)據(jù)總線和相應(yīng)的控制線處于浮空狀態(tài),總線請求主設(shè)備取得總線的控制權(quán)。一旦總線使用完畢,總線請求主設(shè)備使HOLD變?yōu)榈碗娖剑珻PU檢測到HOLD為低后,把HLDA也置為低電平,CPU重新獲得總線的控制權(quán)。⑻HLDA(輸出)總線保持響應(yīng)信號。當(dāng)HLDA有效(高電平)時(shí),表示CPU對總線請求主設(shè)備作出響應(yīng),同意讓出總線,與CPU相連的三態(tài)引腳都被浮置為高阻態(tài)。3.最大模式下的引腳功能⑴QS1,QS0(輸出)指令隊(duì)列狀態(tài)(QueueStatus)信號。QS1和QS0的組合提供了總線周期前一個(gè)T狀態(tài)中指令隊(duì)列的狀態(tài)(隊(duì)列狀態(tài)只在隊(duì)列操作執(zhí)行以后的時(shí)鐘周期有效),允許外部設(shè)備跟蹤8086內(nèi)部指令隊(duì)列狀況。QS1和QS0的組合所代表的指令隊(duì)列狀態(tài)輸出如下表所示:QS1QS0含義00無操作01從指令隊(duì)列的第一個(gè)字節(jié)中取走代碼10隊(duì)列空11除第一個(gè)字節(jié)外,還取走了后續(xù)字節(jié)中的代碼⑵,,的組合及其對應(yīng)的操作如下表所示。當(dāng)CPU處在DMA傳送方式時(shí),這三根引線浮置為高阻。在總線周期的T3和TW狀態(tài)并且READY為高電平時(shí),,,都成為高電平,此時(shí),一個(gè)總線操作過程就要結(jié)束,另一個(gè)新的總線周期還未開始,通常稱無源狀態(tài)。S2、S1、S0的組合與對應(yīng)的操作S2S1S0操作000發(fā)中斷響應(yīng)信號001讀I/O端口010寫I/O端口011暫停100取指101讀存儲器110寫存儲器111無作用操作過程000011110011001101010101發(fā)中斷響應(yīng)信號讀I/O端口寫I/O端口暫停取指令讀內(nèi)存寫內(nèi)存無源狀態(tài)⑶(輸出,三態(tài))總線封鎖信號。當(dāng)本信號有效(低電平)時(shí),封鎖了系統(tǒng)中別的總線主設(shè)備對系統(tǒng)總線的占有。輸出信號由前綴指令LOCK產(chǎn)生,且保持有效直至LOCK指令的下面一條指令執(zhí)行后。在8086的中斷響應(yīng)時(shí),在兩個(gè)連續(xù)響應(yīng)周期之間,信號亦變?yōu)橛行?,以防止一個(gè)完整的中斷過程被外部主設(shè)備占用總線而破壞。在DMA操作時(shí),引腳被浮空。⑷,(Request/Grant,雙向)總線請求/允許信號。為兩個(gè)信號端,每個(gè)信號端可供CPU以外的一個(gè)總線主設(shè)來發(fā)出使用總線請求信號,以及接收來自CPU的允許總線請求響應(yīng)信號。類似于最小系統(tǒng)中的HOLD和HLDA信號,但此兩個(gè)引腳都是雙向的,即在同一引腳上送總線請求信號(對CPU為輸入),后傳送允許信號(對CPU為輸出)。的優(yōu)先權(quán)高于。3.3.1時(shí)鐘周期(T狀態(tài))、總線周期和指令周期

1.時(shí)鐘周期(T狀態(tài))

計(jì)算機(jī)是一個(gè)復(fù)雜的時(shí)序邏輯電路,時(shí)序邏輯電路都有“時(shí)鐘”信號。計(jì)算機(jī)的“時(shí)鐘”是由振蕩源產(chǎn)生的、幅度和周期不變的節(jié)拍脈沖,每個(gè)脈沖周期稱為時(shí)鐘周期,又稱為T狀態(tài)。計(jì)算機(jī)是在時(shí)鐘脈沖的統(tǒng)一控制下,一個(gè)節(jié)拍一個(gè)節(jié)拍地工作的。3.38086的系統(tǒng)的總線時(shí)序

2.總線周期

CPU訪問存儲器或輸入輸出端口時(shí),需要通過總線進(jìn)行讀或?qū)懖僮?。與CPU內(nèi)部操作相比,通過總線進(jìn)行的操作需要較長的時(shí)間。通常把CPU通過總線進(jìn)行某種操作所花費(fèi)的時(shí)間稱為總線周期(BusCycle)。根據(jù)總線操作功能的不同,有多種不同的總線周期。如存儲器讀周期、存儲器寫周期、I/O讀周期、I/O寫周期等。8086總線周期一般由4個(gè)時(shí)鐘周期組成,習(xí)慣上分別稱為T1狀態(tài)、T2狀態(tài)、T3狀態(tài)和T4狀態(tài)。

總線周期總線周期(1)在T1狀態(tài),CPU往多路復(fù)用總線上發(fā)出地址信息,以指出要尋址的存儲單元或外設(shè)端口的地址。(2)在T2狀態(tài),CPU從總線上撤消地址,而使總線的低16位浮空,置成高阻狀態(tài),為傳輸數(shù)據(jù)作準(zhǔn)備??偩€的最高4位(A19~A16)用來輸出本總線周期狀態(tài)信息。在這些狀態(tài)信息用來表示中斷允許狀態(tài),當(dāng)前正在使用的段寄存器名等。(3)在T3狀態(tài),多路總線的高4位繼續(xù)提供狀態(tài)信息,而多路總線的低16位(8088則為低8位)上出現(xiàn)由CPU寫出的數(shù)據(jù)或者CPU從存儲器或端口讀入的數(shù)據(jù)。(4)在有些情況下,外設(shè)或存儲器速度較慢,不能及時(shí)地配合CPU傳送數(shù)據(jù)。這時(shí),外設(shè)或存儲器會通過“READY”信號線在T3狀態(tài)啟動之前向CPU發(fā)一個(gè)“數(shù)據(jù)未準(zhǔn)備好”信號,于是CPU會在T3之后插入1個(gè)或多個(gè)附加的時(shí)鐘周期Tw。Tw也叫等待狀態(tài),在Tw狀態(tài),總線上的信息情況和T3狀態(tài)的信息情況一樣。當(dāng)指定的存儲器或外設(shè)完成數(shù)據(jù)傳送時(shí),便在“READY”線上發(fā)出“準(zhǔn)備好”信號,CPU接收到這一信號后,會自動脫離Tw狀態(tài)而進(jìn)入T4狀態(tài)。(5)在T4狀態(tài),總線周期結(jié)束。需要指出:只有在CPU和內(nèi)存或I/O接口之間傳輸數(shù)據(jù),以及填充指令隊(duì)列時(shí),CPU才執(zhí)行總線周期。如果在一個(gè)總線周期之后,不立即執(zhí)行下一個(gè)總線周期,則進(jìn)入空閑周期??臻e周期包含一個(gè)或多個(gè)時(shí)鐘周期。3.指令周期每條指令的執(zhí)行包括取指令(fetch)、譯碼(decode)和執(zhí)行(execute)。執(zhí)行一條指令所需要的時(shí)間稱為指令周期(InstructionCycle)。指令周期是由1個(gè)或多個(gè)總線周期組合而成。8086中不同指令的指令周期是不等長的。由于8086中的指令碼最短的只需要一個(gè)字節(jié),多的有6個(gè)字節(jié)。對于多字節(jié)指令,取指(存儲器讀)就需要多個(gè)總線周期;在指令的執(zhí)行階段,尋址方式,需要的總線周期個(gè)數(shù)也不相同。對于8086CPU來說,在EU執(zhí)行指令的時(shí)候,BIU可以取下一條指令。由于EU和BIU可以并行工作,8086指令的最短執(zhí)行時(shí)間可以是兩個(gè)時(shí)鐘周期,一般的加、減、比較、邏輯操作是幾十個(gè)時(shí)鐘周期,最長的為16位乘除法操作,約要200個(gè)時(shí)鐘周期。3.3.2最小模式下的8086時(shí)序分析1、最小模式下的讀周期時(shí)序

一個(gè)基本的總線周期⑴T1狀態(tài):CPU首先要判斷是從存儲器讀取數(shù)據(jù),還是從I/O端口讀取數(shù)據(jù)??捎每刂菩盘栔赋觯羰谴鎯ζ髯x,則為高,若是從I/O端口讀,則為低。其次,要給出所讀取的存儲器或I/O端口的地址。8086有20根地址線,其中最高4根地址線A19/S6~A16/S3和低16根地址線AD15~AD0是復(fù)用的。但在T1狀態(tài)的開始,對存儲器來說,這20根引線上出現(xiàn)的全是地址信息;對I/O端口來說,其最大尋址范圍為0000~FFFFH,故送往I/O端口的是低16位地址信息,最高4位地址線A19~A16全為低電平。在T1狀態(tài)CPU還必須在ALE引腳上輸出一個(gè)正脈沖,將20位地址信息中的最高4位和低16位鎖存到地址鎖存器8282或74LS373中。這樣才能保證在總線周期T1以后的T狀態(tài)往這些復(fù)用線上傳送狀態(tài)信息和數(shù)據(jù)時(shí),不造成地址信息的破壞。

信號也在T1狀態(tài)通過引腳送出,它用來表示高8位數(shù)據(jù)總線上的信息可以使用。信號常常作為奇地址存儲體的片選信號,配合地址信號來實(shí)現(xiàn)存儲單元的選址,因?yàn)槠娴刂反鎯w中的信息總是通過高8位數(shù)據(jù)線來傳輸。而偶地址存儲體的片選信號是最低位地址A0。

若系統(tǒng)中接有數(shù)據(jù)總線收發(fā)器8286時(shí),要用到信號來控制數(shù)據(jù)傳輸方向,用信號來控制數(shù)據(jù)的選通。為此,在T1狀態(tài)輸出低電平,表示為讀周期,即讓數(shù)據(jù)總線收發(fā)器接收數(shù)據(jù)。⑵T2狀態(tài):及A19/S6~A16/S3引腳上輸出狀態(tài)信息S7~S3;AD15~AD0轉(zhuǎn)為高阻,為下面讀出數(shù)據(jù)做準(zhǔn)備。讀信號在T2狀態(tài)變?yōu)橛行?,允許將被地址信息選中的存儲單元或I/O端口中的數(shù)據(jù)讀出。在接有數(shù)據(jù)總線收發(fā)器8286的系統(tǒng)中,在T2狀態(tài)變?yōu)榈碗娖?,以選通8286,允許數(shù)據(jù)傳送。⑶T3狀態(tài):被選中存儲單元或I/O端口將數(shù)據(jù)送到數(shù)據(jù)總線上,CPU通過AD15~AD0讀取數(shù)據(jù)。

⑷TW狀態(tài):當(dāng)系統(tǒng)中所用的存儲器或外設(shè)的工作速度較慢,從而不能用最基本的總線周期執(zhí)行讀操作時(shí),系統(tǒng)中就要用一個(gè)電路來產(chǎn)生READY信號,READY信號通過時(shí)鐘發(fā)生器8284A傳遞給CPU。CPU在T3狀態(tài)開始時(shí)刻對READY信號進(jìn)行采樣。如果CPU在的一開始沒有采樣到READY信號為高電平(在這種情況下,數(shù)據(jù)總線上不會有數(shù)據(jù)),那么,就會在T3和T4之間插入等待TW。TW可以為1個(gè),也可以為多個(gè)。以后,CPU在每個(gè)TW開始時(shí)刻對READY信號進(jìn)行采樣,等到CPU接收到高電平的READY信號后,再把當(dāng)前TW狀態(tài)執(zhí)行完,便脫離TW進(jìn)入T4狀態(tài)。最后一個(gè)TW狀態(tài),數(shù)據(jù)已出現(xiàn)在數(shù)據(jù)總線上⑸T4狀態(tài):在T4狀態(tài)和前一個(gè)狀態(tài)的下降沿處,CPU對數(shù)據(jù)總線進(jìn)行采樣,從而獲得數(shù)據(jù)。2、最小模式下的寫周期時(shí)序最小模式下的寫周期時(shí)序?qū)懼芷谑侵窩PU中的數(shù)據(jù)送到存儲器或I/O端口的總線周期。⑴T1狀態(tài):基本與讀周期一樣,只是為高電平。⑵T2狀態(tài):CPU把要寫入存儲器或外設(shè)端口的數(shù)據(jù),送到AD15~AD0上(在此之前低16位地址已被鎖存)。同時(shí),CPU在高4位地址/狀態(tài)復(fù)用線上送出狀態(tài)信息S6~S3。寫信號在T2狀態(tài)變?yōu)橛行В恢本S持有效到T4狀態(tài)。也在T2狀態(tài)變?yōu)橛行?,并維持到T4狀態(tài)。⑶T3狀態(tài):CPU繼續(xù)提供S6~S3狀態(tài)信息和數(shù)據(jù),并維持有關(guān)控制信號不變。⑷T4狀態(tài):CPU完成對指定的存儲器或外設(shè)端口的數(shù)據(jù)寫入。數(shù)據(jù)和控制信號被撤除。3、中斷響應(yīng)周期時(shí)序一般外部設(shè)備的中斷是通過INTR引腳向CPU發(fā)出中斷請求的,這個(gè)可屏蔽中斷請求信號的有效電平(高電平),必須維持到CPU響應(yīng)中斷為止。若標(biāo)志IF=1,表示CPU允許中斷,則CPU在執(zhí)行完當(dāng)前指令后響應(yīng)中斷。

中斷響應(yīng)周期由兩個(gè)連續(xù)總線周期組成,在每一個(gè)響應(yīng)周期的T2狀態(tài)至T4狀態(tài)開始,從引腳向外設(shè)接口發(fā)出一個(gè)負(fù)脈沖。在第一個(gè)響應(yīng)周期,使AD7~AD0浮空,在第二個(gè)響應(yīng)周期,外設(shè)接口收到后,立即往數(shù)據(jù)總線AD7~AD0上送出一個(gè)中斷類型碼,CPU讀入該類型碼后,根據(jù)中斷向量表找到該設(shè)備的處理程序的入口地址,轉(zhuǎn)入中斷處理。對非屏蔽中斷請求NMI而言,其請求信號為一上升沿觸發(fā)信號,并要求維持兩個(gè)時(shí)鐘周期的高電平。CPU響應(yīng)NMI的過程與響應(yīng)INTR請求的過程基本類似,不同點(diǎn)有二,一是前者無需判斷IF是否為1,均要求響應(yīng);二是CPU響應(yīng)NMI時(shí),不需要從外設(shè)讀取中斷向量,而是按規(guī)定對應(yīng)中斷向量表中的中斷類型2,即直接從0000:0008H開始的4個(gè)單元中讀取NMI中斷處理程序的入口地址。

5.3.4總線保持請求與保持響應(yīng)時(shí)序當(dāng)系統(tǒng)中CPU之外的總線主設(shè)備需要占用總線時(shí),就向CPU發(fā)出一個(gè)有效的總線請求信號HOLD,這個(gè)HOLD信號可能與時(shí)鐘信號不同步,當(dāng)CPU在每個(gè)時(shí)鐘周期的上升沿檢測

溫馨提示

  • 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

提交評論