中斷與中斷管理_第1頁
中斷與中斷管理_第2頁
中斷與中斷管理_第3頁
中斷與中斷管理_第4頁
中斷與中斷管理_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第 9 章中斷與中斷管理本 章 要 點(diǎn)n 中斷的基本概念中斷的基本概念n 8086 CPU8086 CPU的中斷系統(tǒng)的中斷系統(tǒng)n 中斷服務(wù)程序的編寫中斷服務(wù)程序的編寫9.1 中斷原理 什么是中斷 中斷就是CPU暫停執(zhí)行現(xiàn)行的程序,轉(zhuǎn)而處理隨機(jī)事件,處理完畢后再回到被中斷的程序繼續(xù)執(zhí)行,這一過程稱為中斷。中斷系統(tǒng)具有以下基本功能: 為了加強(qiáng)中斷系統(tǒng)的靈活性,對于各種中斷請求,應(yīng)該具有屏蔽和開放的功能,使得程序員可以靈活控制。 具有“中斷級(jí)別”的判斷和控制功能,即能實(shí)現(xiàn)中斷源排隊(duì)。當(dāng)有多個(gè)中斷源申請中斷時(shí),能根據(jù)事先的設(shè)定及時(shí)響應(yīng)中斷。 能實(shí)現(xiàn)中斷嵌套,即高級(jí)別的中斷能中斷較低級(jí)別的中斷。 系統(tǒng)響

2、應(yīng)中斷后,能自動(dòng)進(jìn)行中斷處理。當(dāng)中斷處理完后能自動(dòng)返回。中斷主要解決的問題1實(shí)現(xiàn)分時(shí)操作,解決CPU與外部設(shè)備速度上的差異,提高計(jì)算機(jī)系統(tǒng)的工作效率,達(dá)到并行處理的目的。2處理隨機(jī)的異常事件,如運(yùn)算結(jié)果溢出、機(jī)器故障等。3實(shí)現(xiàn)實(shí)時(shí)操作,在控制系統(tǒng)中許多信號(hào)是隨機(jī)產(chǎn)生的,只有通過中斷系統(tǒng)才能實(shí)時(shí)的對它們進(jìn)行處理,避免信息的丟失。中斷源:中斷源:引發(fā)CPU中斷的來源稱為中斷源 中斷響應(yīng):中斷響應(yīng):接受中斷請求中斷向量:中斷向量:中斷服務(wù)子程序的入口地址中斷向量表:中斷向量表:存放中斷向量的內(nèi)存區(qū)域(00000H003FFH)中斷優(yōu)先權(quán):中斷優(yōu)先權(quán):有多個(gè)中斷源請求中斷時(shí), 系統(tǒng)響應(yīng)中斷申請的級(jí)別中

3、斷屏蔽中斷屏蔽 :由軟件設(shè)置,使中斷請求不能被響應(yīng),稱為中斷屏蔽。9.2.19.2.1 與中斷有關(guān)的觸發(fā)器9.2 中斷系統(tǒng)組成及其功能中斷系統(tǒng)組成及其功能n中斷請求觸發(fā)器n中斷屏蔽觸發(fā)器(屏蔽單個(gè)I/O中斷請求)n中斷允許觸發(fā)器 (屏蔽全部I/O中斷請求)D QCLK Q RD+5V狀態(tài)線中斷請求外設(shè)讀、 寫操作中斷請求信號(hào)產(chǎn)生電路中斷請求信號(hào)產(chǎn)生電路中斷請求觸發(fā)器中斷屏蔽觸發(fā)器與門中斷請求信號(hào)狀態(tài)線中斷屏蔽觸發(fā)器的作用中斷屏蔽觸發(fā)器的作用FRIF標(biāo)志寄存器標(biāo)志寄存器9.2.2 中斷條件n中斷允許觸發(fā)器(IF)處于開中斷狀態(tài)n中斷屏蔽寄存器(8259)處于非屏蔽狀態(tài)9.2.3 中斷處理過程中斷

4、過程中斷過程申請申請響應(yīng)響應(yīng)處理處理 中斷申請中斷申請 當(dāng)需要CPU中斷以處理一些緊急事件,向CPU發(fā)出的請求。引發(fā)CPU中斷的來源稱為中斷源 。 中斷響應(yīng)中斷響應(yīng) 為了及時(shí)處理中斷,中斷系統(tǒng)(或中斷裝置)定時(shí)查詢有無中斷申請,若有且未屏蔽,則引出處理中斷的程序稱為該中斷被響應(yīng)。 CPU響應(yīng)I/O中斷的三個(gè)條件: (1)無總線請求 (2)中斷允許 (3)CPU執(zhí)行完現(xiàn)行指令 中斷處理中斷處理 執(zhí)行相應(yīng)的中斷處理程序(例行中斷服務(wù)子程序)。CPU響應(yīng)中斷要自動(dòng)完成三件事:(1)關(guān)閉中斷(2)CS、IP及FR的內(nèi)容入棧(3)中斷服務(wù)程序的段地址送入CS,偏移地址送IP可屏蔽中斷處理流程開中斷關(guān)中斷

5、中斷服務(wù)子程序要做的6件事要解決的問題中斷源識(shí)別:確定中斷源、找到對應(yīng)中斷處理程序的入口地址中斷優(yōu)先權(quán):首先響應(yīng)優(yōu)先級(jí)高的中斷請求9.3 中斷源識(shí)別及中斷優(yōu)先權(quán)1.軟件查詢A0A15鎖鎖存存器器INTR三態(tài)三態(tài)緩沖器緩沖器譯碼譯碼 8001HD0D7中斷中斷0中斷中斷1中斷中斷2 :IOR查詢中斷接口電路 :IN AL,IPORTTEST AL,80HJNZ SEV0TEST AL,40HJNZ SEV1TEST AL,20HJNZ SEV2TEST AL,10HJNZ SEV3 :中斷源識(shí)別中斷源識(shí)別設(shè)備中斷申請信號(hào)中斷類型號(hào)中斷響應(yīng)信號(hào)2.矢量中斷E0中斷優(yōu)先權(quán)中斷優(yōu)先權(quán)n軟件方案:由程序

6、的查詢順序決定優(yōu)先級(jí)n硬件方案1)鏈形電路CPUINTAINTR設(shè)備1設(shè)備2設(shè)備3接口1接口2接口3中斷回答中斷請求菊花鏈邏輯電路菊花鏈邏輯電路菊花鏈優(yōu)先查詢法硬件查詢優(yōu)先級(jí)方式菊花鏈法2)編碼電路9.4 8086CPU中斷系統(tǒng) 8086的中斷系統(tǒng)采用向量中斷機(jī)制 能夠處理256個(gè)中斷 用中斷類型號(hào)0255區(qū)別 可屏蔽中斷還需要借助專用中斷控制器Intel 8259A實(shí)現(xiàn)優(yōu)先權(quán)管理中斷源中斷源外部中斷外部中斷內(nèi)部中斷內(nèi)部中斷硬件中斷硬件中斷軟件中斷軟件中斷可屏蔽中斷可屏蔽中斷不可屏蔽中斷不可屏蔽中斷 8086中斷分類不可屏蔽中斷不可屏蔽中斷源源中斷邏輯中斷邏輯INTO指令指令單步單步中斷中斷除

7、法除法錯(cuò)誤錯(cuò)誤INT n指令指令CPUINTRNMI可屏蔽中斷源可屏蔽中斷源8259A中斷中斷控制器控制器IR0IR1IR2IR3IR4IR5IR6IR7外外設(shè)設(shè)中中斷斷源源 INTA8086中斷源內(nèi)部中斷(軟件中斷)外部中斷(硬件中斷)19C類型67H中斷向量1A050201A200A01A4類型69H中斷向量STIPUSH DS : :IRET中斷處理程序A000:2050INT 68HMOV AX,0向量地址68H41A0HIPCS2050A000中斷操作過程例子中斷操作過程例子外部中斷(硬件中斷) 外部中斷是由于CPU外部提出中斷請求引起的程序中斷,也稱為硬件中斷。 不可屏蔽中斷:類型

8、號(hào)為2 外部通過非屏蔽中斷NMI請求,必須響應(yīng) 非屏蔽中斷主要用于處理系統(tǒng)的意外或故障 可屏蔽中斷:類型號(hào)來自中斷控制器 外部通過可屏蔽中斷INTR請求,由IF控制是否響應(yīng);響應(yīng)時(shí)產(chǎn)生INTA信號(hào) 可屏蔽中斷主要用于與外設(shè)交換數(shù)據(jù)u中斷標(biāo)志IF的狀態(tài) IF=0:可屏蔽中斷不會(huì)被響應(yīng) 關(guān)中斷、禁止中斷、中斷屏蔽 系統(tǒng)復(fù)位,使IF0 任何一個(gè)中斷被響應(yīng),使IF0 執(zhí)行指令CLI,使IF0 IF1:可屏蔽中斷會(huì)被響應(yīng) 開中斷、允許中斷、中斷開放 執(zhí)行指令STI,使IF1 執(zhí)行指令I(lǐng)RET恢復(fù)原IF狀態(tài)內(nèi)部中斷(軟件中斷) 內(nèi)部中斷是由于CPU內(nèi)部執(zhí)行程序出現(xiàn)異常引起的程序中斷,所以又稱軟件中斷。內(nèi)部

9、中斷的中內(nèi)部中斷的中斷類型號(hào)已定斷類型號(hào)已定(內(nèi)部中斷是不可屏蔽的內(nèi)部中斷是不可屏蔽的) 除法錯(cuò)中斷:類型號(hào)為0 指令中斷:類型號(hào)為n 斷點(diǎn)中斷:類型號(hào)為3 溢出中斷:類型號(hào)為4 單步中斷:類型號(hào)為1軟件中斷 由中斷指令I(lǐng)NT引起的中斷 由CPU運(yùn)算錯(cuò)誤引起的中斷 由Debug設(shè)置的中斷DATA SEGMENT ADD1 DB ? ADD2 DB ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV AX,0 MOV ES,AX MOV DI,4*4 MOV AX,OFFSET INT01 C

10、LD STOSW MOV AX,SEG INT01 STOSW MOV BL,0 MOV AL,ADD1 ADD AL,ADD2 INTO MOV AL,BL MOV AX,4C00H INT 21H HLTINT01 PROC PUSH AX MOV BL,0FFH POP AX IRETINT01H ENDPCODE ENDS END START例:軟件中斷P238 內(nèi)部中斷內(nèi)部中斷 除法錯(cuò)中斷 指令中斷 溢出中斷 不可屏蔽中斷(不可屏蔽中斷(NMI) 可屏蔽中斷可屏蔽中斷 (INTR) 單步中斷單步中斷高低9.5.1 8086CPU的中斷處理順序的中斷處理順序9.5 8086的中斷管理的

11、中斷管理NMIN內(nèi)部中斷內(nèi)部中斷INTRTF=1中斷響應(yīng)周期中斷響應(yīng)周期讀中斷類型號(hào)讀中斷類型號(hào)下條指令下條指令現(xiàn)行指令現(xiàn)行指令I(lǐng)F1NNNNYYYYY中斷響應(yīng)過程Y還有還有NMITEMP1標(biāo)志寄存器入棧標(biāo)志寄存器入棧TEMPTF,IFTF0CS:IP入棧入棧獲取中斷向量獲取中斷向量執(zhí)行服務(wù)程序執(zhí)行服務(wù)程序彈出彈出CS:IP彈出標(biāo)志寄存器彈出標(biāo)志寄存器返回被中斷程序返回被中斷程序NNY中斷響應(yīng)過程8086的中斷向量表 中斷向量:中斷服務(wù)程序的入口地址(首地址) 邏輯地址含有段地址CS和偏移地址IP(32位) 每個(gè)中斷向量的低字是偏移地址、高字是段地址,需占用4個(gè)字節(jié) 8086微處理器從物理地址

12、00000H開始,依次安排各個(gè)中斷向量。 256個(gè)中斷向量占用1KB區(qū)域,形成中斷向量表類型號(hào)為類型號(hào)為N的中斷向量在中斷向量表中的的中斷向量在中斷向量表中的物理地址物理地址N48086的中斷向量表000H類型號(hào)0的IP值除法錯(cuò)中斷(類型號(hào)0)單步中斷(類型號(hào)1)004H類型號(hào)0的CS值類型號(hào)1的IP值類型號(hào)1的CS值非屏蔽中斷(類型號(hào)2)008H類型號(hào)2的IP值類型號(hào)2的CS值3FCH類型號(hào)255的IP值用戶中斷(類型號(hào)255)類型號(hào)255的CS值執(zhí)行一條指令執(zhí)行一條指令中斷?中斷?關(guān)中斷關(guān)中斷保護(hù)現(xiàn)場保護(hù)現(xiàn)場屏蔽本級(jí)和低級(jí)中斷屏蔽本級(jí)和低級(jí)中斷開中斷開中斷中斷服務(wù)程序中斷服務(wù)程序關(guān)中斷關(guān)中

13、斷恢復(fù)現(xiàn)場恢復(fù)現(xiàn)場開中斷開中斷返回返回取下一條指令取下一條指令否否是是多個(gè)中斷源中斷流程圖多個(gè)中斷源中斷流程圖中斷優(yōu)先級(jí)和中斷嵌套中斷類型號(hào)的獲取 對除法錯(cuò)、單步中斷、NMI、斷點(diǎn)中斷、溢出中斷,CPU自動(dòng)提供中斷類型號(hào)04。 對INT n,中斷類型號(hào)由n確定。 對I/O中斷(由INTR引腳引入),通過8259獲得中斷類型號(hào)。 設(shè)置中斷向量 AL=中斷類型號(hào) DS:DX=中斷服務(wù)程序入口地址 AH=25H INT 21H 取中斷向量 AL=中斷類型號(hào) AH=35H INT 21H返回:ES:BX=中斷服務(wù)程序入口地址用系統(tǒng)調(diào)用:(P242)9.5.3 中斷入口地址中斷入口地址(中斷向量中斷向量

14、)設(shè)置設(shè)置MOV AL,1CHMOV AH,35HINT 21HPUSH ES;保存中斷向量PUSH BXPUSH DS;設(shè)置中斷向量MOV DX,OFFSET CLINT MOV AX,SEG CLINTMOV DS,AXMOV AL,1CHMOV AH,25HINT 21HPOP DS : POP DX;恢復(fù)中斷向量 POP DS MOV AL,1CH MOV AH,25H INT 21H :CLINT PROC FAR : IRETCLINT ENDPP244 CLI MOV AX,0 MOV ES,AX MOV DI,N*4 MOV AX,OFFSET INTRAD CLD STOSW

15、 MOV AX,SEG INTRAD STOSW :INTRAD PROC FAR : IRETINTRAD ENDP用串指令:(P262)內(nèi)部中斷服務(wù)程序 編寫內(nèi)部中斷服務(wù)程序與編寫子程序類似 利用過程定義偽指令PROC/ENDP 保護(hù)完現(xiàn)場后要用開中斷指令STI置IF=1 恢復(fù)現(xiàn)場前要用關(guān)中斷指令CLI置IF=0 最后用中斷返回指令I(lǐng)RET 通常采用寄存器傳遞參數(shù) 主程序需要調(diào)用中斷服務(wù)程序 調(diào)用前,需要設(shè)置中斷向量 利用INT n指令調(diào)用中斷服務(wù)程序例:內(nèi)部中斷服務(wù)程序 編寫80H號(hào)中斷服務(wù)程序 功能:顯示以“0”結(jié)尾字符串的功能 利用顯示器功能調(diào)用INT 21H的2號(hào)模塊 字符串緩沖區(qū)

16、首地址為入口參數(shù) DS:DX(段地址:偏移地址)傳遞參數(shù)Intoff dw ?Intseg dw ?Intmsg db A Instruction Interrupt ! db 0dh,0ah,0 : : mov al,80h : mov ah,35h;保存中斷向量 int 21h mov intoff,bx;保存偏移地址 mov intseg,es;保存段基地址 push ds mov dx,offset new80h;設(shè)置中斷向量 mov ax,seg new80h mov ds,ax mov ax,2580h int 21h pop ds mov dx,offset intmsg int 80h ;調(diào)用中斷服務(wù)程序mov dx,intoff mov ax,intseg mov ds,ax mov ax,2580h int 21h mov ax,4c00h int 21h : :New80h proc far push ax ;保護(hù)寄存器 push si sti ;開中斷 mov si,dxnew1: mov dl,si cmp dl,0 jz new2 mov ah,02h int 21h inc si jmp new1new2: cli ;關(guān)中斷

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論