第八章中斷和異常_第1頁
第八章中斷和異常_第2頁
第八章中斷和異常_第3頁
第八章中斷和異常_第4頁
第八章中斷和異常_第5頁
已閱讀5頁,還剩76頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第八章中斷和異常8.1概述8.2中斷8.3異常8.4中斷及異常的暫時屏蔽8.5中斷及異常的優(yōu)先級8.6實方式下的中斷8.7保護方式下的中斷和異常8.8中斷優(yōu)先級管理器8259APIC18.1概述一、什么是中斷二、中斷源和中斷優(yōu)先權(quán)三、中斷服務(wù)程序四、斷點和中斷現(xiàn)場五、硬件中斷和軟件中斷2一、什么是中斷在CPU正常運行程序時,由于內(nèi)部或外部某個非預(yù)料事件或指定的事件的發(fā)生(如:外部事件,電源掉電,硬件故障,傳輸錯,存貯錯,運算錯及操作面板要求服務(wù)等),使CPU暫停正在運行的程序,而轉(zhuǎn)去執(zhí)行處理引起中斷事件的程序,處理完畢然后再返回被中斷了的程序,繼續(xù)執(zhí)行。這個過程就是中斷。3中斷服務(wù)程序1中斷服務(wù)程序

2中斷事件1CPU執(zhí)行流程中斷事件

24二、中斷源和中斷優(yōu)先權(quán)引起中斷的因素很多,將發(fā)出中斷申請的外設(shè)或內(nèi)部的原因,稱為中斷源給每個中斷源指定一個優(yōu)先權(quán),稱為中斷優(yōu)先權(quán)當(dāng)多個中斷源同時發(fā)出中斷請求時,

CPU按照中斷優(yōu)先權(quán)的高低順序,依次響應(yīng)。5三、中斷服務(wù)程序

處理中斷源,完成其所要求功能的程序,稱中斷服務(wù)程序(中斷例行程序、中斷子程)。CPU執(zhí)行流程中斷服務(wù)程序1中斷服務(wù)程序2非預(yù)料事件2非預(yù)料事件16非預(yù)料事件是指事件發(fā)生的時間無法預(yù)知,

即中斷源何時產(chǎn)生中斷不確定,是隨機的。但事件的性質(zhì)及處理方法則是已知的,

確定的,

即中斷服務(wù)程序是事先編寫好的,

只是何時執(zhí)行未知。中斷源產(chǎn)生中斷的隨機性,使中斷服務(wù)程序的執(zhí)行也具有隨機性,即何時執(zhí)行中斷服務(wù)程序不是在程序中安排好的。7四、斷點和中斷現(xiàn)場斷點:

是指CPU執(zhí)行的現(xiàn)行程序被中斷時的下一條指令的地址,又稱斷點地址。中斷現(xiàn)場:

是指CPU轉(zhuǎn)去執(zhí)行中斷服務(wù)程序前的運行狀態(tài),包括CPU內(nèi)部各寄存器、斷點地址等。81000:150H、、、、、、、、、、MOVAX,0ADDAX,DXMOV[DI],AX、、、、、、、、、、

PUSHAX

、、

、、

IRETCPU在執(zhí)行此指令時,某中斷源發(fā)申請中斷;CPU在執(zhí)行完該指令后,轉(zhuǎn)去執(zhí)行中斷子程地址1000:150H為斷點斷點概念:9早期中斷概念的引入,是為解決CPU與外設(shè)間的速度匹配問題,提高CPU的工作效率。中斷源主要是由外部硬件產(chǎn)生。當(dāng)今的中斷技術(shù),不再限于外部硬件產(chǎn)生中斷(稱硬件中斷或外中斷),還可由CPU內(nèi)部產(chǎn)生(如被零除操作),或者由程序預(yù)先安排,即由指令調(diào)用的中斷服務(wù)程序。(稱軟件中斷或

內(nèi)中斷)又稱為異常中斷將硬件中斷或外中斷統(tǒng)稱中斷,將軟件中斷或內(nèi)中斷統(tǒng)稱異常五、硬件中斷和軟件中斷10異常是指令執(zhí)行期間檢查到的不正常或非法的狀態(tài),使指令不能正常執(zhí)行而產(chǎn)生中斷。這與所執(zhí)行的指令有直接的關(guān)系。它源于CPU的內(nèi)部,通常將軟中斷指令也歸于異常118.2中斷80386,80486支持兩種類型的外部中斷:可屏蔽中斷及不可屏蔽中斷(非屏蔽中斷),并有相應(yīng)的兩個中斷請求引腳信號----INTR及NMI.

1、可屏蔽中斷經(jīng)由INTR信號(高電平有效)請求的中斷稱為可屏蔽中斷.它受IF的影響和控制.當(dāng)IF被軟件采用STI指令置1時,表明INTR被允許,CPU響應(yīng)INTR.當(dāng)IF被軟件采用CLI指令置0時,表明INTR被禁止,CPU不響應(yīng)INTR。

2、非屏蔽中斷經(jīng)由NMI信號線(上升沿觸發(fā)有效)請求的中斷稱為非屏蔽中斷。它是不被IF禁止的中斷。

128.3異常

1、異常分類產(chǎn)生異常后,系統(tǒng)根據(jù)引起異常的程序是否可被恢復(fù)這一原則,進一步又把異常分為故障(fault)、陷阱(trap)和中止(abort)3類異常。

故障異常是引起故障的程序可被恢復(fù)執(zhí)行的異常,它也是在引起故障的指令執(zhí)行之前就報告給系統(tǒng)的一種異常,故障被檢出時,保護斷點(指向引起故障的指令)故障處理完畢,返回到引起故障的指令,使該指令得以正確執(zhí)行。

陷阱異常是在指令執(zhí)行期間被檢測到的,并在引起異常的指令執(zhí)行之后向系統(tǒng)報告的一種異常.陷阱產(chǎn)生后,保護斷點(指向引起陷阱的指令的下一條應(yīng)該執(zhí)行的指令地址),程序轉(zhuǎn)向異常處理。

中止異常是微處理器面臨嚴(yán)重錯誤時產(chǎn)生的異常。

132、異常錯誤碼

產(chǎn)生異常時CPU在異常處理程序的棧中壓入一個異常錯誤碼。異常錯誤碼格式如下,異常錯誤碼位于特定的堆棧中,對于一些無錯誤信息的異常,向棧中壓入錯誤碼0。 錯誤碼的格式類似于選擇器的格式,區(qū)別僅在于選擇RPL域被兩個1位域(EXT、IDT)替代。選擇器索引保留選擇器索引15

域值描述D0:EXT0中斷的程序引起異常

1外部事件引起異常D1:IDT0索引域的意義取決于

TI域

1選擇器屬于門描述符D2:TI0索引域指向GDT1索引域指向LDTD3----D15為索引域,與TI組成一個14位的指針

32108028680386/8048614

3、處理器定義的異常

所謂處理器定義的異常是80X86處理器中保留自用的異常,共用16個.1、異常0

異常0定義為除法出錯異常,是一種故障型異常

2、異常1

異常1定義為排錯異?;蛘{(diào)試異常,有故障類或陷阱類,其中單步為陷阱型異常

3、異常3

異常3為斷點中斷,是一個采用單字節(jié)指令I(lǐng)NT的軟件中斷,屬陷阱型異常

4、異常4

異常4定義為溢出異常陷阱,屬陷阱型異常

5、異常5

異常5定義為邊界檢查故障,屬故障型異常

156、異常6異常6定義為無效操作碼故障,屬故障型異常7、異常7異常7定義為協(xié)處理器無效故障,屬故障型異常8、異常8異常8定義為雙重故障,屬中止型異常9、異常9異常9定義為協(xié)處理器段越界異常,屬中止型異常10、異常10異常10定義為無效TSS故障,屬故障型異常11、異常11異常11定義為段不存在異常,屬故障型異常1612、異常12異常12定義為棧段故障,屬故障型異常13、異常13異常13定義為通用保護故障,屬故障型異常14、異常14異常14定義為頁故障,屬故障型異常15、異常16異常16定義為協(xié)處理器出錯故障,屬故障型異常注意:由INTN定義的軟中斷均為陷阱型異常未定義313210U/SR/WP域值描述P0失效由不存在頁引起

1失效由頁級別保護沖突引起R/W0失效由讀引起

1失效由寫引起U/S0失效發(fā)生在管理方式

1失效發(fā)生在用戶方式178.4中斷及異常的暫時屏蔽中斷和排錯異常在某些條件下可被忽略或屏蔽引起中斷和排錯異??杀缓雎曰蚱帘蔚臈l件如下:1、EFLAGS中的IF=0,屏蔽外部可屏蔽中斷.2、IF=0時,執(zhí)行STI指令,則在STI指令及下面一條指令執(zhí)行期間,屏蔽外部可屏蔽中斷.3、EFLAGS中的RF=1,屏蔽排錯故障.(RF為調(diào)整恢復(fù)標(biāo)志:RF=0,調(diào)試故障被接受,

RF=1,調(diào)試故障被忽略)

4、系統(tǒng)正處理一個非屏蔽外部中斷,則屏蔽任何新的非屏蔽中斷。

5、執(zhí)行以SS為目的寄存器的MOV及POP指令時,將在該指令及下面一條指令執(zhí)行期間屏蔽各種中斷及排錯異常.6、在指令前綴LOCK及被鎖定的指令之間不允許中斷。188.5中斷及異常的優(yōu)先級中斷/異常類型優(yōu)先級排錯故障非排錯故障陷阱指令I(lǐng)NTn、INTONMI中斷INTR中斷最高最低中斷/異常的優(yōu)先級排錯陷阱19一、實方式下的中斷分類按中斷源的不同,中斷分為內(nèi)部中斷和外部中斷。1、內(nèi)部中斷(軟中斷)指CPU執(zhí)行某些特殊操作或由INT指令引起的中斷①

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

執(zhí)行INTn指令引起8.6實方式下的中斷20指外部芯片通過CPU的INTR引腳或NMI引腳發(fā)出中斷申請引起的中斷。當(dāng)INTR上有高電平信號當(dāng)NMI上有上升沿信號2、外部中斷(硬中斷)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)TESTREADYRESET21

可屏蔽中斷

由INTR引腳引起的中斷,稱可屏蔽中斷。

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

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

IF=0,CPU不響應(yīng)INTR引腳上的中斷請求即當(dāng)IF=0時,將INTR引腳上的中斷申請屏蔽。非屏蔽中斷

由NMI引腳引起的中斷,稱非屏蔽中斷。當(dāng)NMI引腳上產(chǎn)生上升沿信號,CPU必響應(yīng)此中斷請求,即NMI引腳上的中斷請求不受IF標(biāo)志的控制,

IF不能屏蔽NMI引腳上的中斷請求。22保留中斷邏輯INTn指令I(lǐng)NTO指令除法錯誤單步TF=1非屏蔽中斷請求IR0IR6IR5IR4IR3IR2IR1IR7可編程中斷控制器(PIC)8259AINTn412CPUINTRNMI08090A0B0C0D0E0F系統(tǒng)定時器鍵盤保留(打印機)軟盤串行通信接口保留(通信)彩色/圖形接口實方式下的中斷源INT指令

3023當(dāng)有多個中斷源同時產(chǎn)生中斷申請時,CPU先響應(yīng)優(yōu)先權(quán)最高的中斷源,再響應(yīng)優(yōu)先級較低的中斷源。二、實方式下的中斷優(yōu)先權(quán)優(yōu)先級高低

內(nèi)中斷(除零,INT指令,斷點,INTO指令)

非屏蔽中斷可屏蔽中斷

低內(nèi)中斷(單步)

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

取中斷類型號N②

當(dāng)前PSW的內(nèi)容入棧③

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

當(dāng)前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)場25當(dāng)前指令執(zhí)行完的含義

CPU正在執(zhí)行一條指令,執(zhí)行完本條指令,響應(yīng)中斷;對于帶重復(fù)前綴的串指令(如REPMOVSB),執(zhí)行一次重復(fù)和串指令即可響應(yīng)中斷;對MOV和POP指令,處理對象為段寄存器,以及STI和IRET指令執(zhí)行完本條指令后,再執(zhí)行一條指令才響應(yīng)中斷。26內(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)(PSW)01501000(PSW)SS:SP(IP)=0200h(CS)=3000h0:3FFH0:027從中斷子程返回斷點處,靠的是執(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)=3000h28四、實方式下如何獲取中斷類型號由前面介紹知,當(dāng)中斷源產(chǎn)生中斷請求后,不論是內(nèi)中斷、非屏蔽中斷,還是可屏蔽中斷,只要滿足響應(yīng)條件,在執(zhí)行完當(dāng)前指令后,

CPU內(nèi)部硬件會自動完成響應(yīng)中斷的過程,

共七個步驟,而第一步就是獲取中斷類型號。不同的中斷源,實方式下獲取中斷類型號的方法不同。29STIIPCSPSWCPU和總線控制邏輯(1)條件

IF=1NMI=0HOLD=0

無內(nèi)部中斷INTRINTAD0~D78259AINTINTAD0~D7IR0IR1IR7外設(shè)中斷請求(6)0IF0TF(5)保護斷點(9)返回主程序4*N4*N+2IPCSPSW(2)中斷請求主程序(7)(4*N)IP(4*N+2)CS轉(zhuǎn)入中斷處理程序(2)中斷請求INT=1(3)INTA=0送8259A(4)類型碼N送CPU(7)轉(zhuǎn)入中斷處理程序(9)返回主程序(8)開中斷中斷處理程序INET可屏蔽中斷的響應(yīng)和處理過程可屏蔽中斷的響應(yīng)和處理過程:308.7保護方式下的中斷和異?;刂废蘖恐袛嗝枋龇碇袛郚的門中斷N-1的門8N8(N-1)中斷2的門中斷1的門中斷0的門10H80150保護方式的中斷描述符表保護方式下,發(fā)生中斷和異常時,使用中斷描述符表IDT(共256項每項由8字的中斷描述符組成)IDT在內(nèi)存中的位置由中斷描述符表寄存器IDTR給出(48位)IDTRIDT310IDT:為中斷門,陷阱門,任務(wù)門之一311514121170保留(必須為0)

PDPL0類型未用代碼段選擇器偏移量80286中斷或陷阱門6420150

80386/80486中斷或陷阱門6420偏移量(高)PDPL0類型000保留代碼段選擇器偏移量150任務(wù)門保留PDPL0類型保留TSS段選擇器保留6420中斷描述符格式P:存在位DPL:描述符特權(quán)級類型:0101任務(wù)門0110/0001中斷門0111/1111陷阱門DPL字段僅在INTN和INTO指令時被檢驗,且要求CPL大于或等于DPL32入口點中斷描述符表SelectorAttributesOffset全局或局部描述符表線性地址空間BaseLimitAttributes通過中斷門或陷阱門的轉(zhuǎn)移:IDT為中斷門或陷阱門則中斷程序與當(dāng)前程序為同一任務(wù),中斷程序地址由中斷門或陷阱門提供,如下圖8.7.1通過中斷門及陷阱門的轉(zhuǎn)移33通過中斷門或陷阱門向內(nèi)層轉(zhuǎn)移:向內(nèi)中斷向外返回堆棧向下增長內(nèi)層棧外層棧IRET前的ESP指針中斷后的ESP指針中斷前及IRET后的ESP指針SS0LIMITLIMITSS0OuterSSOuterEspEFLAGSOuterCSOuterEIPErrorCode348.8中斷控制器8259A8259A中斷控制器由INTEL公司設(shè)計。它具有8級優(yōu)先權(quán)控制,通過級聯(lián)可擴展至64級優(yōu)先權(quán)控制。每一級中斷都可以屏蔽或允許。在中斷響應(yīng)周期,它可提供相應(yīng)的中斷向量,從而能迅速地轉(zhuǎn)至中斷服務(wù)程序。特點:1片8259能管理8級中斷,9片8259可構(gòu)成64級主從式中斷。可通過編程,使8259工作在多種不同的方式。采用CMOS工藝,只需單一的5V電源。35IR0IR1IR2IR3IR4IR5IR6IR7內(nèi)部總線中斷服務(wù)寄存器(ISR)優(yōu)先權(quán)判別器(PR)中斷請求寄存器(IRR)中斷屏蔽寄存器(IMR)控制邏輯

INTAINT

數(shù)據(jù)總線緩沖器讀/寫控制邏輯級連/緩沖比較器RDWRA0CSCAS0CAS1CAS2SP/END7~D01.8259A的內(nèi)部結(jié)構(gòu)中斷請求寄存器(8位)IRR寄存從引腳IR0~IR7輸入的中斷請求信號。當(dāng)IRi

有效時,IRRi位置“1”。中斷屏蔽寄存器(8位)IMR存放屏蔽中斷的信息。IMRi位與IRRi位一一對應(yīng),如果IMRi位為1,鎖存在IRRi位的中斷請求被屏蔽。優(yōu)先權(quán)判別器(PR)

當(dāng)IR7~IR0端有多個中斷請求同時發(fā)生時,由PR判定哪個中斷請求具有最高優(yōu)先權(quán),并在INTA脈沖期間將它置入中斷服務(wù)寄存器ISR的相應(yīng)位。中斷服務(wù)寄存器(8位)ISR

記錄CPU正在處理中的中斷請求。ISRi

位與IRi中斷源一一對應(yīng),當(dāng)任一級IRi中斷請求被響應(yīng),CPU正在執(zhí)行它的中斷服務(wù)程序時,ISRi

位置“1”,它一直保持到該級中斷處理過程結(jié)束為止。由于可能產(chǎn)生多重中斷,因此ISR中有可能多位為“1”。數(shù)據(jù)總線緩沖器 是8位雙向三態(tài)緩沖器,構(gòu)成8259A與系統(tǒng)數(shù)據(jù)線的接口。對8259A編程寫入的命令字以及讀出的8259A狀態(tài)信息都是通過它傳送。讀寫控制邏輯 接收讀/寫控制信號RD/WR、片選信號CS和端口選擇信號A0。一片8259A在系統(tǒng)中占用2個口地址,用地址線A0來選擇端口;用高位地址線通過譯碼產(chǎn)生8259A的片選信號。控制電路

它有一組命令字(ICW1~ICW4)寄存器和操作字(OCW1~OCW3)寄存器以及相關(guān)的控制邏輯。它通過INT端向CPU發(fā)中斷請求信號,從INTA端接收CPU的中斷響應(yīng)信號,控制8259A進入中斷狀態(tài)。級連緩沖/比較器 一片8259A只能接收8級中斷,當(dāng)超過8級時,可用多片8259A級連使用,構(gòu)成主從結(jié)構(gòu)??蓴U充到64級。368259A的中斷過程在中斷請求輸入端IR7~IR0上接受中斷請求。中斷請求鎖在IRR中,并與IRR相“與”,送給優(yōu)先權(quán)判斷電路。優(yōu)先權(quán)判斷電路檢測出優(yōu)先級最高的中斷請求位,并置位該位的ISR??刂七壿嫿邮苤袛嗾埱?,輸出INT信號。CPU接受INT信號,進入連續(xù)兩個中斷響應(yīng)周期。單片使用或由CAS2~CAS0選擇的從片8259A,就在第二個INTA周期,將中斷類型向量從D7~D0線輸出;若作主片輸出,則在第1個INTA周期,把級聯(lián)地址從CAS2~CAS0送出。CPU讀取中斷向量,轉(zhuǎn)移到相應(yīng)的中斷處理程序。通過向8259A送一條EOI(中斷結(jié)束)命令,使ISR復(fù)位,實現(xiàn)結(jié)束中斷。在EOI命令復(fù)位之前,不接受由ISR置位的中斷請求。37

CSA0INTADCAS0SP主8259CAS1CAS2INTIR7IR6…IR3…IR0…CSA0INTADCAS0SP從8259CAS1CAS2IR7…IR0INT…CSA0INTADCAS0SP從8259CAS1CAS2IR7…IR0INT…ABCBDBVccD7~0D7~08259級連電路級連方式接法級連信號CASi

:主、從片8259A的CASi端互連,但主片8259A的CASi輸出,從片CASi

輸入。雙功能引腳SP/EN:主片接高電平,從片接低電平。INT信號:從片的INT接至主片的IRi端388259A的引腳功能當(dāng)WR有效時,若CS也有效,則允許該8259A接收CPU送來的命令字;當(dāng)RD有效時,且CS也有效,則允許該8259A將狀態(tài)信息放入數(shù)據(jù)總線供CPU檢測INT:中斷請求信號。輸出。當(dāng)IR7~IR0任一引腳有中斷請求時,8259A從INT向CPU(通常是INTR引腳)發(fā)出中斷請求信號CAS2~CAS0:級連信號、雙向引腳。用于控制多片8259A的級連使用。主片:CAS2~CAS0

引腳輸出;從片:CAS2~CAS0

引腳輸入SP/EN:雙功能引腳。當(dāng)該8259A處于緩沖方式時,該引腳輸出,它用于總線收發(fā)器的使能信號;當(dāng)該8259A處于非緩沖方式時,該引腳輸入,SP=1表示該片是主片,SP=0表示該片是從片39

3.8259A的中斷管理方式中斷觸發(fā)方式電平觸發(fā)方式當(dāng)IR7~IR0

出現(xiàn)高電平時,表示有中斷請求。這個高電平應(yīng)持續(xù)到8259A收到第一個中斷響應(yīng)脈沖之前。邊沿觸發(fā)方式當(dāng)IR7~IR0

出現(xiàn)由低電平到高電平的躍變,表示有中斷請求。40中斷屏蔽方式普通屏蔽方式將IMR中某一位或幾位置“1”,即可將相應(yīng)位的中斷請求屏蔽。例如,將11110000寫入IMR,即可屏蔽IR7~IR4的中斷請求,開放

IR3~IR0

的中斷。特殊屏蔽方式通常情況下,當(dāng)一個中斷被響應(yīng)時,禁止同級或較低級別的中斷請求。在特殊屏蔽方式下,當(dāng)一個中斷被響應(yīng)時,僅屏蔽同級中斷,較低或較高級別的中斷請求可被允許進入。41中斷優(yōu)先級別管理方式完全嵌套方式又稱固定優(yōu)先級方式,其特點為:IR7~IR0的優(yōu)先級固定,IR0

為最高級,IR1次之,IR7為最低級。

CPU響應(yīng)某一級中斷時,8259A將ISR中與該中斷源對應(yīng)的那一位置“1”,并自動禁止同一級和較低級的中斷請求,但高優(yōu)先級中斷可中斷當(dāng)前的服務(wù),實現(xiàn)中斷嵌套。42特殊全嵌套方式該方式與完全嵌套方式的不同點在于:當(dāng)CPU正處理某級中斷請求時,只禁止較低級別的中斷請求,而允許同級或較高級的中斷請求進入。特殊全嵌套方式用于多片8259A的級連系統(tǒng)中。主片處于特殊全嵌套方式,可響應(yīng)來自同一從片的其它中斷請求。自動循環(huán)方式IR7~IR0中斷源輪流為最高優(yōu)先級,當(dāng)任一級中斷服務(wù)結(jié)束后,該中斷源自動降為最低級,而它的下一級的中斷源自動升為最高級。43例如現(xiàn)正為IR3引入的中斷服務(wù),若中斷服務(wù)程序完畢,IR3被賦予最低優(yōu)先級,IR4被賦予最高優(yōu)先級,各級中斷源的優(yōu)先級從高到低依次為:

IR4,IR5,IR6,IR7,IR0,IR1,IR2,IR3

。特殊循環(huán)方式該方式下,用戶可置優(yōu)先權(quán)命令指定最低優(yōu)先級。例如設(shè)置IRi為最低優(yōu)先級,則最高優(yōu)先級賦予IRi+1,其它各級按循環(huán)方式類推。44中斷結(jié)束方式把ISR寄存器的中斷服務(wù)標(biāo)志ISRi位清0,這意味著結(jié)束第i中斷源的中斷服務(wù)。如何將ISRi位清0,8259A提供了6種中斷結(jié)束方式。自動EOI方式8259A在收到第2個中斷響應(yīng)脈沖信號之后,自動把ISR中置1的最高優(yōu)先級服務(wù)標(biāo)志ISRi位清0。采用這種方式,不需要在中斷服務(wù)程序中向8259A送中斷結(jié)束(EOI)命令字。45普通EOI方式在中斷服務(wù)程序結(jié)束,執(zhí)行IRET之前,向8259A送一個“普通中斷結(jié)束(EOI)”命令字,8259A收到EOI命令字后,把ISR中級別最高的置1位清0。在完全嵌套方式下,應(yīng)采用普通EOI方式,但在特殊屏蔽方式下不能采用。特殊中斷結(jié)束方式該種方式下,在中斷服務(wù)程序結(jié)束,執(zhí)行IRET之前,向8259A送一個“特殊EOI”命令字,可將ISR中指定位清0。46自動EOI,優(yōu)先級循環(huán)方式在CPU響應(yīng)中斷,8259A在收到第2個中斷響應(yīng)脈沖信號之后,自動把ISR中置1的最高優(yōu)先級服務(wù)標(biāo)志ISRi位清0,并完成優(yōu)先級循環(huán)。普通EOI,優(yōu)先級循環(huán)方式在IRi的服務(wù)程序結(jié)束,執(zhí)行IRET之前,向8259A送一個“普通EOI,優(yōu)先級循環(huán)方式”命令字,8259A收到EOI命令字后,把ISR中級別最高的置1位清0,同時完成優(yōu)先級循環(huán)。47特殊EOI,優(yōu)先級循環(huán)方式當(dāng)前中斷服務(wù)結(jié)束,執(zhí)行IRET之前,向8259A送一個“特殊EOI,優(yōu)先級循環(huán)方式”命令字,可將ISR中指定位清0。并完成優(yōu)先級循環(huán)。48總線連接方式緩沖方式如果8259A通過總線驅(qū)動器和系統(tǒng)數(shù)據(jù)總線相連,則8259A應(yīng)采用緩沖方式。此時SP/EN為輸出端,它輸出一個低電平信號,可作為總線驅(qū)動器的啟動信號。非緩沖方式如果8259A數(shù)據(jù)線和系統(tǒng)數(shù)據(jù)總線直接相連,則8259A應(yīng)工作于非緩沖方式下。494.8259A的控制字及編程使用8259A有兩類編程命令:初始化命令字(ICW)和操作命令字(OCW)初始化命令字共有ICW1~ICW44個字。設(shè)置順序依次為:ICW1,ICW2,ICW3,ICW4。ICW1:中斷請求觸發(fā)方式設(shè)定ICW1使用偶端口(A0=0),D4位固定為1,表示當(dāng)前寫入的是ICW1。寫入ICW1時,自動將中斷屏蔽寄存器IMR清0,并恢復(fù)各中斷源的優(yōu)先級為IR0最高,IR1次高,IR7最低。50ICW1的格式為:寫ICW4單片使用無效電平觸發(fā)特征位16位機無效IC4SNGLADILTIM10000D0D1D2D3D4D5D6D7A0D0(IC4)位:是否寫ICW4選擇。D0=0,不需要寫ICW4;D0=1,寫ICW4。D1(SNGL)位:單片多片選擇。D1=0,多片級連使用;D1=1,單片使用。D3(LTIM)位:觸發(fā)方式選擇。D3=0,邊沿觸發(fā);D3=1,電平觸發(fā)。D7、D6、D5、D24位:8086CPU不用。D4位:特征位。D4=1表示寫入ICW1字。51ICW2:中斷類型號設(shè)定ICW2的功能是設(shè)置中斷類型號。它使用奇端口(A0=1),緊跟在ICW1之后設(shè)置。ICW2的格式為:16位機無效中斷類型號的高5位000T3T4T5T6T71D0D1D2D3D4D5D6D7A0D7~D3(T7~T3)是中斷類型號的高5位,它由用戶寫入。D2D1D03位在8086系統(tǒng)中不用,固定寫000。中斷類型號的低3位由中斷進入的引腳決定,從IR0~IR7依次為000~111。它在第一個INTA到來時,將這個編碼寫入低3位。52例:若對8259A采用電平觸發(fā),單片使用,需寫ICW4,則程序段為:MOVAL,1BH;ICW1的內(nèi)容(00011011)OUT20H,AL;寫入ICW1端口(A0=0)

53ICW3:中斷級連方式設(shè)定S0/ID0S1/ID1S2/ID2S3S4S5S6S71D0D1D2D3D4D5D6D7A0ICW3僅在多片級連方式中使用,它使用奇端口(A0=1)。ICW3的格式為:對于主片8259A,若Si=1,表示IRi引腳上接有從片8259A;否則,Si=0。對于從片8259A,用ID2ID1ID0的編碼表示本8259A接在主8259A的哪根引腳上。IR0~IR7對應(yīng)的編碼為000~111。54ICW4:中斷結(jié)束、嵌套方式設(shè)定μPMAEOIM/SBUFSFNM0001D0D1D2D3D4D5D6D7A0ICW4使用奇端口(A0=1),它確定中斷結(jié)束的方式和中斷嵌套的方式。ICW4的格式為:D0(μPM)位:系統(tǒng)選擇。D0=0,用于8085系統(tǒng);D0=1,用于8086系統(tǒng)D1(AEOI)位:中斷結(jié)束方式選擇。D1=0,普通EOI方式;D1=1,自動EOI方式。D3(BUF)位:緩沖方式選擇。D3=0,工作于非緩沖方式;D3=1,工作于緩沖方式。在緩沖方式下,SP/EN引腳輸出給總線收發(fā)器。此時,由M/S位來定義本8259A是主片或是從片。D2(M/S)位:主/從片選擇。當(dāng)BUF=1時(緩沖方式),D2=0為從片;D2=1表示主片。當(dāng)BUF=0時,M/S位無意義。D4(SFNM)位:中斷嵌套方式選擇。D4=0表示普通全嵌套方式;D4=1表示特殊全嵌套方式。55例:多片8259A級連方式連接,從片A和B的中斷請求線INT分別接到主片的IR3和IR6,故:從片A的ICW3=00000011B=03H;從片B的ICW3=00000110B=06H;主片的ICW3=01001000B=48H。程序段為從片A:MOVAL,03H;寫從片A的ICW3OUT0A1H,AL;ICW3的端口地址(A0=1)56從片B:MOVAL,06H;寫從片B的ICW3OUT0B1H,AL;ICW3的端口地址(A0=1)主片:MOVAL,48H;寫主片的ICW3OUT81H,AL;ICW3的端口地址(A0=1)57操作命令字工作命令字有3個,它們對寫入順序沒有要求,某些工作命令字可能反復(fù)多次寫入。OCW1中斷屏蔽字OCW1占用奇地址(A0=1),它對中斷請求輸入線IRi進行屏蔽控制,格式為:M0M1M2M3M4M5M6M71D0D1D2D3D4D5D6D7A0其中,Di(Mi)=1,則IRi位請求被屏蔽;

Di(Mi)=0,則IRi位請求被允許。58例:

要使IR3開放,其余均被屏蔽,則OCW1=11110111B=0F7H;程序段為:MOVAL,0F7HOUT21H,AL;21H是奇端口(A0=1)例:IMR寄存器的內(nèi)容可讀出。MOVAL,00;置IMR為全“0”O(jiān)UT21H,AL;OCW1的口地址INAL,21H;讀IMR(奇地址)59ORAL,AL;檢查是否為全“0”JNZERR;不為“0”,則轉(zhuǎn)錯誤處理MOVAL,0FFH;置IMR為全“1”O(jiān)UT21H,AL;OCW1的口地址INAL,21H;讀IMRADDAL,1;檢查是否為全“1”JNZERR;不為全“1”,轉(zhuǎn)錯誤處理60OCW2

優(yōu)先級循環(huán)及結(jié)束方式操作字OCW2作用是設(shè)定8259A的中斷優(yōu)先級循環(huán)和結(jié)束方式。OCW2占用偶地址(A0=0)。

OCW2格式為:L0L1L2000D0D1D2D3D4A0中斷等級編碼特征位中斷結(jié)束設(shè)定指定中斷級別優(yōu)先級循環(huán)EOISLRD5D6D7D7(R):中斷優(yōu)先級循環(huán)設(shè)定D7=0,固定優(yōu)先權(quán)方式;D7=1,循環(huán)方式。D6(SL):中斷級別指定D6=0,不指定中斷級別,L0~L2編碼無效;D6=1,要用L0~L2編碼來指定中斷優(yōu)先級。D5(EOI):中斷結(jié)束命令位當(dāng)ICW4中的AEOI位=1時,D5=1可使當(dāng)前ISR寄存器中相應(yīng)位清“0”。D2D1D0(L2L1L0):中斷等級編碼。L2L1L0的8種編碼:000B~111B分別與IR0~IR7

對應(yīng)。D4D3:特征位。D4D3=00表示是OCW2。61無操作010置優(yōu)先權(quán)命令011自動EOI循環(huán)方式(置位)001自動EOI循環(huán)方式(復(fù)位)000特殊EOI命令111普通EOI命令101特殊EOI命令110普通EOI命令100意義EOISLRR,SL,EOI的設(shè)置及意義R,SL,EOI不同設(shè)置的意義說明編碼=001:普通EOI命令。它在中斷服務(wù)程序結(jié)束時發(fā)出,8259A接到該命令后,將當(dāng)前ISR中優(yōu)先級最高的置“1”位清“0”。編碼=011:特殊EOI命令。當(dāng)中斷處理結(jié)束,8259A接收到該命令后,將ISR中由L2L1L0編碼指定的相應(yīng)位清“0”。編碼=101:普通EOI循環(huán)命令。8259A接收到該命令后,將ISR中優(yōu)先級最高的置“1”位清“0”,并將剛結(jié)束的中斷請求IRi賦予最低優(yōu)先級,把最高優(yōu)先級賦予IRi+1,其它級別按循環(huán)排序。編碼=111:特殊EOI命令。8259A接收到該命令后,將ISR中由L2L1L0編碼指定的相應(yīng)位清“0”,并將最低優(yōu)先級賦予這一中斷請求,最高優(yōu)先級賦予它的下一級中斷請求,其它級別按循環(huán)方式依次改變。編碼=000和100:使8259A取消自動EOI循環(huán)方式(復(fù)位)和設(shè)置自動EOI循環(huán)方式(置位)。在自動EOI循環(huán)方式下,8259A在接收到中斷響應(yīng)信號后,將ISR中相應(yīng)位清“0”,并將最低優(yōu)先級賦予這一中斷請求,最高優(yōu)先級賦予它的下一級中斷請求,其它級別按循環(huán)方式依次改變編碼=110:向8259A發(fā)置優(yōu)先權(quán)命令,將最低優(yōu)先級賦予由由L2L1L0編碼指定的中斷請求IRi,其它中斷請求的級別按循環(huán)方式分別賦給。62OCW3:查詢中斷方式和特殊屏蔽方式操作OCW3的端口為偶地址(A0=0),格式為:讀ISR讀寄存器允許查詢方式特征特殊屏蔽方式特殊屏蔽允許不用RISRRP10SMMESMM×0D0D1D2D3D4D5D6D7A0D4D3=01是OCW3的特征位。D6(ESMM):特殊屏蔽方式允許位。ESMM=0,將SMM位屏蔽,使其無效;ESMM=1,開放SMM位,使其有效。D5(SMM):特殊屏蔽方式設(shè)定。當(dāng)ESMM=1時,若SMM=1,選擇特殊屏蔽方式;SMM=0,不選擇特殊屏蔽方式。D2(P):查詢命令標(biāo)識位,P=1,告之8259A,CPU將執(zhí)行一條讀中斷狀態(tài)字字指令,并使讀其它寄存器命令無效;P=0,不讀中斷狀態(tài)字。D1(RR)D0(RIS):讀ISR和IRR中的狀態(tài)信息標(biāo)識位,僅當(dāng)P=0時有效。RR=1,RIS=0表示在下一條“IN”指令時從偶地址(A0=0)讀IRR中的狀態(tài)信息;RR=1,RIS=1表示在下一條“IN”指令時從偶地址(A0=0)讀ISR中的狀態(tài)信息。RR=0,則RIS位無效。IMR中的信息可直接用“IN”指令從奇地址(A0=1)讀出。63查詢中斷方式的說明:W0W1W2----IR0D0D1D2D3D4D5D6D7A0當(dāng)P=1時,表示向8259A發(fā)查詢命令,可讀出中斷狀態(tài)字,了解8259A當(dāng)前的中斷狀態(tài)。中斷狀態(tài)字的格式為:D7(IR):有無中斷請求位。IR=1表示有中斷請求;IR=0,表示無中斷請求。D2D1D0(W2W1W0):當(dāng)前正在請求的中斷的最高優(yōu)先級編碼:W2W1W0=000~111分別與IR0~IR7

對應(yīng)。使用查詢中斷方式時,CPU應(yīng)先關(guān)閉其中斷請求,再發(fā)查詢命令字(P=1的OCW3),然后用“IN”指令讀中斷狀態(tài)字。64例:若對IR3中斷源采用非自動指定(特殊)中斷結(jié)束方式,則:OCW2=01100011B=63H;程序段為:MOVAL,63H;將OCW2OUT20H,AL;寫入偶端口(A0=0)例:特殊屏蔽方式的編程。設(shè)系統(tǒng)正為IR4服務(wù),同時允許級別較低的中斷請求進入。方法:先用特殊屏蔽命令將IR4中斷暫時屏蔽,再響應(yīng)較低級別的中斷請求,完成較低級別的中斷服務(wù)后,解除對IR4的屏蔽,繼續(xù)為IR4服務(wù)。編程:IR4中斷服務(wù)程序65CLI;關(guān)中斷MOVAl,10H;置OCW1的M4=1,屏蔽IR4MOVDX,PORT1;OCW1的口地址(A0=1)OUTDX,ALMOVAL,68H;置OCW3為特殊屏蔽方式MOVDX,PORT2;OCW3的口地址(A0=0)OUTDX,ALSTI;開中斷CLI;關(guān)中斷MOVAL,48H;置OCW3為復(fù)位特殊屏蔽方式66MOVDX,PORT2

;OCW3的口地址(A0=0)OUTDX,ALMOVAL,00H;置OCW1的M4=0,開放IR4MOVDX,PORT1;OCW1的口地址(A0=1)OUTDX,ALSTIMOVAL,01100L2L1L0;OCW2

指定中斷結(jié)束MOVDX,PORT2;OCW2的口地址OUTDX,ALIRET;中斷返回67例:通過OCW3讀8259A的狀態(tài)。讀IRR:OCW3=00001010B=0AH讀ISR:OCW3=00001011B=0BH編程:MOVAL,0BH;OCW3表示要讀ISROUT20H,AL;20H是OCW3的口地址NOP;空拍延時INAL,20H;讀ISR的內(nèi)容(偶地址A0=0)MOVAH,AL;保存ISR→AHORAL,AH;是否為全0?JNZAW_INT;否,轉(zhuǎn)硬件中斷程序68例:

在PC/XT系統(tǒng)中8259A的初始化編程使用要求與特點:①采用2片8259A級連,共15級向量中斷;②從片的INT接到主片的IR2;③主從片的中斷請求信號均采用邊沿觸發(fā);④采用完全嵌套方式,優(yōu)先級排序為:

0,1,8~15,3,4,5,6,7級;⑤采用非緩沖方式;⑥0~7級對應(yīng)的中斷類型號為8~0FH,8~15級對應(yīng)的中斷類型號為70H~77H。69硬件連接圖CAS0~2IR0SP/ENIR1IR2INTIR3

IR4IR5D0~7IR6

IR7

INTAA0RDCSWRCAS0~2IR0SP/ENIR1IR2INTIR3D0~7IR4

IR5IR6

IR7

INTAA0RDCSWR

CPU

INTRS0D0~7S1S2INTAS0IORS1IOWS2主片+5V從片總線控制器70初始化編程;初始化8259A主片:INTA00EQU020H;8259A主片端口0INTA01EQU021H;8259A主片端口1MOVAL,11;ICW1:邊沿觸發(fā)、多片、寫ICW4OUTINTA00,ALJMPSHORT$+2;端口延時要求MOVAL,8;ICW2:中斷類型號的高5位OUTINTA01,AL71JMPSHORT$+2;端口延時要求MOVAL,04H;ICW3:主片的IR2上接從片OUTINTA01,AL;(S2=1)JMPSHORT$+2;端口延時要求MOVAL,01H;ICW4:非緩沖,全嵌套OUTINTA01,AL;非自動結(jié)束;初始化從片:INTB00EQU0A0H;8259A從片端口0INTB01EQU0A1H;8259A從片端口172MOVAL,11;ICW1:邊沿觸發(fā)、多片、寫ICW4OUTINTB00,ALJMPSHORT$+2

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論