第7章 中斷技術(shù)_第1頁
第7章 中斷技術(shù)_第2頁
第7章 中斷技術(shù)_第3頁
第7章 中斷技術(shù)_第4頁
第7章 中斷技術(shù)_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第7章

中斷技術(shù)第7章中斷技術(shù)教學(xué)重點

中斷概念中斷處理過程

8086中斷系統(tǒng)7.1中斷技術(shù)概述7.1.1中斷的概念什么是中斷?在CPU正常運行程序時,由于內(nèi)部或外部某個非預(yù)料事件的發(fā)生,使CPU暫停正在運行的程序,而轉(zhuǎn)去執(zhí)行處理引起中斷事件的程序,然后再返回被中斷了的程序,繼續(xù)執(zhí)行。這個過程就是中斷。

注意:

中斷是個過程(從中斷申請→CPU轉(zhuǎn)中斷服務(wù)→返回)

②中斷源(外設(shè))打斷CPU的正常工作,轉(zhuǎn)入中斷服務(wù)程序,完畢后,返回。

③嵌套斷點主程序中斷服務(wù)程序中斷請求對外設(shè)進行處理繼續(xù)執(zhí)行返回斷點中斷服務(wù)程序1中斷服務(wù)程序

2非預(yù)料事件1CPU執(zhí)行流程非預(yù)料事件

2采用中斷技術(shù)后微機的主要特點:

(1)可實現(xiàn)CPU與I/O設(shè)備并行工作。

(2)實現(xiàn)人機聯(lián)系。

(3)可進行實時處理。

(4)能及時處理各種故障。7.1.2中斷源與中斷分類

1.中斷源——引起中斷的原因,或發(fā)出中斷申請的來源。

中斷源有:

·

外部設(shè)備請求中斷(I/O設(shè)備,如鍵盤)

(1)外部中斷源

·實時時鐘請求中斷(如外部所需的定時 電路等) ·故障強迫中斷,如掉電等(2)內(nèi)部中斷源

·CPU指令執(zhí)行產(chǎn)生的異常

·執(zhí)行INT軟件中斷指令2.中斷分類傳統(tǒng)的分類:(1)內(nèi)部中斷——軟件中斷,由CPU執(zhí)行軟中斷指令引起。

INT21H(2)外部中斷——硬件中斷,由外部中斷源向CPU提出中斷請求而引起。外部中斷又可分為:

·可屏蔽中斷(INTR引腳)——可以在CPU內(nèi)部被屏蔽,CPU可以控制這種中斷響應(yīng)或不被響應(yīng)。

·

不可屏蔽中斷(NMI引腳)——中斷請求不能在CPU的內(nèi)部被屏蔽掉,它一經(jīng)提出CPU必須響應(yīng).2.中斷分類Pentium中的分類:中斷--傳統(tǒng)的外部中斷異常--傳統(tǒng)的內(nèi)部軟件中斷+執(zhí)行指令過程中產(chǎn)生的錯誤主要差別:中斷用來處理CPU以外的異常事件,異常用來處理在執(zhí)行指令期間由CPU本身對檢測出來的某些異常事情作出的響應(yīng)。2.中斷分類異常:失效--在引起失效的指令之前被檢測和處理,返回到該失效指令處,重新執(zhí)行該指令(除法出錯、缺頁等)陷阱--在引起問題(異常)的指令執(zhí)行之后才被報告,且服務(wù)程序完成后,返回到引起異常指令的下一條指令處繼續(xù)向下執(zhí)行。(單步、溢出、INT等)中止--不能確定引起異常指令確切位置的異常(有時稱為夭折或失敗)。(自動重啟系統(tǒng))1000:150H、、、、、、、、、、MOVAX,0ADDAX,DXMOV[DI],AX、、、、、、、、、、

PUSHAX

、、

、、

IRETCPU在執(zhí)行此指令時,某中斷源發(fā)申請中斷;CPU在執(zhí)行完該指令后,轉(zhuǎn)去執(zhí)行中斷子程地址1000:150H為斷點斷點概念:1000:150H、、、、、、、、、、MOVAH,01INT21HCMPAL,0Dh、、、、、、、、、、

PUSHAX

、、、、IRET用指令調(diào)用中斷程序軟件中斷用指令調(diào)用中斷程序7.1.3中斷系統(tǒng)的功能1.

中斷處理2.中斷優(yōu)先級排隊3.中斷嵌套主程序入口服務(wù)程序

中斷請求

返回7.1.4中斷處理過程基本過程:

1.中斷請求

2.中斷判優(yōu)

3.中斷響應(yīng)

4.中斷處理

5.中斷返回。

3、CPU響應(yīng)中斷的條件

外設(shè)通過接口向CPU發(fā)出請求信號:在接口中設(shè)置中斷請求觸發(fā)器中斷屏蔽觸發(fā)器

②CPU開中斷——請求信號才能進入CPU

當前指令執(zhí)行完方可響應(yīng)

STI→IF=1

兩種情況下,CPU自動關(guān)中斷:①上電和復(fù)位后②響應(yīng)中斷后

∴必須在進入中斷服務(wù)程序后用指令開中斷,以實現(xiàn)中斷嵌套。4、CPU響應(yīng)中斷(中斷處理)過程

自動關(guān)中斷IF=0,TF=0,F(xiàn)R壓棧②自動保護斷點(入棧),轉(zhuǎn)中斷服務(wù)子程序服務(wù)③保護現(xiàn)場(入棧)子程④中斷服務(wù)在適當處開中斷序⑤恢復(fù)現(xiàn)場(出棧)⑥中斷返回——自動恢復(fù)FR,斷點

5、開/關(guān)中斷指令:STI→IF=1,允許中斷

CLI→IF=0,禁止響應(yīng)中斷源的識別7.1.5中斷優(yōu)先級的排隊問題1:系統(tǒng)有多個中斷請求,CPU如何識別中斷源?中斷優(yōu)先權(quán)排隊7.1.5中斷優(yōu)先級的排隊(續(xù)1)問題2:有多個中斷同時請求,CPU如何應(yīng)對?中斷嵌套7.1.5中斷優(yōu)先級的排隊(續(xù)2)問題3:中斷處理過程中,又有中斷提出請求,怎么辦?7.1.5中斷優(yōu)先級的排隊——中斷源識別和排優(yōu)給每個中斷源指定一個優(yōu)先權(quán),稱為中斷優(yōu)先級(權(quán))中斷源可能有多個,而CPU只有一條中斷請求線當多個中斷源同時發(fā)出中斷請求時,CPU需識別中斷源

根據(jù)優(yōu)先權(quán)排列:

同時申請,CPU響應(yīng)優(yōu)先權(quán)高的

高的申請可打斷低的服務(wù)(中斷嵌套)排優(yōu)方法:(1)軟件排優(yōu)(2)硬件排優(yōu)1、軟件排優(yōu)(軟件查詢)

-------各中斷源的優(yōu)先權(quán)主要由軟件安排

需簡單的硬件電路圖7.6軟件優(yōu)先級排隊電路圖7.7軟件優(yōu)先權(quán)查詢1.軟件排優(yōu)(軟件查詢)只要任一個外設(shè)有中斷請求(“1”狀態(tài)),

INTR=1,CPU便可響應(yīng)中斷。在中斷服務(wù)子程序中:查詢程序按照優(yōu)先級“高→低”順序檢測各外設(shè)狀態(tài)。2、硬件排優(yōu)

------利用專門的硬件電路或中斷控制器對各中斷源的優(yōu)先權(quán)進行安排

1)硬件排優(yōu)電路101011010012、硬件排優(yōu)說明:

①在鏈式電路中,排在鏈最前面的中斷源優(yōu)先權(quán)最高,即由其在鏈中的位置決定。

“高級”封閉“低級”

2)芯片——可編程的中斷控制器7.28086中斷系統(tǒng)

256個中斷源,每個對應(yīng)一個類型碼00~FFH。(0~255)

按中斷源的不同,分類:內(nèi)部中斷(軟件中斷)外部中斷(硬件中斷)

7.2.18086的中斷分類指外部芯片通過CPU的INTR引腳或NMI引腳發(fā)出中斷申請引起的中斷。當INTR上有高電平信號當NMI上有上升沿信號1、硬件中斷8088GNDA14A13A12A11A10A9A8AD7AD6AD5AD4AD3AD2AD1AD0NMIINTRCLKGND最大組態(tài)(最小組態(tài))VCCA15A16/S3A17/S4A18/S5A19/S6(HIGH)(SSO)MN/MXRDRQ/GT0(HOLD)RQ/GT1(HLDA)LOCK(WR)S2(IO/M)S1(DT/R)S0(DEN)QS0(ALE)QS1(INTA)TESTREADYRESET

1)非屏蔽中斷由NMI引腳引起的中斷,稱非屏蔽中斷。當NMI引腳上產(chǎn)生上升沿信號,CPU必須響應(yīng)此中斷請求,即NMI引腳上的中斷請求不受IF標志的控制。IF不能屏蔽NMI引腳上的中斷請求。中斷類型碼為2。系統(tǒng)中只允許有一個非屏蔽中斷。用于處理重大故障或緊急情況,如掉電、緊急停機。

2)可屏蔽中斷由INTR引腳引起的中斷,稱可屏蔽中斷CPU在允許的條件下,在當前指令執(zhí)行結(jié)束予以響應(yīng),同時輸出可屏蔽中斷響應(yīng)信號INTA*

CPU是否響應(yīng)INTR引腳上的中斷請求取決于IF標志:

IF=1,CPU響應(yīng)INTR引腳上的中斷請求

IF=0,CPU不響應(yīng)INTR引腳上的中斷請求即當IF=0時,將INTR引腳上的中斷申請屏蔽中斷類型碼(向量號)來自外部中斷控制器通常需要配合中斷控制器8259A共同處理可屏蔽中斷可屏蔽中斷主要用于主機與外設(shè)交換數(shù)據(jù)3)中斷標志IF的狀態(tài)IF=0:可屏蔽中斷不會被響應(yīng)關(guān)中斷、禁止中斷、中斷屏蔽系統(tǒng)復(fù)位,使IF=0任何一個中斷被響應(yīng),使IF=0執(zhí)行指令CLI,使IF=0IF=1:可屏蔽中斷會被響應(yīng)開中斷、允許中斷、中斷開放執(zhí)行指令STI,使IF=1執(zhí)行指令I(lǐng)RET恢復(fù)原IF狀態(tài)明確IF標志的狀態(tài)是關(guān)鍵2、軟件中斷——內(nèi)部中斷

------指CPU執(zhí)行某些特殊操作或由INT指令引起的中斷①

被零除操作或OF=1時執(zhí)行INTO指令引起②使用DEBUG中的單步或斷點設(shè)置操作引起③

執(zhí)行INTn

指令引起例如,ROM-BIOS和DOS系統(tǒng)利用內(nèi)部中斷為程序員提供了各種功能調(diào)用2、軟件中斷

1)類型碼0~4(1)除法出錯中斷——0型中斷

(2)

單步中斷

——1型中斷

(3)溢出中斷——4型中斷

(4)

斷點中斷——3型中斷

2)指令中斷——n型中斷⑴除法出錯中斷——0型中斷在執(zhí)行除法指令DIV

或IDIV時,若除數(shù)為0或商超過了寄存器所能表達的范圍,則產(chǎn)生一個向量號為0的內(nèi)部中斷,稱為除法出錯中斷例如:movbl,0idiv

bl

;除數(shù)BL=0,產(chǎn)生除法錯中斷movax,200hmovbl,1divbl

;商=200H,不能用AL表達 ;產(chǎn)生除法錯中斷

(2)單步中斷——1型中斷若單步中斷TF為1,則在每條指令執(zhí)行結(jié)束后產(chǎn)生一個向量號為1的內(nèi)部中斷,稱為單步中斷例如:DEBUG.EXE調(diào)試程序的單步命令T就利用單步中斷實現(xiàn)對程序的單步調(diào)試

DEBUG中的T命令,置TF=1

(3)

溢出中斷——4型中斷若溢出標志OF為1,在執(zhí)行溢出中斷指令I(lǐng)NTO時,則產(chǎn)生一個向量號為4的內(nèi)部中斷,被稱為溢出中斷例如:movax,2000haddax,7000h

;2000H+7000H=9000H,溢出:OF=1into

;因為OF=1,所以產(chǎn)生溢出中斷

程序中設(shè)置斷點,運行到斷點處,程序停止。用于程序調(diào)試

INT3單字節(jié)指令

指令代碼:11001100

(4)斷點中斷——3型中斷例如:DEBUG.EXE調(diào)試程序的運行命令G設(shè)置的斷點,就是利用INT3指令實現(xiàn)的(5)指令中斷——n型中斷在執(zhí)行中斷調(diào)用指令I(lǐng)NTn時產(chǎn)生的一個向量號為n(0~255)的內(nèi)部中斷,稱為指令中斷

INTn

軟件中斷指令類型碼

說明:

①內(nèi)部中斷的類型碼由內(nèi)部(指令或預(yù)定)提供②除單步外,不能用軟件禁止(不受IF影響)③沒有隨機性,服務(wù)處理用戶安排④除單步外,優(yōu)先級比硬件中斷高3.各類中斷的優(yōu)先權(quán)當有多個中斷源同時產(chǎn)生中斷申請時,CPU先響應(yīng)優(yōu)先權(quán)最高的中斷源,再響應(yīng)優(yōu)先級較低的中斷源。優(yōu)先級高低內(nèi)部(除單步)(INT0→INTn→INTO→INT

3)NMIINTR低單步

7.2.2中斷向量表

問題:CPU響應(yīng)中斷后,如何轉(zhuǎn)入各個中斷服務(wù)處理程序?每個中斷分配一個中斷類型碼(中斷向量號),1個字節(jié)每個中斷類型碼→中斷服務(wù)(處理)程序最多允許256個中斷(0~255)。中斷向量——中斷處理子程序的入口地址。在內(nèi)存的最低1k字節(jié)(0段的0~03FFH)區(qū)域建立一個中斷向量表。一個中斷向量,4個字節(jié)前2個IP(偏址)后兩個CS(段址)類型碼——中斷向量表,自動查表,轉(zhuǎn)子程序。中斷向量表中斷向量表P280圖7.10

專用中斷(0~4)系統(tǒng)使用(PC-DOS)(5~31)

用戶可用(32~255)類型碼與中斷向量所在位置的對應(yīng)關(guān)系:

中斷向量地址指針=4×中斷類型碼中斷向量表例如,給定中斷類型碼為

20H中斷向量存放在0000H:0080H(4×20H=80H)個單元。在00080H~00083H存放的值分別為10H、21H、32H、45H,20H號中斷所對應(yīng)的中斷向量即中斷處理程序的入口地址為4532H:2110H。即CS=4532H,IP=2110H。又如,中斷類型碼17H的中斷處理子程序存放在1234:5670H開始的內(nèi)存區(qū)域中,則對應(yīng)于該17H類型碼的中斷向量存放在0000:005CH(4×17H=5CH)開始的4個字節(jié)中。所以0段的005CH~005FH這4個單元中的值分別為70H、56H、34H、12H。

7.2.3中斷的響應(yīng)過程

當中斷源產(chǎn)生中斷申請后,不論是內(nèi)部中斷、非屏蔽中斷,還是可屏蔽中斷,只要滿足響應(yīng)條件,在執(zhí)行完當前指令后,CPU內(nèi)部硬件會自動完成下列響應(yīng)中斷的過程:①

取中斷類型號n②

當前FR的內(nèi)容入棧③

清IF、TF標志為0④當前CS的內(nèi)容入棧⑤

當前IP的內(nèi)容入棧⑥

取內(nèi)存單元(0:n×4)字內(nèi)容送IP

取中斷子程⑦

取內(nèi)存單元(0:n×4+2)字內(nèi)容送CS

入口地址此時CS:IP指向中斷程序的入口,開始執(zhí)行中斷程序。保存現(xiàn)場1、軟件中斷響應(yīng)過程對于專用中斷

——類型碼,自動生成

INTn

指令——類型碼

n

說明:有些中斷服務(wù)程序是系統(tǒng)提供的,不需用戶編寫。

內(nèi)部中斷特點:1.CPU不需要執(zhí)行中斷響應(yīng)周期2.除單步外,不受IF影響3.沒有隨機性1)NMI——非屏蔽中斷

其響應(yīng)不受IF的限制,即不能用軟件禁止。

類型號——

02H

中斷優(yōu)先級高于INTR

響應(yīng)過程:

·有效;——NMI線上升沿觸發(fā)

·

CPU收到NMI后,自動提供類型號2

→查中斷向量表→

轉(zhuǎn)子程序

注意:類型碼固定專用,但中斷向量CS:IP和中斷服務(wù)程序均由用戶自定自編,不在DOS中。2、硬件中斷響應(yīng)過程------IF=1時,才有可能被響應(yīng)響應(yīng)過程:

·“1”有效;——INTR線上電平觸發(fā),高電平有效

·CPU收到INTR=“1”后,如IF=1,進入中斷響應(yīng)周期

→發(fā)出響應(yīng)信號INTA(2個):①通知外設(shè),準備類型碼

②讀取外設(shè)提供的類型碼

→查中斷向量表→

轉(zhuǎn)子程序

注意:

中斷類型碼由用戶通過外部接口提供,CPU從DB上獲取。

2)INTR——可屏蔽中斷幾個說明:(處理過程)

1.INTR響應(yīng)(CPU自動完成)

——實際執(zhí)行7個總線周期:

①INTA總線周期,通知外設(shè)準備P282圖7.11②讀類型碼n③FR入棧,且令I(lǐng)F=0,TF=0

④~⑤

斷點入棧,CS:IP入棧

⑥~⑦查中斷向量表,轉(zhuǎn)子程序保護現(xiàn)場用戶編程

2.中斷服務(wù)服務(wù)程序適當處開中斷恢復(fù)現(xiàn)場

IRET——中斷返回向量類型

INTACLKAD7~AD0T1T2T3T4第一個中斷響應(yīng)周期T1T2T3T4第二個中斷響應(yīng)周期

中斷響應(yīng)周期時序

CPU從引腳INTA發(fā)中斷響應(yīng)信號,接口芯片接收此信號,把中斷類型號準備好;同時ISRi=1,IRRi=0。

CPU再從引腳INTA發(fā)中斷響應(yīng)信號,接口芯片接此信號后,將中斷類型號送至數(shù)據(jù)總線上;

CPU從數(shù)據(jù)總線獲取中斷類型號。返回3.返回(IRET功能)

IP,CS出棧(恢復(fù)斷點)

②恢復(fù)FR

返回斷點幾個說明:(處理過程)

注意:

中斷向量表初始化

入口地址→中斷向量表三、中斷過程舉例內(nèi)存中斷向量表0:0~3FFH1000:150h3000:200h0:N×40:N×4+20:0000、、、、、、

0200h3000h

、、、、、、、、、

MOVAX,0ADDAX,DXMOV[DI],AX、、、、、、、、、、、、

MOVBX,CX、、、、、、

IRET、、、類型N中斷子程某中斷源發(fā)申請中斷,申請執(zhí)行類型號為N的中斷子程響應(yīng)中斷前

SS:SP響應(yīng)中斷后SS:SP

堆棧執(zhí)行IRET后

(IP)(CS)(FR)01501000(FR)SS:SP(IP)=0200h(CS)=3000h0:3FFH0:0從中斷子程返回斷點處,靠的是執(zhí)行中斷子程最后的指令I(lǐng)RET,從堆棧中取出斷點地址給CS:IP,繼續(xù)執(zhí)行被中斷的程序。故中斷子程最后應(yīng)安排IRET指令。1000:150h3000:200h0:N×40:N×4+20:0000、、、、、、

0200h3000h

、、、、、、、、、

MOVAX,0ADDAX,DXMOV[DI],AX、、、、、、、、、

MOVBX,CX、、、

IRET、、、響應(yīng)中斷前

SS:SP響應(yīng)中斷后SS:SP

堆棧執(zhí)行IRET后

(IP)(CS)(PSW)01501000(PSW)SS:SP(IP)=0200h(CS)=3000h7.48259A可編程中斷控制器Intel8259A是可編程中斷控制器PIC用于管理Intel8080/8085、8086/8088、80286/80386的可屏蔽中斷8259A的基本功能一片8259A可以管理8級中斷,可擴展至64級每一級中斷都可單獨被屏蔽或允許在中斷響應(yīng)周期,可提供相應(yīng)的中斷向量號8259A設(shè)計有多種工作方式,可通過編程選擇

7.4.28259A的內(nèi)部結(jié)構(gòu)D7~D0INTAINT中斷請求寄存器中斷屏蔽寄存器數(shù)據(jù)總線緩沖器IR0IR7讀/寫控制邏輯級聯(lián)緩沖器比較器RDWRA0CSCAS0CSA1CAS2SP/EN優(yōu)先權(quán)判別電路中斷服務(wù)寄存器控制邏輯8259

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論