第三章 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頁,還剩65頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1第三章第三章 8086微處理器系統(tǒng)結(jié)構(gòu)微處理器系統(tǒng)結(jié)構(gòu) 23.1 8086 CPU的內(nèi)部結(jié)構(gòu)的內(nèi)部結(jié)構(gòu) 8086 CPU是是Intel系列的系列的16位微處理器,它采用位微處理器,它采用HMOS工藝制造,雙工藝制造,雙列直插,有列直插,有40個引腳。個引腳。8086 CPU的電源為單一的的電源為單一的5V,主時(shí)鐘頻率為,主時(shí)鐘頻率為5MHz10MHz。它的外部數(shù)據(jù)總線為。它的外部數(shù)據(jù)總線為16位,地址線為位,地址線為20根。因?yàn)榭捎酶?。因?yàn)榭捎?0位地址,所以可尋址的地址空間達(dá)位地址,所以可尋址的地址空間達(dá)1MB。 8086 CPU在內(nèi)部采用了并行流水線結(jié)構(gòu),可以提高在內(nèi)部采用了并行流水線結(jié)

2、構(gòu),可以提高CPU的利用率和的利用率和處理速度。處理速度。8086 CPU被設(shè)計(jì)為支持多處理器系統(tǒng),因此能方便地與數(shù)值協(xié)被設(shè)計(jì)為支持多處理器系統(tǒng),因此能方便地與數(shù)值協(xié)處理器處理器8087或其他協(xié)處理器相連,構(gòu)成多處理器系統(tǒng),從而提高系統(tǒng)的數(shù)或其他協(xié)處理器相連,構(gòu)成多處理器系統(tǒng),從而提高系統(tǒng)的數(shù)據(jù)處理能力。據(jù)處理能力。8086 CPU還具有一個功能相對完善的指令系統(tǒng),能對多種類還具有一個功能相對完善的指令系統(tǒng),能對多種類型的數(shù)據(jù)進(jìn)行處理,使程序設(shè)計(jì)方便、靈活。型的數(shù)據(jù)進(jìn)行處理,使程序設(shè)計(jì)方便、靈活。3.1.1 8086CPU的內(nèi)部結(jié)構(gòu)的內(nèi)部結(jié)構(gòu)Intel8086CPU由運(yùn)算器、控制器和少量的寄存

3、器構(gòu)成。見圖所示:由運(yùn)算器、控制器和少量的寄存器構(gòu)成。見圖所示:3.1.1 總體結(jié)構(gòu)總體結(jié)構(gòu)3控制器的組成框圖控制器的組成框圖 指令部件指令部件時(shí)序部件時(shí)序部件微操作控微操作控制部件制部件控制器控制器4運(yùn)算器運(yùn)算器運(yùn)算器是完成二進(jìn)制編碼的算術(shù)或邏輯運(yùn)算的部件。運(yùn)算器由運(yùn)算器是完成二進(jìn)制編碼的算術(shù)或邏輯運(yùn)算的部件。運(yùn)算器由累加器累加器(用符號(用符號A表示)、表示)、通用寄存器通用寄存器(用符號(用符號B表示)和表示)和算術(shù)邏輯單元算術(shù)邏輯單元(用符號(用符號ALU表示)組成,表示)組成,其結(jié)構(gòu)如圖其結(jié)構(gòu)如圖1-4所示,其核心是算術(shù)邏輯單元。所示,其核心是算術(shù)邏輯單元。 通用寄存器通用寄存器B用

4、于暫存參加運(yùn)算的一個操作數(shù),此操作數(shù)來自總線?,F(xiàn)代計(jì)算用于暫存參加運(yùn)算的一個操作數(shù),此操作數(shù)來自總線。現(xiàn)代計(jì)算機(jī)的運(yùn)算器有多個寄存器,稱之為通用寄存器組。機(jī)的運(yùn)算器有多個寄存器,稱之為通用寄存器組。累加器累加器A是特殊的寄存器,它既能接受來自總線的二進(jìn)制信息作為參加運(yùn)算的是特殊的寄存器,它既能接受來自總線的二進(jìn)制信息作為參加運(yùn)算的一個操作數(shù),向算術(shù)邏輯單元一個操作數(shù),向算術(shù)邏輯單元ALU輸送,又能存儲由輸送,又能存儲由ALU運(yùn)算的中間結(jié)果和最后運(yùn)算的中間結(jié)果和最后結(jié)果。算術(shù)邏輯單元由加法器及控制門等邏輯電路組成,以完成結(jié)果。算術(shù)邏輯單元由加法器及控制門等邏輯電路組成,以完成A和和B中的數(shù)據(jù)的中

5、的數(shù)據(jù)的各種算術(shù)與邏輯運(yùn)算。各種算術(shù)與邏輯運(yùn)算。運(yùn)算器一次運(yùn)算二進(jìn)制數(shù)的位數(shù),稱為字長。它是計(jì)算機(jī)的重要性能指標(biāo)。常運(yùn)算器一次運(yùn)算二進(jìn)制數(shù)的位數(shù),稱為字長。它是計(jì)算機(jī)的重要性能指標(biāo)。常用的計(jì)算機(jī)字長有用的計(jì)算機(jī)字長有8位、位、16位、位、32位及位及64位。寄存器、累加器的長度應(yīng)與位。寄存器、累加器的長度應(yīng)與ALU的的字長相等。字長相等。5寄存器組寄存器組1通用寄存器:通用寄存器:AX、BX、CX、DX2指針和變址寄存器:指針和變址寄存器:BP、SP;SI、DI3段寄存器:段寄存器:CS、DS、SS、ES4指令指針指令指針I(yè)P與標(biāo)志寄存器與標(biāo)志寄存器FR共共14個,其位置見下圖:個,其位置見下

6、圖:6Intel 8086分為兩部分:總線接口部件分為兩部分:總線接口部件BIU(Bus Interface Unit)和執(zhí)行部件和執(zhí)行部件EU(Execution Unit)。如圖所示。如圖所示。 71,總線接口部件,總線接口部件BIU(BUS Interface Unit)(1)段寄存器(CS,DS,SS,ES)存放存貯器各段的段地址(首地址)。(2)指令指針寄存器IP存放要執(zhí)行的下一條指令的偏移地址。(3)地址加法器將段地址(16位)和偏移地址(16位)擴(kuò)展為20位的實(shí)際地址(物理地址)。或用邏輯地址表示 段地址:偏移地址(4)指令隊(duì)列將存貯器中代碼段要執(zhí)行的指令預(yù)先取出排隊(duì),由EU執(zhí)行

7、,以提高處理速度。BIU功能:相當(dāng)于控制器功能:相當(dāng)于控制器負(fù)責(zé)取指令,寫回?cái)?shù)據(jù),完成負(fù)責(zé)取指令,寫回?cái)?shù)據(jù),完成CPU與存貯器及與存貯器及I/O接接口間的數(shù)據(jù)傳送。口間的數(shù)據(jù)傳送。2,執(zhí)行部件,執(zhí)行部件EU(Execution Unit)(1)算術(shù)邏輯運(yùn)算單元(ALU)完成算術(shù)運(yùn)算、邏輯運(yùn)算和移位等操作。(2)通用寄存器存放參與運(yùn)算的數(shù)據(jù)或數(shù)據(jù)的地址及運(yùn)算結(jié)果。 (3)標(biāo)志寄存器(FR)存放運(yùn)算結(jié)果的特征,如正、負(fù)、零、進(jìn)位、溢出等。 EU功能:相當(dāng)于運(yùn)算器功能:相當(dāng)于運(yùn)算器負(fù)責(zé)指令的執(zhí)行,進(jìn)行算術(shù)邏輯運(yùn)算、移位、負(fù)責(zé)指令的執(zhí)行,進(jìn)行算術(shù)邏輯運(yùn)算、移位、BCD調(diào)整、數(shù)據(jù)暫存等操作。調(diào)整、數(shù)據(jù)暫

8、存等操作。8BIU和和EU的動作管理的動作管理 在在8086中,中,BIU和和EU兩部分是按流水線方式并行工作的,在兩部分是按流水線方式并行工作的,在EU執(zhí)行執(zhí)行指令的過程中,指令的過程中,BIU可以取出多條指令,放進(jìn)指令流隊(duì)列中排隊(duì)。可以取出多條指令,放進(jìn)指令流隊(duì)列中排隊(duì)。EU從從BIU中的指令隊(duì)列中不斷地取指令并執(zhí)行指令,因而省去了訪問內(nèi)存取指中的指令隊(duì)列中不斷地取指令并執(zhí)行指令,因而省去了訪問內(nèi)存取指令的時(shí)間,加快了程序運(yùn)行速度。令的時(shí)間,加快了程序運(yùn)行速度。 BIU從內(nèi)存取指令,并送到指令隊(duì)列。取指令時(shí)的地址由代碼段寄從內(nèi)存取指令,并送到指令隊(duì)列。取指令時(shí)的地址由代碼段寄存器存器CS中

9、的中的16位段地址的最低位后補(bǔ)位段地址的最低位后補(bǔ)4個個0,再與指令指針,再與指令指針I(yè)P中的中的16位偏位偏移地址在地址加法器中相加得到移地址在地址加法器中相加得到20位物理地址。然后通過總線控制邏輯位物理地址。然后通過總線控制邏輯發(fā)出存儲器讀命令發(fā)出存儲器讀命令,從而啟動存儲器,從存儲器中取出指令并送入指令,從而啟動存儲器,從存儲器中取出指令并送入指令隊(duì)列供隊(duì)列供EU執(zhí)行。執(zhí)行。 在在EU執(zhí)行指令過程中需要取操作數(shù)或存結(jié)果時(shí),先向執(zhí)行指令過程中需要取操作數(shù)或存結(jié)果時(shí),先向BIU發(fā)出請求,發(fā)出請求,并提供操作數(shù)的有效地址,并提供操作數(shù)的有效地址,BIU將根據(jù)將根據(jù)EU的請求和提供的有效地址,

10、形的請求和提供的有效地址,形成成20位的物理地址并執(zhí)行一個總線周期去訪問存儲器或位的物理地址并執(zhí)行一個總線周期去訪問存儲器或I/O端口,從指定端口,從指定存儲單元或存儲單元或I/O端口取出操作數(shù)送交端口取出操作數(shù)送交EU使用或?qū)⒔Y(jié)果存入指定的存儲單使用或?qū)⒔Y(jié)果存入指定的存儲單元或元或I/O端口。如果端口。如果BIU已準(zhǔn)備好取指令但同時(shí)又收到已準(zhǔn)備好取指令但同時(shí)又收到EU的申請,則的申請,則BIU先完成取指令的操作,然后進(jìn)行操作數(shù)的讀寫。先完成取指令的操作,然后進(jìn)行操作數(shù)的讀寫。98086微處理器指令的執(zhí)行過程微處理器指令的執(zhí)行過程 取指取指 執(zhí)行執(zhí)行取指取指 執(zhí)行執(zhí)行取指取指 執(zhí)行執(zhí)行 。 在

11、在8086中,由于中,由于EU和和BIU兩部分是按流水線方式并行兩部分是按流水線方式并行工作的,在工作的,在EU執(zhí)行指令的過程中,執(zhí)行指令的過程中,BIU可以取出多條指令,可以取出多條指令,放進(jìn)指令流隊(duì)列中排隊(duì)。放進(jìn)指令流隊(duì)列中排隊(duì)。EU僅僅從僅僅從BIU中的指令隊(duì)列中不斷中的指令隊(duì)列中不斷地取指令并執(zhí)行指令,因而省去了訪問內(nèi)存取指令的時(shí)間,地取指令并執(zhí)行指令,因而省去了訪問內(nèi)存取指令的時(shí)間,加快了程序運(yùn)行速度。這也正是當(dāng)時(shí)的加快了程序運(yùn)行速度。這也正是當(dāng)時(shí)的8086 CPU成功的原成功的原因之一。它的執(zhí)行過程如上所示,取指令和執(zhí)行指令由因之一。它的執(zhí)行過程如上所示,取指令和執(zhí)行指令由BIU和

12、和EU兩個機(jī)構(gòu)同時(shí)進(jìn)行。兩個機(jī)構(gòu)同時(shí)進(jìn)行。1010寄存器間接尋址的執(zhí)行CS1000H IP0100H DS=3000H BX2000H113.1.2 8086寄存器結(jié)構(gòu)寄存器結(jié)構(gòu)1212l8086/8088共有共有14寄存器,它們是:寄存器,它們是:l4個數(shù)據(jù)寄存器個數(shù)據(jù)寄存器 AX,BX,CX,DX (可拆分(可拆分 為為8位)位)l4個段地址寄存器個段地址寄存器 CS,DS,SS,ESl2個變址寄存器個變址寄存器 DI,SIl3個指針寄存器個指針寄存器 IP,SP,BP l1個標(biāo)志寄存器個標(biāo)志寄存器 FR(PSW、FLAGS) 小結(jié):小結(jié):138086中的標(biāo)志寄存器中的標(biāo)志寄存器狀態(tài)標(biāo)志位

13、有狀態(tài)標(biāo)志位有6個:個:CF、PF、AF、ZF、SF、OF,控制標(biāo)志,控制標(biāo)志 位位3個:個:IF、DF、TF。 PSW程序狀態(tài)字寄存器各標(biāo)志位程序狀態(tài)字寄存器各標(biāo)志位 1414進(jìn)位、溢出的概念進(jìn)位、溢出的概念無符號數(shù)無符號數(shù)/有符號數(shù)能否使用同一套加減指令?有符號數(shù)能否使用同一套加減指令?若無符號數(shù)若無符號數(shù)/有符號數(shù)使用同一套加減指令,如何判斷運(yùn)算結(jié)果是否溢出?有符號數(shù)使用同一套加減指令,如何判斷運(yùn)算結(jié)果是否溢出?例:例: 0000 0101 CF OF 無符號數(shù)無符號數(shù) 有符號數(shù)有符號數(shù) 0000 1010 0 0 5+1015 (+5)+(+10)+15 0000 1111 0000

14、1000 1111 1011 1 0 8+2513 (8)+(5)+3 1 0000 0011 0000 1000 0111 1100 0 1 8+124=132 (+8)+(+124)124 1000 0100 1000 0111 1111 0101 1 1 135+245=124 (-121)+(-11)+124 10111 1100結(jié)論:結(jié)論:無符號數(shù)無符號數(shù)/有符號數(shù)可使用同一套加減指令。有符號數(shù)可使用同一套加減指令。參與運(yùn)算的必須同為無符號數(shù)或有符號數(shù)。參與運(yùn)算的必須同為無符號數(shù)或有符號數(shù)。溢出判斷:無符號數(shù)由溢出判斷:無符號數(shù)由CF=1 有符號數(shù)由有符號數(shù)由OF=1無符號數(shù)溢出可進(jìn)

15、行調(diào)整;有符號數(shù)溢出其結(jié)果錯誤。無符號數(shù)溢出可進(jìn)行調(diào)整;有符號數(shù)溢出其結(jié)果錯誤。標(biāo)志位變化標(biāo)志位變化 運(yùn)算結(jié)果為運(yùn)算結(jié)果為0:ZF=1 運(yùn)算結(jié)果為負(fù)數(shù):運(yùn)算結(jié)果為負(fù)數(shù):SF=1 運(yùn)算結(jié)果有偶數(shù)個運(yùn)算結(jié)果有偶數(shù)個1:PF=1 低四位運(yùn)算有進(jìn)位時(shí)低四位運(yùn)算有進(jìn)位時(shí)AF=1153.1.3 8086 CPU的引腳及功能的引腳及功能電平:電平:一個比較難理解的概念。一般我們認(rèn)為能夠觸發(fā)門電路動一個比較難理解的概念。一般我們認(rèn)為能夠觸發(fā)門電路動作的電壓值。作的電壓值。在邏輯電路中,符合一種邏輯值要求的電壓范圍。在邏輯電路中,符合一種邏輯值要求的電壓范圍。高電平:高電平:觸發(fā)門電路動作的高位電壓,在門電路中

16、一般是觸發(fā)門電路動作的高位電壓,在門電路中一般是5V。在在正邏輯電路中符合邏輯值正邏輯電路中符合邏輯值1的電壓范圍。的電壓范圍。低電平:低電平:觸發(fā)門電路動作的低位電壓,在門電路中一般是觸發(fā)門電路動作的低位電壓,在門電路中一般是0V。在在正邏輯電路中符合邏輯值正邏輯電路中符合邏輯值0的電壓范圍。的電壓范圍。上升沿:上升沿:從低電平到高電平的變化過程。從低電平到高電平的變化過程。 下降沿:下降沿:從高電平到低電平的變化過程。從高電平到低電平的變化過程。 高阻:高阻:使芯片管腳處于阻斷狀態(tài)。也叫浮空。使芯片管腳處于阻斷狀態(tài)。也叫浮空。三態(tài):三態(tài):一個芯片的管腳可以出現(xiàn)高電平、低電平和高阻三個狀態(tài)。

17、一個芯片的管腳可以出現(xiàn)高電平、低電平和高阻三個狀態(tài)。需要解釋的幾個概念需要解釋的幾個概念16168086 CPU的引腳及功能的引腳及功能NMI 不可屏蔽中斷請求信號不可屏蔽中斷請求信號 不受不受IF影響影響INTR 可屏蔽中斷請求信號可屏蔽中斷請求信號CLK 時(shí)鐘信號時(shí)鐘信號 RESET 復(fù)位信號:從復(fù)位信號:從FFFF0H始始 其余清零其余清零READY 準(zhǔn)備好信號準(zhǔn)備好信號TEST 檢測信號檢測信號 RD 讀選通信號讀選通信號 BHE/S7 總線高字節(jié)有效總線高字節(jié)有效/狀態(tài)輸出信號狀態(tài)輸出信號MN/MX 最小最小/最大模式最大模式 M/IO 存儲器存儲器/IO控制信號控制信號 S2 總線

18、周期狀態(tài)信號總線周期狀態(tài)信號 WR 寫選通信號寫選通信號 LOCK 鎖定信號鎖定信號 INTA 中斷響應(yīng)信號中斷響應(yīng)信號 QS1 指令隊(duì)列狀態(tài)信號指令隊(duì)列狀態(tài)信號 ALE 地址鎖存允許信號地址鎖存允許信號 QS0 指令隊(duì)列狀態(tài)信號指令隊(duì)列狀態(tài)信號 DT/R 數(shù)據(jù)收發(fā)信號數(shù)據(jù)收發(fā)信號 S1 總線周期狀態(tài)信號總線周期狀態(tài)信號 DEN 數(shù)據(jù)允許信號數(shù)據(jù)允許信號 S0 總線周期狀態(tài)信號總線周期狀態(tài)信號 HOLD 總線保持請求信號總線保持請求信號 RQ/GT0總線請求輸入信號總線請求輸入信號 HLDA 總線保持響應(yīng)信號總線保持響應(yīng)信號 RQ/GT1總線請求輸入信號總線請求輸入信號AD15AD0 雙向三態(tài)

19、雙向三態(tài)A、D總線總線A19/S6A16/S3 三態(tài)三態(tài)A輸出總線,輸出總線, S6:始終為低:始終為低 S3: S5:FR中中IF的狀態(tài)的狀態(tài) S4:選擇段寄存器選擇段寄存器單獨(dú)使用時(shí):173.2 8086存儲器組織存儲器組織 8086系統(tǒng)中,最大為系統(tǒng)中,最大為1MB的存儲空間分成兩個存儲體:的存儲空間分成兩個存儲體:偶地址存儲體和奇地址存儲體,最大分別為偶地址存儲體和奇地址存儲體,最大分別為512KB。 奇地址存儲體(高字節(jié))CPU8086地址鎖存器偶地址存儲體(低字節(jié))地址總線數(shù)據(jù)總線D15D0D15D8D7D0A0A19A1BHEBHEA0A19A1最大512KB最大512KBInt

20、el8086 16位微機(jī)系統(tǒng)的內(nèi)存組織 3.2.1 存儲器組織結(jié)構(gòu)存儲器組織結(jié)構(gòu) 18當(dāng)當(dāng)A0=0時(shí),選擇訪問偶地址存儲體,偶地址存儲體與數(shù)時(shí),選擇訪問偶地址存儲體,偶地址存儲體與數(shù)據(jù)總線低據(jù)總線低8位相連,從低位相連,從低8位數(shù)據(jù)總線讀位數(shù)據(jù)總線讀/寫一個字節(jié)。寫一個字節(jié)。當(dāng)當(dāng)/BHE=0時(shí),選擇訪問奇地址存儲體,奇地址存儲體與時(shí),選擇訪問奇地址存儲體,奇地址存儲體與數(shù)據(jù)總線高數(shù)據(jù)總線高8位相連,從高位相連,從高8位數(shù)據(jù)總線讀位數(shù)據(jù)總線讀/寫一個字節(jié)。寫一個字節(jié)。當(dāng)當(dāng)A0=0,/BHE=0時(shí),訪問兩個存儲體,讀時(shí),訪問兩個存儲體,讀/寫一個字。寫一個字。A0和和/BHE功能組合見功能組合見P

21、20表表3.1。 存儲器中存放的信息稱為存儲單元的內(nèi)容,例如,存儲單元存儲器中存放的信息稱為存儲單元的內(nèi)容,例如,存儲單元00100H中的內(nèi)容為中的內(nèi)容為34H,表示為(,表示為(00100H)= 34H。一個字在存儲器中按相鄰兩個字節(jié)存放,。一個字在存儲器中按相鄰兩個字節(jié)存放,存入時(shí)存入時(shí)以低位字節(jié)在低地址,高位字節(jié)在高地址的次序存放以低位字節(jié)在低地址,高位字節(jié)在高地址的次序存放,字單元的地址以低位地址表,字單元的地址以低位地址表示。一個字可以從偶地址開始存放,也可以從奇地址開始存放。示。一個字可以從偶地址開始存放,也可以從奇地址開始存放。8086 CPU訪問存訪問存儲器時(shí),都是以字為單位進(jìn)

22、行的。當(dāng)儲器時(shí),都是以字為單位進(jìn)行的。當(dāng)CPU讀讀/寫一個字時(shí),如果字單元地址從偶地址寫一個字時(shí),如果字單元地址從偶地址開始,那么只需要訪問一次存儲器,低位字節(jié)在偶地址單元,高位字節(jié)在奇地址單開始,那么只需要訪問一次存儲器,低位字節(jié)在偶地址單元,高位字節(jié)在奇地址單元。如果字單元地址從奇地址開始,那么元。如果字單元地址從奇地址開始,那么CPU需要兩次訪問存儲器,第一次取奇地需要兩次訪問存儲器,第一次取奇地址上數(shù)據(jù)(忽略偶地址的址上數(shù)據(jù)(忽略偶地址的8位數(shù)據(jù)),第一次取偶地址上數(shù)據(jù)(忽略奇地址的位數(shù)據(jù)),第一次取偶地址上數(shù)據(jù)(忽略奇地址的8位數(shù)位數(shù)據(jù)),因此為了加快程序運(yùn)行速度,編程時(shí)注意從存儲器

23、偶地址開始存放字?jǐn)?shù)據(jù),據(jù)),因此為了加快程序運(yùn)行速度,編程時(shí)注意從存儲器偶地址開始存放字?jǐn)?shù)據(jù),這種存放方式也稱作這種存放方式也稱作“對準(zhǔn)存放對準(zhǔn)存放”。 193.2.2 存儲器地址的分段存儲器地址的分段 8086CPU對外20位地址線,因此,存儲器的可尋址范圍為1MB,但是8086微處理器的內(nèi)部結(jié)構(gòu)是16位的,用戶可用的寄存器也都是16位(64KB)的,顯然用16位的地址碼無法尋址1MB的存儲空間,如果才能做到?8086采用了分段尋址的方式對存儲器進(jìn)行管理。 8086采用分段訪存機(jī)制,物理地址(PA)為20位,是通過16位的段地址寄存器和16位的偏移地址寄存器運(yùn)算得到:20位物理地址=16位段

24、地址16(或10H)+16位偏移地址 208086物理地址的生成:物理地址的生成:物理地址物理地址PA=段寄存器段寄存器16+偏移地址(有效地址偏移地址(有效地址EA)邏輯地址邏輯地址LA表示方法表示方法 段寄存器:偏移地址段寄存器:偏移地址21段地址與段基地址的關(guān)系:段地址段地址與段基地址的關(guān)系:段地址16(或(或10H)=段基地段基地址址段基地址或稱為段起始地址簡稱為段基地址或稱為段起始地址簡稱為段基址段基址。段地址為。段地址為16位,位,段基址為段基址為20位,段基址的低位,段基址的低4位全為位全為0。偏移地址(又稱有效地址、偏移地址(又稱有效地址、EA)表示離段基址之間的距離,)表示離

25、段基址之間的距離,用字節(jié)數(shù)表示。如偏移地址用字節(jié)數(shù)表示。如偏移地址=0064H,表示該地址距離段起始表示該地址距離段起始地址有地址有100個字節(jié),偏移地址為個字節(jié),偏移地址為0就表示該地址為段起始地址就表示該地址為段起始地址即段基址。即段基址。由段地址(段寄存器的內(nèi)容)和偏移地址兩部分構(gòu)成了存由段地址(段寄存器的內(nèi)容)和偏移地址兩部分構(gòu)成了存儲器的邏輯地址(儲器的邏輯地址(LA),用段地址:偏移地址表示,如),用段地址:偏移地址表示,如CS:IP,DS:EA等。若等。若DS=8100H,EA=2000H,其邏輯地址,其邏輯地址LA表示為表示為8100H:2000H。物理地址(物理地址(PA)為

26、)為20位,為存儲器的絕對地址,是通過位,為存儲器的絕對地址,是通過16位的段地址寄存器和位的段地址寄存器和16位的偏移地址寄存器運(yùn)算得到:位的偏移地址寄存器運(yùn)算得到:20位位物理地址物理地址=16位段地址位段地址16(或(或10H)+16位偏移地址位偏移地址22例例3.1:若某數(shù)據(jù)存放的段地址為:若某數(shù)據(jù)存放的段地址為8100H,偏址為,偏址為34ABH,則其物理地址為則其物理地址為8100H16+34ABH=81000H+34ABH=844ABH。邏輯地址為邏輯地址為 8100H:34ABH。注意:由邏輯地址可得出唯一的物理地址,而由物理地址卻注意:由邏輯地址可得出唯一的物理地址,而由物理

27、地址卻不能導(dǎo)出唯一的邏輯地址。不能導(dǎo)出唯一的邏輯地址。段地址為段地址為1005H的存儲段的偏移地址可以是的存儲段的偏移地址可以是0000H到到FFFFH之間的任何整數(shù),所有的存儲段都如此,最大偏移量為之間的任何整數(shù),所有的存儲段都如此,最大偏移量為64KB。段寄存器給出了某特定存儲段的基地址,而偏移地。段寄存器給出了某特定存儲段的基地址,而偏移地址寄存器則給出了需要訪問的存儲單元相對于段基地址的偏址寄存器則給出了需要訪問的存儲單元相對于段基地址的偏移量。由于偏移地址寄存器是移量。由于偏移地址寄存器是16位的,因此每個存儲段的最位的,因此每個存儲段的最大容量是大容量是64KB??偩€接口單元內(nèi)建了

28、一個獨(dú)立的加法部件??偩€接口單元內(nèi)建了一個獨(dú)立的加法部件以完成物理地址的計(jì)算。段地址數(shù)值根據(jù)需要訪問代碼、數(shù)以完成物理地址的計(jì)算。段地址數(shù)值根據(jù)需要訪問代碼、數(shù)據(jù)或堆棧、附加段寄存器,分別從代碼段據(jù)或堆棧、附加段寄存器,分別從代碼段CS、數(shù)據(jù)段、數(shù)據(jù)段DS或或堆棧段堆棧段SS、附加段、附加段ES中選取,而偏移地址則可能來源于中選取,而偏移地址則可能來源于IP、BX、SI、DI、SP、BP或者或者16位立即數(shù),選擇的依據(jù)是不同位立即數(shù),選擇的依據(jù)是不同的尋址方式。的尋址方式。 2323基本概念:基本概念:段地址、段基地址、段基址段地址、段基地址、段基址 偏移地址、偏址偏移地址、偏址邏輯地址、物理

29、地址邏輯地址、物理地址默認(rèn)關(guān)系:IP CS BX、SI、DI或或16位數(shù)位數(shù)DS BP、SPSS DI(串指令)ES24圖3-7 存儲器采用段-偏址的組織模式253.2.3 CPU與存儲器的數(shù)據(jù)線及控制線的連接與存儲器的數(shù)據(jù)線及控制線的連接 圖3-8 8086的20位鎖存地址地址通過ALE信號加以鎖存 26圖3-9 8086的數(shù)據(jù)總線緩沖數(shù)據(jù)通過雙向緩沖74LS245和地址進(jìn)行分離 273.2.4 存儲器的分體結(jié)構(gòu)存儲器的分體結(jié)構(gòu) 8086是一款16位微處理器,因此可以在一次存儲或者IO操作中完成兩個字節(jié)數(shù)據(jù)的讀寫,但市面上存儲芯片的數(shù)據(jù)端口寬度都是8位的。顯然為了存儲16位數(shù)據(jù)需要兩片存儲芯

30、片,低字節(jié)存儲在第一片存儲芯片里,高字節(jié)存儲在第二片存儲芯片里。這樣,微處理器就可以在一個機(jī)器周期內(nèi)完成16位數(shù)據(jù)的讀寫操作。表表3-1 存儲體的選擇存儲體的選擇28 存儲空間中的某些單元被微處理器保留以支持某些特殊操作。這些單元包括FFFF0H到 FFFFFH,這些單元存儲了跳轉(zhuǎn)指令,跳轉(zhuǎn)進(jìn)入微處理器和I/O的初始化程序。單元00000H到003FFH被保留用于存儲中斷向量表,該中斷向量表支持256個中斷向量。每個中斷向量的內(nèi)容為中斷服務(wù)程序的始地址,包括 CS和 IP,共4個字節(jié),總共 256個中斷向量,因此合計(jì)需要1KB的存儲單元。 293.2.5 堆棧的概念堆棧的概念 堆棧是在存儲器中

31、開辟的一片數(shù)據(jù)存儲區(qū),用來存放需要堆棧是在存儲器中開辟的一片數(shù)據(jù)存儲區(qū),用來存放需要暫時(shí)保存的數(shù)據(jù)。這片存儲區(qū)的一端固定,另一端活動,且只暫時(shí)保存的數(shù)據(jù)。這片存儲區(qū)的一端固定,另一端活動,且只允許數(shù)據(jù)從活動端進(jìn)出。采用允許數(shù)據(jù)從活動端進(jìn)出。采用“先進(jìn)后出先進(jìn)后出(FILO)”的規(guī)則。的規(guī)則。堆棧段是由段定義的一個堆棧段是由段定義的一個Stack段,堆棧段容量小于等于段,堆棧段容量小于等于64KB。 堆棧操作以字為單位進(jìn)行,而且堆棧中的數(shù)據(jù)必須按規(guī)則字堆棧操作以字為單位進(jìn)行,而且堆棧中的數(shù)據(jù)必須按規(guī)則字存放。低字節(jié)在偶地址單元,高字節(jié)在奇地址單元。把數(shù)據(jù)推存放。低字節(jié)在偶地址單元,高字節(jié)在奇地址

32、單元。把數(shù)據(jù)推入堆棧為入堆棧為“壓入壓入”;從堆棧取數(shù)據(jù)稱為;從堆棧取數(shù)據(jù)稱為“彈出彈出”。“壓入壓入”數(shù)數(shù)據(jù)時(shí),先修改據(jù)時(shí),先修改SP的值,即將的值,即將(SP)2送送SP,然后再與,然后再與SS形成形成存儲器的物理地址,將數(shù)據(jù)存入。存儲器的物理地址,將數(shù)據(jù)存入?!皬棾鰪棾觥睌?shù)據(jù)時(shí),先從當(dāng)前數(shù)據(jù)時(shí),先從當(dāng)前SS和和SP形成的物理地址上取出數(shù)據(jù),然后修改形成的物理地址上取出數(shù)據(jù),然后修改SP,即將,即將(SP)2送送SP。堆棧操作是按。堆棧操作是按“后進(jìn)先出后進(jìn)先出(LOFI)”的規(guī)則進(jìn)行的。的規(guī)則進(jìn)行的。8086CPU設(shè)有專用的指令執(zhí)行設(shè)有專用的指令執(zhí)行“壓入壓入”和和“彈出彈出”的操作,的

33、操作,在這些指令中,在這些指令中,SP的修改是自動進(jìn)行的。的修改是自動進(jìn)行的。303.3 8086系統(tǒng)時(shí)鐘與指令周期系統(tǒng)時(shí)鐘與指令周期 計(jì)算機(jī)之所以能自動地工作,是因?yàn)镃PU能從存放程序的內(nèi)存里取出一條指令并執(zhí)行這條指令;緊接著又是取指令,執(zhí)行指令,如此周而復(fù)始,構(gòu)成了一個封閉的循環(huán)。除非遇到停機(jī)指令,否則這個循環(huán)將一直繼續(xù)下去。每條指令的解釋執(zhí)行過程包括取指令取指令和執(zhí)行指令執(zhí)行指令兩個步驟,CPU取出一條指令并執(zhí)行這條指令,都要完成一系列的操作,這一系列操作所需要的時(shí)間通常叫做一個指令周期指令周期。由于各種指令的操作功能不同,因此各種指令的指令周期是不盡相同的。例如,一條加法指令的指令周期

34、,同一條乘法指令的指令周期是不相同的。一個時(shí)鐘周期:控制微處理器工作的時(shí)鐘信號的一個周期。一個時(shí)鐘周期:控制微處理器工作的時(shí)鐘信號的一個周期。一個總線周期:一個總線周期:8086CPU通過總線對外部(存儲器或通過總線對外部(存儲器或I/O接口)進(jìn)行一次訪問所需的接口)進(jìn)行一次訪問所需的時(shí)間。時(shí)間。 一個指令周期:一個指令周期:CPU執(zhí)行某一條指令所需的時(shí)間(包括取指令的總線周期和執(zhí)行指令執(zhí)行某一條指令所需的時(shí)間(包括取指令的總線周期和執(zhí)行指令所代表的具體操作所需的時(shí)間)。所代表的具體操作所需的時(shí)間)。 8086基本的總線周期由4個時(shí)鐘周期組成,分別用T1、T2、T3、T4表示,稱為T1、T2、

35、T3、T4狀態(tài),T1狀態(tài),CPU輸出地址信號,T2、T3、T4狀態(tài)傳送數(shù)據(jù),如果在T2、T3、T4狀態(tài)無法完成數(shù)據(jù)傳送,就在T3與T4狀態(tài)之間插入Tw。對應(yīng)指令執(zhí)行的三個階段,指令周期一般分為:取指周期取指周期、取操作數(shù)周期取操作數(shù)周期和執(zhí)行周期執(zhí)行周期三個部分。 318086讀總線周期讀總線周期 8086最小模式下的讀總線周期328086寫總線周期寫總線周期 8086最小模式下的寫時(shí)序33(1)取指周期)取指周期取指周期是取出某條指令所需的時(shí)間。在取指周期中CPU主要完成兩個操作:1)按程序計(jì)數(shù)器PC的內(nèi)容取指令;2)形成后繼指令的地址。取指周期取指周期 = (指令的長度(指令的長度 / 存

36、儲字的長度)存儲字的長度) 主存的讀主存的讀/寫周期寫周期 我們可以用設(shè)計(jì)指令格式時(shí)縮短指令長度、設(shè)計(jì)主存時(shí)增加主存儲字字寬和采用快速的主存等措施來縮短取指周期,提高取指的速度。(2)取操作數(shù)周期)取操作數(shù)周期取操作數(shù)周期是為執(zhí)行指令而取操作數(shù)所需的時(shí)間。取操作數(shù)周期的長短與操作數(shù)的個數(shù)有關(guān)、與操作數(shù)所處的物理位置有關(guān)還與操作數(shù)的尋址方式有關(guān)。取操作數(shù)周期中應(yīng)完成的操作是,計(jì)算操作數(shù)地址并取出操作數(shù)。操作數(shù)有效地址的形成由尋址方式確定。尋址方式不同,有效地址獲得的方式不同、過程不同,提供操作數(shù)的途徑也不同。因此操作數(shù)周期所進(jìn)行的操作對不同的尋址方式是不相同的。 34(3)執(zhí)行周期)執(zhí)行周期執(zhí)行

37、周期是完成指令所規(guī)定的操作和送結(jié)果所需的時(shí)間。它與指令規(guī)定的操作復(fù)雜程序有關(guān),還與目的操作數(shù)的物理位置和尋址方式有關(guān)。狀態(tài)信息中的條件碼在執(zhí)行周期中存入程序狀態(tài)字PSW。若該指令是轉(zhuǎn)移指令,在該周期中還要生成轉(zhuǎn)移地址。指令周期常常用若干個CPU周期周期數(shù)來表示,CPU周期也稱為機(jī)器周期機(jī)器周期。由于CPU內(nèi)部的操作速度較快,而CPU訪問一次內(nèi)存所花的時(shí)間較長,因此通常用內(nèi)存中讀取一個指令字的最短時(shí)間來規(guī)定CPU周期。也就是說,一條指令的取出階段(通常稱為取指)需要一個CPU周期時(shí)間。而一個CPU周期時(shí)間又包含有若干個時(shí)鐘周期時(shí)鐘周期(通常稱為節(jié)拍脈沖或T周期,它是處理操作的最基本單位)。時(shí)鐘周

38、期是CPU的時(shí)間基準(zhǔn),由計(jì)算機(jī)的主時(shí)鐘脈沖決定,執(zhí)行每條指令和每個總線周期的一系列操作都是在時(shí)鐘脈沖的同步下進(jìn)行的。這些時(shí)鐘周期的總和則規(guī)定了一個CPU周期的時(shí)間寬度。圖3-13示出了采用定長CPU周期的指令周期示意圖。從這個例子知道,取出和執(zhí)行任何一條指令所需的最短時(shí)間為兩個CPU周期。也就是說,任何一條指令,它的指令周期至少需要兩個CPU周期,而復(fù)雜一些的指令周期,可能需要更多的CPU周期。 35在執(zhí)行指令的過程中,CPU要占用系統(tǒng)總線訪問內(nèi)存或外部設(shè)備,以便從內(nèi)存或外設(shè)接口中讀取指令或指令所需的操作數(shù)。CPU占用一次系統(tǒng)總線,進(jìn)行信息的輸入輸出所需要的時(shí)間稱為總線周期總線周期。每當(dāng)CPU

39、要從內(nèi)存或I/O端口存取一個字或字節(jié)數(shù)據(jù)時(shí),就需要一個總線周期。而每條指令的執(zhí)行過程至少需要一個總線周期(從內(nèi)存讀取一個字或字節(jié)的指令代碼),大多數(shù)指令都需要多個總線周期(讀指令代碼、讀操作數(shù)、存執(zhí)行結(jié)果等)。CPU在一個總線周期中訪問一次內(nèi)存或I/O端口,每一次訪問過程都需要多個基本步驟按照一定順序進(jìn)行,CPU在每一步發(fā)出不同的聯(lián)絡(luò)控制信號。因此,可以將每一個總線周期再具體劃分為若干個小的時(shí)鐘周期。 363.3.2 時(shí)序信號的作用與管理時(shí)序信號的作用與管理 8284A與8086的連接如下圖所示。外界送來的就緒信號RDY輸入8284A,經(jīng)時(shí)鐘的下降沿同步后,輸出READY信號作為8086的就緒

40、信號READY;同樣,外界送來的復(fù)位信號/RES輸入8284A,經(jīng)整形并由時(shí)鐘的下降沿同步后,輸出RESET信號作為8086的復(fù)位信號(其寬度不得小于4個時(shí)鐘周期)。因此,外界的RDY和RES信號可以在任何時(shí)刻發(fā)出,但送至CPU是都是經(jīng)過時(shí)鐘同步后的信號。 37圖3-14 時(shí)序波形圖383.4 8086 CPU的中斷系統(tǒng)的中斷系統(tǒng) 3.4.1 中斷處理過程中斷處理過程 中斷,是指CPU在執(zhí)行現(xiàn)行程序時(shí),為處理一些緊急發(fā)生的情況,暫時(shí)停止當(dāng)前程序,轉(zhuǎn)而對該緊急事件進(jìn)行處理,并在處理完后返回正常程序的過程。如下圖3-16所示,中斷可分為中斷請求、中斷判優(yōu)、中斷響應(yīng)、中斷處理和中斷返回等幾個階段 圖

41、3-16 CPU中斷處理過程 391、內(nèi)部中斷、內(nèi)部中斷 內(nèi)部中斷是由CPU內(nèi)部事件引起的中斷。如執(zhí)行一條軟件中斷指令或單步中斷標(biāo)志TF為1時(shí),執(zhí)行任意一條指令,都可引起中斷。因此內(nèi)部中斷也稱軟件中斷軟件中斷,包括溢出中斷、除法出錯中斷、單步中斷、斷點(diǎn)中斷4個由內(nèi)部硬件設(shè)置或自動引發(fā)的中斷和指令設(shè)置的中斷(內(nèi)部軟件中斷)。1)溢出中斷)溢出中斷溢出中斷是在執(zhí)行溢出中斷指令溢出中斷是在執(zhí)行溢出中斷指令I(lǐng)NTO時(shí),若溢出標(biāo)志時(shí),若溢出標(biāo)志OF為為1,產(chǎn)生一個向量,產(chǎn)生一個向量號為號為4的內(nèi)部中斷。溢出中斷為程序員提供一種處理算術(shù)運(yùn)算出現(xiàn)溢出的方法,的內(nèi)部中斷。溢出中斷為程序員提供一種處理算術(shù)運(yùn)算出

42、現(xiàn)溢出的方法,通常和帶符號數(shù)的加、減法指令一起使用。通常和帶符號數(shù)的加、減法指令一起使用。2)除法出錯中斷)除法出錯中斷除法出錯中斷是在執(zhí)行除法指令(無符號數(shù)除法指令除法出錯中斷是在執(zhí)行除法指令(無符號數(shù)除法指令DIV或帶符號數(shù)除法指令或帶符號數(shù)除法指令I(lǐng)DIV指令)時(shí),若除數(shù)為指令)時(shí),若除數(shù)為0或商大于目的寄存器所能表達(dá)的范圍(對帶符號數(shù),或商大于目的寄存器所能表達(dá)的范圍(對帶符號數(shù),單字節(jié)數(shù)為單字節(jié)數(shù)為-128+127,雙字節(jié)數(shù)為,雙字節(jié)數(shù)為-32768+32767,對無符號數(shù),單字節(jié)數(shù)為,對無符號數(shù),單字節(jié)數(shù)為0255,雙字節(jié)數(shù)為,雙字節(jié)數(shù)為065535,),產(chǎn)生一個向量號為,),產(chǎn)生

43、一個向量號為0的內(nèi)部中斷。的內(nèi)部中斷。0型中斷沒型中斷沒有相應(yīng)的中斷指令,也不由外部硬件電路引起,故也稱有相應(yīng)的中斷指令,也不由外部硬件電路引起,故也稱“自陷自陷”中斷。中斷。 403)單步中斷)單步中斷單步中斷是當(dāng)單步中斷標(biāo)志單步中斷是當(dāng)單步中斷標(biāo)志TF為為1時(shí),在每條指令執(zhí)行結(jié)束后,產(chǎn)生一個向量時(shí),在每條指令執(zhí)行結(jié)束后,產(chǎn)生一個向量號為號為1的內(nèi)部中斷。的內(nèi)部中斷。在中斷過程中,在中斷過程中,CPU自動把標(biāo)志寄存器自動把標(biāo)志寄存器FR壓入堆棧,然后把壓入堆棧,然后把TF和和IF清零,以清零,以正常方式工作,中斷過程結(jié)束時(shí),從堆棧中自動彈出標(biāo)志寄存器正常方式工作,中斷過程結(jié)束時(shí),從堆棧中自動

44、彈出標(biāo)志寄存器FR的內(nèi)容,的內(nèi)容,TF恢復(fù)為恢復(fù)為1,又恢復(fù)單步中斷工作方式。,又恢復(fù)單步中斷工作方式。單步中斷是為調(diào)試程序而設(shè)置的。如單步中斷是為調(diào)試程序而設(shè)置的。如DEBUG中的跟蹤命令,就是將中的跟蹤命令,就是將TF=1。8086沒有直接對沒有直接對TF置置1或清或清0的命令,可修改存放在堆棧中標(biāo)志內(nèi)容,再通過的命令,可修改存放在堆棧中標(biāo)志內(nèi)容,再通過POPF指令改變指令改變TF的值。的值。4)斷點(diǎn)中斷)斷點(diǎn)中斷斷點(diǎn)中斷是指令中斷中的一個特殊的單字節(jié)斷點(diǎn)中斷是指令中斷中的一個特殊的單字節(jié)INT3指令中斷,執(zhí)行一個指令中斷,執(zhí)行一個INT3指指令,產(chǎn)生一個向量號為令,產(chǎn)生一個向量號為3的內(nèi)

45、部中斷。斷點(diǎn)中斷常用于設(shè)置斷點(diǎn),停止正常程序的內(nèi)部中斷。斷點(diǎn)中斷常用于設(shè)置斷點(diǎn),停止正常程序的執(zhí)行,轉(zhuǎn)去執(zhí)行某種類型的特殊處理,用于調(diào)試程序。的執(zhí)行,轉(zhuǎn)去執(zhí)行某種類型的特殊處理,用于調(diào)試程序。5)指令中斷)指令中斷指令中斷是執(zhí)行指令中斷是執(zhí)行INT n時(shí),產(chǎn)生一個向量號為時(shí),產(chǎn)生一個向量號為n的內(nèi)部中斷,為兩字節(jié)指令,的內(nèi)部中斷,為兩字節(jié)指令,INT3除外。除外。INT n主要用于系統(tǒng)定義或用戶自定義的軟件中斷,如主要用于系統(tǒng)定義或用戶自定義的軟件中斷,如BIOS功能調(diào)用功能調(diào)用和和DOS功能調(diào)用。功能調(diào)用。-第四章介紹第四章介紹內(nèi)部中斷向量號除指令中斷由指令指定外,其余都是預(yù)定好的,因此都不

46、需要內(nèi)部中斷向量號除指令中斷由指令指定外,其余都是預(yù)定好的,因此都不需要傳送中斷向量號,也不需要中斷響應(yīng)周期。傳送中斷向量號,也不需要中斷響應(yīng)周期。 412、外部中斷、外部中斷外部中斷也叫硬件中斷,是外部中斷也叫硬件中斷,是CPU外部中斷請求信號引腳上輸外部中斷請求信號引腳上輸入有效的中斷請求信號引起的,分為非屏蔽中斷入有效的中斷請求信號引起的,分為非屏蔽中斷NMI和可屏蔽中和可屏蔽中斷斷INTR二種。二種。1)非屏蔽中斷)非屏蔽中斷NMI非屏蔽中斷非屏蔽中斷NMI是由是由NMI引腳上輸入有效的中斷請求信號引起引腳上輸入有效的中斷請求信號引起的一個向量號為的一個向量號為2的中斷。的中斷。NMI

47、用來通知用來通知CPU發(fā)生了致命性事件,發(fā)生了致命性事件,如電源掉電、存儲器讀寫錯、總線奇偶位錯等。如電源掉電、存儲器讀寫錯、總線奇偶位錯等。NMI是不可用軟是不可用軟件屏蔽的,而且是上升沿觸發(fā)的,中斷類型號預(yù)定為件屏蔽的,而且是上升沿觸發(fā)的,中斷類型號預(yù)定為2,不需要,不需要中斷響應(yīng)周期。在中斷響應(yīng)周期。在IBM PC系列機(jī)中,系列機(jī)中,NMI用于處理存儲器奇偶用于處理存儲器奇偶校驗(yàn)錯、校驗(yàn)錯、I/O通道奇偶校驗(yàn)錯以及通道奇偶校驗(yàn)錯以及8087協(xié)處理器異常中斷等。協(xié)處理器異常中斷等。 422)可屏蔽中斷)可屏蔽中斷INTRCPU的的INTR引腳通常由引腳通常由8259A PIC的的INT輸出

48、信號驅(qū)動,輸出信號驅(qū)動,8259A又與需又與需要請求中斷的外設(shè)相連。在外設(shè)發(fā)出中斷請求信號時(shí)要請求中斷的外設(shè)相連。在外設(shè)發(fā)出中斷請求信號時(shí)8259A根據(jù)優(yōu)先權(quán)和根據(jù)優(yōu)先權(quán)和屏蔽狀態(tài),決定是否發(fā)出屏蔽狀態(tài),決定是否發(fā)出INT信號。外設(shè)的中斷請求信號必須在中斷請求信號。外設(shè)的中斷請求信號必須在中斷請求信號被接受前保持有效。而信號被接受前保持有效。而CPU對對INTR信號是在每條指令的最后一個時(shí)信號是在每條指令的最后一個時(shí)鐘周期采樣的。鐘周期采樣的。接到有效的接到有效的INTR信號后,信號后,CPU是否響應(yīng)該中斷請求,取決于中斷允許是否響應(yīng)該中斷請求,取決于中斷允許標(biāo)志位標(biāo)志位IF的狀態(tài)。若的狀態(tài)。

49、若IF=1,CPU開放中斷,則響應(yīng),否則不響應(yīng)。因此,開放中斷,則響應(yīng),否則不響應(yīng)。因此,要響應(yīng)要響應(yīng)INTR的中斷請求,的中斷請求,CPU必須開放中斷。必須開放中斷。8086設(shè)有對中斷標(biāo)志位設(shè)有對中斷標(biāo)志位IF置置1或清或清0的指令,的指令,STI指令給指令給IF置置1,CPU開開中斷;中斷;CLI指令給指令給IF清清0,CPU關(guān)中斷。關(guān)中斷。除了除了CPU開、關(guān)中斷之外,外設(shè)的中斷請求是否被傳送到開、關(guān)中斷之外,外設(shè)的中斷請求是否被傳送到CPU還受到還受到中斷控制器的控制,如中斷控制器的控制,如8259A設(shè)有中斷屏蔽寄存器,可對接于其上的每一設(shè)有中斷屏蔽寄存器,可對接于其上的每一個外設(shè)的中

50、斷請求屏蔽或開放,有選擇地允許中斷響應(yīng)。中斷屏蔽寄存器個外設(shè)的中斷請求屏蔽或開放,有選擇地允許中斷響應(yīng)。中斷屏蔽寄存器的內(nèi)容可以由的內(nèi)容可以由CPU通過命令寫入。如果出現(xiàn)中斷嵌套的情況,只有滿足通過命令寫入。如果出現(xiàn)中斷嵌套的情況,只有滿足中斷嵌套條件才能發(fā)出中斷請求信號。中斷嵌套條件才能發(fā)出中斷請求信號。8086中斷優(yōu)先級由高到低依次為軟件中斷(單步中斷除外)、非屏蔽中斷優(yōu)先級由高到低依次為軟件中斷(單步中斷除外)、非屏蔽中斷中斷NMI、可屏蔽中斷、可屏蔽中斷INTR、單步中斷。、單步中斷。 433.4.2 中斷向量表中斷向量表 中斷向量表又稱中斷服務(wù)程序入口地址表。中斷向量表又稱中斷服務(wù)程

51、序入口地址表。 各個中斷處理程序的段地址與偏移量按中斷向量號順序各個中斷處理程序的段地址與偏移量按中斷向量號順序存入中斷向量表中(每個中斷向量號占存入中斷向量表中(每個中斷向量號占4 4個字節(jié))。個字節(jié))。 8086中斷系統(tǒng)采用的是向量型中斷方式,每個中斷中斷系統(tǒng)采用的是向量型中斷方式,每個中斷源都有一個為它服務(wù)的中斷服務(wù)程序。源都有一個為它服務(wù)的中斷服務(wù)程序。8086最多能管理最多能管理256個中斷,對應(yīng)類型號為個中斷,對應(yīng)類型號為00FFH,稱為中斷類型號或中斷向,稱為中斷類型號或中斷向量號,是識別中斷源的唯一標(biāo)志。量號,是識別中斷源的唯一標(biāo)志。每一個中斷服務(wù)程序都有一個確定的入口地址,該

52、地址稱每一個中斷服務(wù)程序都有一個確定的入口地址,該地址稱為中斷向量。把系統(tǒng)中所有中斷向量集中起來,按中斷類為中斷向量。把系統(tǒng)中所有中斷向量集中起來,按中斷類型號從小到大的順序存放到存儲器的某一區(qū)域內(nèi),這個存型號從小到大的順序存放到存儲器的某一區(qū)域內(nèi),這個存放中斷向量的存儲區(qū)叫做中斷向量表,亦即中斷入口地址放中斷向量的存儲區(qū)叫做中斷向量表,亦即中斷入口地址表。表。44類型0中斷入口(除法出錯)類型1中斷入口(單步中斷)類型2中斷入口(NMI)類型3中斷入口(斷點(diǎn)中斷)類型4中斷入口(溢出中斷)類型5中斷入口類型31中斷入口類型32中斷入口類型255中斷入口1587000000400800C010

53、01407F0803FC供用戶使用系統(tǒng)備用專用中斷IPCSIPCSIPCS8086 中斷向量表 45每個中斷向量占用4個存儲單元,4個單元中的前2個單元存放的是中斷服務(wù)程序所在段內(nèi)的偏移量(IP的內(nèi)容,16位地址),低位字節(jié)存放在低地址,高位字節(jié)存放在高地址;后2個單元存放的是中斷服務(wù)程序所在段的段地址(CS的內(nèi)容,16位地址),存放方法與前2個單元相同。CPU響應(yīng)中斷時(shí),從中斷向量表中查出中斷向量地址,再從該地址中取出內(nèi)容分別裝入IP和CS,從而轉(zhuǎn)去執(zhí)行相應(yīng)的中斷服務(wù)程序。中斷向量在表中的位置稱為中斷向量地址,中斷向量地址與中斷類型號的關(guān)系為:中斷向量地址(首地址)中斷向量地址(首地址)=

54、中斷中斷類型號類型號 4因此由中斷類型號n4即得到相應(yīng)中斷向量的地址,取4n和4n+1單元中的內(nèi)容(中斷入口段內(nèi)偏移地址)裝入指令指針寄存器IP,取4n+2和4n+3單元中內(nèi)容(中斷入口段地址)裝入代碼段寄存器CS,即可轉(zhuǎn)入中斷處理程序。46INT 72HMOV AX, BX向量地址=72H4=1C8H1C8H1C9H1CAH1CBH1CCH1C4HMEMORYMEMORY502000A0向量73H入口地址向量71H入口地址2050A000IPCSA000:2050中斷服務(wù)程序IRET例例3.2 某中斷類型號為某中斷類型號為72H,下圖表示出了中斷操作過程:,下圖表示出了中斷操作過程: 1、取

55、中斷向量號2、計(jì)算中斷向量地址3、中斷服務(wù)入口地址送入IP4、轉(zhuǎn)中斷服務(wù)程序5、中斷返回至INT n 指令的下一條指令47中斷向量的設(shè)置中斷向量的設(shè)置向量號04用于除法出錯、單步中斷、NMI中斷、斷點(diǎn)中斷、溢出中斷。向量號57系統(tǒng)使用 、 8H0FH用于主片8279A, 10H1FH為BIOS專用中斷向量號、20 3FH為DOS中斷向量號。向量號7077H用于從片8279A,8085H用于BASIC程序。對于用戶定義的中斷調(diào)用,除設(shè)計(jì)好中斷服務(wù)程序外,還必對于用戶定義的中斷調(diào)用,除設(shè)計(jì)好中斷服務(wù)程序外,還必須把中斷服務(wù)程序入口地址放置到與中斷類型號相應(yīng)的中斷須把中斷服務(wù)程序入口地址放置到與中斷

56、類型號相應(yīng)的中斷向量表中,具體方法有:向量表中,具體方法有:(1)在程序設(shè)計(jì)時(shí)定義格式的數(shù)據(jù)段;)在程序設(shè)計(jì)時(shí)定義格式的數(shù)據(jù)段;(2)用數(shù)據(jù)傳送指令來設(shè)置;)用數(shù)據(jù)傳送指令來設(shè)置; (3)利用)利用DOS功能調(diào)用來實(shí)現(xiàn)功能調(diào)用來實(shí)現(xiàn) 。483.5 8086CPU與存儲器組織及與存儲器組織及I/O連接連接3.5.1、存儲器、存儲器、I/O的地址譯碼器的地址譯碼器存儲器的接口信號存儲器的接口信號存儲器通過總線與存儲器通過總線與CPU連接。連接。CPU與存儲器之與存儲器之間要交換地址信息、數(shù)間要交換地址信息、數(shù)據(jù)信息和控制信息。據(jù)信息和控制信息。 A0A16XTACK/WAITCSSIZEMRDMW

57、RD0D7存儲器的接口信號 49存儲器設(shè)計(jì)需要考慮的問題存儲器設(shè)計(jì)需要考慮的問題 1存儲器容量2存儲空間的安排3總線上的存儲器存取信號及時(shí)序4數(shù)據(jù)總線寬度50存儲器容量的擴(kuò)展存儲器的容量:字?jǐn)?shù)2(地址線)位數(shù) 位擴(kuò)展:將多片存儲器經(jīng)適當(dāng)?shù)倪B接,組成位數(shù)增 多、字?jǐn)?shù)不變的存儲器。 方法:用同一地址信號控制 n n個相同字?jǐn)?shù)的RAM/ROMRAM/ROM。51 例:將2561的RAM擴(kuò)展為 2568的RAM。 即將8塊2561的RAM的所有地址線和CS(片選 線)分別對應(yīng)并接在一起,而每一片的位輸出作為整個 RAM輸出的一位。 2568的的RAM需2561RAM的芯片數(shù)為:812568256一片存

58、儲容量總存儲容量N將2561的RAM擴(kuò)展為2568的RAM52(2)字?jǐn)U展: 將多片存儲器經(jīng)適當(dāng)?shù)倪B接,組成字?jǐn)?shù)更多,而位 數(shù)不變的存儲器。 例:由102410248 8的 RAMRAM擴(kuò)展為409640968 8的RAM。 共需四片102410248 8的 RAMRAM芯片。 102410248 8的 RAMRAM有1010根地址輸入線A A9 9A A0 0。 409640968 8的RAMRAM有1212根地址輸入線A A1111A A0 0。選用2 2線-4 4線譯碼器,將輸入接高位地址A A1111、A A1010,輸出分別控制四片RAMRAM的片選端。 53由10248的 RAM擴(kuò)

59、展為40968的RAM54(3) 字位擴(kuò)展 例:將102410244 4的RAMRAM擴(kuò)展為204820488 RAM8 RAM。 位擴(kuò)展需2 2片芯片,字?jǐn)U展需2 2片芯片,共需4 4片芯片。字?jǐn)U展只增加一條地址輸入線A A1010,可用一反相器便能實(shí)現(xiàn)對兩片RAMRAM片選端的控制。 字?jǐn)U展是對存儲器輸入端口的擴(kuò)展, 位擴(kuò)展是對存儲器輸出端口的擴(kuò)展。 當(dāng) 位線和字線都需要擴(kuò)展時(shí),一般是先進(jìn)行位擴(kuò)展,然后再進(jìn)行字?jǐn)U展。 55將10244的RAM擴(kuò)展為20488 RAM561.利用門電路進(jìn)行地址譯碼 AENA3A4A5A6A7A8A974LS32IORCS口地址:348H34FHIORAENA

60、0A1A2A3A4A5A6A7A8A9Y74LS3274LS3074LS20口地址2F4H (a a) I/OI/O端口部分譯碼電路示意圖端口部分譯碼電路示意圖 (b b) I/OI/O端口全譯碼電路示意圖端口全譯碼電路示意圖 572.利用譯碼器進(jìn)行地址譯碼 利用譯碼器芯片(例如利用譯碼器芯片(例如74LS138譯碼器)對譯碼器)對地址信號進(jìn)行譯碼,譯碼器芯片有地址信號進(jìn)行譯碼,譯碼器芯片有2:4,3:8,4:16等各種規(guī)格。等各種規(guī)格。 585960利用譯碼器進(jìn)行譯碼的全譯碼電路利用譯碼器進(jìn)行譯碼的全譯碼電路 61存儲器設(shè)計(jì)舉例存儲器設(shè)計(jì)舉例 例3.3 在8位數(shù)據(jù)總線上用62256擴(kuò)充64K

溫馨提示

  • 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

提交評論