第5章中斷技術_第1頁
第5章中斷技術_第2頁
第5章中斷技術_第3頁
第5章中斷技術_第4頁
第5章中斷技術_第5頁
已閱讀5頁,還剩54頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第5章中斷技術本章內容中斷技術的基本概念中斷技術的工作原理系統配置的中斷資源的應用中斷向量修改及中斷服務程序的編寫15.1中斷

基本概念

中斷是指CPU在正常運行程序時,由于外部/內部事件,或由程序引起CPU中斷正在運行的程序,而轉到為中斷事件服務的程序中去,服務完畢,再返回執行原程序,這一過程稱為中斷。

外部中斷的特征:具有隨機性。25.2中斷的類型5.2.1外部中斷1.可屏蔽中斷INTR

這是由外部設備通過中斷控制器用中斷請求線INTR向微處理器申請而產生的中斷,但微處理器可以用CLI指令來屏蔽(禁止),即不響應它的中斷請求,因此把這種中斷稱為可屏蔽中斷。2.不可屏蔽中斷NMI

由系統硬件引發的中斷,如協處理器出錯、通道等。它的優先級高于外部硬件中斷,且不受中斷允許標志位(IF)的影響,所以是不可屏蔽中斷。35.2.2內部中斷

內部中斷是由用戶在程序中發出中斷指令INTnH產生的,指令中的操作數n稱為軟中斷號。內部中斷包括DOS中斷功能和BIOS中斷功能兩部分,可供用戶在編寫應用程序是調用。

1.DOS功能調用

DOS是存放在磁盤上的操作系統軟件,其中內部中斷INT21H是DOS的內核。它是一個很重要、功能龐大的中斷服務程序,包含0~6CH個子功能,包括對設備、文件、目錄及內存的管理功能,涉及各個方面,可供系統軟件和應用程序調用,同時,由于它處在ROM-BIOS層的上一個層次,與系統硬件層有ROM-BIOS在邏輯上的隔離,所以,它對系統硬件的依賴性大大減少,兼容性好。

2.BIOS功能調用

BIOS是一組存放在ROM中、獨立于DOS的I/O中斷服務程序。它在系統硬件的上一層,直接對系統中的I/O設備進行設備級控制,可供上層軟件和應用程序調用。4除了上述外部中斷和內部中斷兩類中斷之外,微機的中斷系統還包括一些特殊中斷,這些中斷既不是由外部設備提出申請而產生的,也不是由用戶在程序中發中斷指令INTnH而發生的,而是由內部的突發事件所引起的中斷,即在執行指令的過程中,CPU發現某種突發事件時就啟動內部邏輯轉去執行預先規定的中斷號所對應的中斷服務程序。這類中斷也是不可屏蔽中斷,其中斷處理過程具有與內部中斷相同的特點,因此,有的書上把它們歸結為內部中斷這一類。這類中斷有如下幾種。(1)0號中斷─除數為零中斷;(2)1號中斷─單步中斷;(3)3號中斷─斷點中斷;(4)4號中斷─溢出中斷。3.內部中斷的應用DOS調用和BIOS調用是用戶使用系統資源的重要方法和基本途徑,也是用戶編寫MS-DOS應用程序使用很頻繁的方法,應學會使用。5

5.3中斷號5.3.1中斷號與中斷號的獲取1.

什么是中斷號

中斷號是系統分配給每個中斷源的代號,以便識別和處理。中斷號在中斷處理過程中起到很重要的作用,在采用向量中斷方式的中斷系統中,CPU必須通過中斷號才可以找到中斷服務程序的入口地址,實現程序的轉移。2.中斷號的獲取

CPU對系統中不同類型的中斷源,獲取它們的中斷號的方法是不同的。可屏蔽中斷的中斷號是在中斷響應周期從中斷控制器獲取的。內部中斷INTnH的中斷號(nH)是由中斷指令直接給出的。不可屏蔽中斷NMI以及CPU內部一些特殊中斷的中斷號是由系統預先設置好的,如NMI的中斷號為02H,非法除數的中斷號為0H等。65.3.2中斷響應周期

當CPU收到外部設備通過中斷控制器提出的中斷請求INT后,如果當前一條指令已執行完,且中斷標志位IF=1時(即允許中斷),又沒有DMA請求,那么,CPU進入中斷響應周期,發出兩個連續中斷應答信號完成一個中斷響應周期。圖5.1表示是中斷響應周期時序。

從圖5.1可知,一個中斷響應周期完成的操作有:71.

置位中斷服務寄存器ISR

當CPU發出第一個脈沖時,CPU輸出有效的總線鎖定信號,使總線在此期間處于封鎖狀態,防止其他處理器或DMA控制器占用總線。與此同時,中斷控制器將判優后允許的中斷級在ISR中的相應位置1,以登記正在服務的中斷級別,在中斷服務程序執行完畢之后,該寄存器自身不能清零,需要向中斷控制器發中斷結束命令EOI才能清零。2.讀取中斷號

當總線控制器發出第二個2脈沖時,總線鎖定信號撤除,總線被解封,地址允許信號ALE也變為低電平(無效),即允許數據線工作。正好此時中斷控制器將當前中斷服務程序的中斷號送到數據線上,由CPU讀入。

5.3.3中斷號的分配

系統對外部中斷和內部中斷一律統一編號,共有256個號,微機系統的中斷號分配如表5.1所示。表中兩塊灰色區域的中斷號分別是系統分配給PC微機系統中的中斷控制器主片與從片的中斷號,用戶可以采用修改其中斷向量的方法進行應用。8

表5.19105.4中斷觸發方式與中斷排隊方式5.4.1中斷觸發方式

中斷觸發方式是指外部設備以什么邏輯信號去向中斷控制器申請中斷,中斷控制器允許用邊沿或電平信號申請中斷,即邊沿觸發和電平觸發兩種方式。觸發方式在中斷控制器初始化時設定。5.4.2中斷排隊方式

外部中斷、內部中斷是按優先級提供服務的。中斷優先級從高到低的順序是:內部中斷→不可屏蔽中斷→可屏蔽中斷。 當系統有多個中斷源時,就可能出現同時有幾個中斷源都申請中斷,而微處理器在一個時刻只能響應并處理一個中斷請求。為此,要進行中斷排隊,微處理器一般是按“優先級高的先服務”的原則提供服務。但也有其他一些中斷排隊的方式。111.

按優先級排隊

根據任務的輕重緩急,給每個中斷源指定CPU響應的優先級,任務緊急的先響應,可以暫緩的后響應。2.循環輪流排隊

不分級別高低,CPU輪流響應各個中斷源的中斷請求,并為其服務。3.中斷嵌套在實際應用中,當CPU正在處理某個中斷源,即正在執行中斷服務程序時,會出現優先級更高的中斷源申請中斷。為了使更緊急的、級別更高的中斷源及時得到服務,需要暫時打斷(掛起)當前正在執行的級別較低的中斷服務程序,去處理級別更高的中斷源,待處理完以后,再返回到被打斷了的中斷服務程序繼續執行。但級別相同或級別低的中斷源不能打斷級別高的中斷服務,這就是所謂的中斷嵌套。INTR可以進行中斷嵌套。NMI不可以進行中斷嵌套。125.5中斷向量與中斷向量表

當發生中斷,就意味著要發生程序的轉移,即由主程序轉移到服務程序去。那么,如何才能進入中斷服務程序,即如何找到中斷服務程序的入口地址是解決問題的關鍵。 為此,采用向量中斷方式(不是查詢中斷方式),設置中斷向量及中斷向量表,通過中斷向量表中的中斷向量查找中斷服務程序的入口地址。5.5.1中斷向量與中斷向量表

1.什么是中斷向量

CPU響應中斷后,中斷源提供中斷號,再由中斷號生成地址信息,由此地址信息對程序的執行進行導向,引導到中斷服務程序中去,故把這個地址信息稱為中斷向量(存儲單元)。

中斷向量包括中斷服務程序的段基址CS(高位字),偏移地址IP(低位字)共4個字節。其中,

中斷號×4=偏移地址IP;中斷號×4+2=段基址CS。

例如,8號中斷中斷源的中斷向量:

IP8=8×4=20H~21H;CS8=8×4+2=22H~23H.132.什么是中斷向量表

所有的中斷向量集中存放到存儲器的某一區域,這一區域稱之為中斷向量表。微機系統規定把存儲器的0000H~03FFH共1024個地址單元作為中斷向量存儲區,這表明中斷向量表的起始地址是固定的,并且從存儲器的物理地址0開始。中斷向量表如圖5.2所示。每個中斷向量包含4個字節,這4個字節在中斷向量表中的存放規律是向量的偏移量(IP)存放在兩個低字節單元中,向量的基址(CS)存放在兩個高字節單元中。14圖5.2中斷向量表155.5.2中斷向量表的填寫

中斷向量表的填寫分系統填寫和用戶填寫兩種情況。系統設置的中斷服務程序,其中斷向量由系統負責填寫。用戶開發的中斷系統,在編寫中斷服務程序時,其中斷向量由用戶負責填寫,可采用MOV指令直接向中斷向量表中填寫中斷向量。不過,一般用戶都是通過修改中斷向量的方法使用系統的中斷資源,而很少由用戶自己直接填寫中斷向量。165.6中斷處理過程5.6.1可屏蔽中斷的處理過程1.中斷申請與響應握手

當外部設備要求CPU服務時,需向CPU發出中斷請求信號,申請中斷。CPU若發現有外部中斷請求,并且處在開中斷條件(IF=1),又沒有DMA申請,則CPU在當前指令執行結束時,進入中斷響應總線周期,響應中斷請求,并且通過中斷回答信號,從中斷控制器讀取中斷源的中斷號,完成中斷申請與中斷響應的握手過程。這一階段的主要目標是獲取外部中斷源的中斷號。2.標志位的處理與斷點保存

微處理器獲得外部中斷源的中斷號后,CPU把標志寄存器FLAGS壓入堆棧,并置IF=0,關閉中斷;置TF=0,防止單步執行。然后將當前程序的代碼段寄存器CS和指令指針IP壓入堆棧,這樣就把斷點(返回地址)保存到了堆棧的棧頂。這一階段的主要目標是完成由主程向服務程序轉移前的準備工作。173.向中斷服務程序轉移并執行中斷服務程序

將已獲得的中斷號乘以4得到地址指針,在中斷向量表中,讀取中斷服務程序的入口地址CS∶IP,再把它寫入代碼段和指令指示器,實現程序控制的轉移。這一階段的主要目標是完成主程序向中斷服務程序的轉移,或稱為中斷服務程序的加載。

4.返回斷點

中斷服務程序執行完畢后,要返回主程序,因此,一定要恢復斷點和標志寄存器的內容,否則,主程序無法繼續執行。為此,在中斷服務程序的末尾,執行中斷返回指令IRET,將棧頂的內容依次彈出到IP、CS和FLAGS,就恢復了主程序的執行。這一階段的主要目標是完成中斷服務程序向主程序的轉移。185.6.2不可屏蔽中斷和軟中斷的處理過程 由于它們的不可屏蔽性,并且其中斷號的獲取方法與可屏蔽中斷不一樣,所以其中斷處理過程也有所差別。其主要差別是:不需通過中斷響應周期獲取中斷號,是由系統分配的;中斷服務程序結束,不需發中斷結束命令EOI,是自動結束方式。其他處理過程與可屏蔽中斷的一樣。195.7中斷外部中斷的解決方案5.7.1中斷控制器82C59A的外部特性82C59A的外部引腳如圖5.3所示,3組信號線如下:(1)面向CPU的信號線。包括用于CPU發命令及讀取中斷號的8根數據線D0~D7,一對中斷請求線INT和中斷回答線,以及、控制線與地址線、A0。(2)面向I/O設備的信號線。8根中斷申請線IR0~IR7,其作用有二:一是接收外設的中斷申請,可接收8個外部中斷源的中斷申請;二是作外部中斷優先級排隊用,可進行8級中斷排隊,采用完全中斷嵌套排隊方式時,連接IR0的設備優先級最高,連接IR7的設備優先級最低。(3)面向同類芯片的中斷級聯信號線。中斷級聯信號線用于擴展中斷源,包括主/從芯片的設定線/EN,3根用以傳送從片識別碼的級聯線CAS0~CAS2。圖5.382C59A引腳圖205.7.2中斷控制器82C59A的工作方式1.中斷觸發方式(1)邊沿觸發方式IR0~IR7輸入線上出現由低電平到高電平的跳變,表示有中斷請求。(2)電平觸發方式IR1~IR7輸入線出現高電平時,表示有中斷請求。2.中斷級聯方式

82C59A可以單片使用,也可以多片使用,兩片以上使用時才有級聯問題。級聯問題分兩個方面:從主片看,它的哪一根或哪幾根中斷申請輸入線IR上有從片連接;從從片看,它的中斷申請輸出線INT與主片的哪一根中斷申請輸入線IR相連。213.中斷屏蔽方式

82C59A的中斷屏蔽是指對外設中斷申請的屏蔽,即允許還是不允許外設申請中斷,而不是對已經提出的中斷申請響不響應的問題。82C59A有常規屏蔽方式和特殊屏蔽方式兩種,常規屏蔽方式使用較多。(1)常規屏蔽方式這是通過82C59A屏蔽寄存器寫入8位屏蔽碼來屏蔽或開放8個中斷申請線(IR0~IR7)上的中斷申請,要屏蔽哪個中斷申請,就將屏蔽碼的相應位置1;不屏蔽的,即開放中斷的,則相應位置0。例如,屏蔽碼11111011B,表示僅開放IR2,其他均屏蔽。(2)特殊屏蔽方式 用于開放低級別的中斷申請。允許比正在服務的中斷級別低的中斷申請中斷,而屏蔽同級的中斷再次申請中斷。4.中斷優先級排隊方式

82C59A提供了3種中斷優先級排隊方式:完全嵌套方式、特殊嵌套方式和優先級循環方式。

225.中斷結束方式(1)自動結束方式

這是中斷響應之后,在中斷響應周期,就自動清零該中斷源在ISR寄存器中被置1的位。在中斷服務程序中不需發出中斷結束命令EOI。(2)非自動結束方式 這是ISR中被置1的位,在服務完畢后,不能自動清零,而必須在中斷服務程序中發出中斷結束命令EOI,才能清零,故稱為非自動結束。非自動結束方式是常用的方式,其中又有兩種命令格式。

常規結束命令:該命令使ISR寄存器中優先級最高的置1位清零(復位)。

指定結束命令:該命令明確指定ISR寄存器中哪一個置1的位清零,即服務完畢,具體指定哪一級中斷結束。指定結束方式應用較多。23245.7.3中斷控制器82C59A的編程模型

82C59A編程模型包括內部可訪問的寄存器及相應的7個命令字。內部寄存器如圖5.5所示。(1)命令寄存器8位,隱含在“控制邏輯”模塊內部,接收并處理7個命令字,用戶可以訪問。(2)中斷請求寄存器(IRR)8位,以邏輯1記錄已經提出中斷請求的中斷級,等待CPU響應。當提出中斷請求的外設產生中斷時,由82C59A置位,直到中斷被響應才自動清零。IRR的內容可以由CPU通過OCW3命令讀出。(3)中斷服務寄存器(ISR)在中斷響應之后,第一個獲準中斷請求的中斷級在相應的ISR中置位。如IR3獲準,ISR中的IS3置位,表明IR3正處于服務。1.82C59A內部寄存器25(4)中斷屏蔽寄存器(IMR)

是對中斷請求IR起屏蔽作用,即對中斷請求IR允許還是不允許,寄存器8位對應8級中斷屏蔽。哪一級中斷被屏蔽,哪位就寫“1”,即禁止IR提出中斷請求。哪一級中斷被允許,哪位就寫“0”,即開放IR提出中斷請求。(5)中斷申請優先級分析器(PR)

這是一個中斷請求的判優電路。它把新來的中斷請求優先級與ISR寄存器中記錄在案的中斷優先級進行比較,看誰的優先級最高,就讓誰申請中斷。其操作過程全部由硬件完成,故該寄存器對用戶是不可訪問的,它不屬于82C59A的編程模型之內。262.82C59A的端口地址

中斷控制器82C59A是系統資源,其端口地址由系統分配,見第3章表3.1。

主片的兩個端口地址為20H和21H;從片的兩個端口地址為0A0H和0A1H。

7個命令具體使用哪個端口地址由命令的標志位A0指示。273.82C59A的命令

82C59A共有7個編程命令,分為初始化命令ICW1~ICW4和操作命令OCW1~OCW3兩類。初始化命令ICW確定中斷控制器的基本配置或工作方式,而操作命令OCW執行由ICW命令定義的基本操作。值得指出的是,初始化命令是在用戶自行另外設計中斷系統時才會用到。如果是利用系統已有的中斷資來源開發中斷應用,就不需要進行初始化,也就不會使用這些初始化命令。下面分別介紹各的作用及格式。(1)初始化命令(ICW1~ICW4)

4個初始化命令用來對82C59A的工作方式和中斷號進行設置,包括中斷觸發方式、級聯方式、排隊方式及結束方式。28ICW1命令功能:設定中斷請求的觸發方式、是否多片使用、要不要寫ICW4ICW1的格式如下:例如,若采用邊沿觸發,單片使用,需要ICW4則

ICW1命令字=00010011B=13H,其程序段為:

MOVAL,00010011B;ICW1的內容

OUT20H,AL;寫入ICW1端口(A0=0)

29ICW2命令

功能:設定中斷號。對連接到主片和從片上的8級中斷源的中斷號,高5位分別為08H與70H(見表5.3和表5.4),而低3位由連接到主/從片申請線IRi的編碼確定。因此,向ICW2寫入中斷號只寫高5位,低3位寫0,ICW2命令的格式如下。

例如,硬盤的中斷號是0DH,ICW2=08H。

MOVAL,08H OUT21H,AL;寫入ICW2的端口(A0=1)

由于硬盤中斷請求連接IR5,故低3位=05H,由硬件寫入。

30ICW3命令功能:設置中斷級聯方式,主片和從片分開設置。ICW3命令的格式主片與從片不同,分別如下:

a.主片的ICW3

b.從片的ICW331

ICW3命令只有系統存在2片以上82C59A時才啟用,否則不用ICW3命令。分主片和從片,分開設置。

主片IRi的哪一個輸入引腳上有從片連接,該位寫1;若無,寫0。例如,若主片的IR4上有從片連接,則主片的ICW3=00010000B=10H。

從片的中斷請求線INT連到了主片哪一個IRi上,則寫入該位的編號代碼。例如,若從片A的INT連接到主片的IR4上,則從片的ICW3=00000100B=04H。初始化主片的ICW3程序段如下。

MOVAL,10H ;主ICW3的內容

OUT21H,AL ;寫入主ICW3的端口(A0=1)初始化從片A的ICW3程序段如下。MOVAL,04H ;從ICW3的內容

OUT0A1H,AL ;寫入從ICW3的端口(A0=1)

32

又如,假設主片的IR3和IR6兩個輸入端分別連接了從片A與B的INT,故主片的ICW3=01001000B=48H,

從片A的ICW3=00000011B=03H

從片B的ICW3=00000110B=06H,初始化主片的ICW3程序段如下。MOVAL,48H;ICW3(主)的內容OUT21H,AL ;寫入ICW3(主)的端口(A0=1)初始化從片A的ICW3程序段如下。

MOVAL,03H ;從片A的ICW3內容

OUT0A1H,AL ;寫入從片A的CW3端口(A0=1)初始化從片B的ICW3程序段如下。

MOVAL,06H ;從片B的ICW3的內容

OUT0A1H,AL ;寫入從片B的ICW3端口(A0=1)3334ICW4命令

功能:設置優先級排隊和中斷結束方式ICW4的格式如下:

例如,若CPU為16位,82C59A與系統總線之間采用緩沖器連接,非自動結束方式,只用1片8259A,正常完全嵌套,其初始化命令字ICW4=00001101B=0DH初始化ICW4的程序段如下。MOVAL,0DH ;ICW4的內容OUT21H,AL ;寫入ICW4的端口(A0=1)又如,若CPU為16位,采用非自動結束方式,使用兩片82C59A,非緩沖方式,為使從片也能提出中斷請求,主片采用特殊的完全嵌套方式,其初始化命令字ICW4=00010101B=15H初始化ICW4的程序段如下。MOVAL,15H ;ICW4的內容OUT21H,AL ;寫入ICW4的端口(A0=1)35(2)操作命令(OCW1~OCW3)

3個操作命令是對82C59A經初始化所設置的中斷屏蔽、中斷結束、中斷排隊方式進行實際操作。其中,OCW3很少使用。

①OCW1命令

功能:執行常規的中斷屏蔽/開放操作。OCW1命令的格式如下。36例如,

若要使中斷源IR3開放,其余被屏蔽,則OCW1=11110111B=F7H

屏蔽程序段為:MOVAL,0F7H

;OCW1內容OUT21H,AL;21H為OCW1的端口

37②OCW2命令功能:執行中斷結束操作和優先級排隊操作。OCW2的格式如下。OCW2中R、SL、EOI的組合功能如表5.2所示.3839RSLEOI功能001不指定EOI命令,全嵌套方式EOI命令,全嵌套方式011指定EOI命令,全嵌套方式,LEOI命令,全嵌套方式,L2~L0指定對應ISR位清零ISR位清零101不指定EOI命令,優先級自動循環EOI命令,優先級自動循環111指定EOI命令,優先級特殊循環,LEOI命令,優先級特殊循環,L2~L0指定最低優先級100自動EOI,優先級自動循環EOI,優先級自動循環000自動EOI,取消優先級自動循環EOI,取消優先級自動循環110優先級特殊循環,LL2~L0指定最低優先級010無操作表5.2 OCW2中R、SL、EOI的組合功能OCW2的具體操作:1)作中斷結束控制:當在初始化命令ICW1選用非自動結束方式時,就利用OCW2來控制中斷結束。即:OCW2格式中的EOI(D5)=1SL(D6)=0,不指定中斷結束

L2~L0=000,OCW2=00100000B

SL(D6)=1,指定中斷結束

L2~L0編碼是被指定的中斷等級例如,指定IR5為中斷結束,則OCW2=01100101B=65H。402)作中斷優先級排隊控制R(D7)1:需要輪換優先權,分二種若SL=0:優先級固定方式,則為完全嵌套方式1:優先權指定輪換0:自動輪換OCW3命令功能:進行特定的中斷屏蔽/開放操作。OCW3在實際中很少使用,不做介紹,可參考文獻[21]。415.7.4中斷控制器對CPU處理中斷的支持作用1.接受外部設備的中斷請求經過優先權判決找到哪一個中斷源的中斷請求級別最高,然后,再向CPU提出中斷申請INT。2.優先級排隊管理根據任務輕重緩急或設備的特殊要求,分配中斷源的中斷源等級。3.提供中斷類型號為CPU實現程序的轉移給出中斷服務程序入口地址指針。4.實現中斷請求的屏蔽和開放5.執行中斷結束命令425.8可屏蔽中斷的體系結構及初始化5.8.1可屏蔽中斷的體系結構

可屏蔽中斷體系由主/從兩片82C59A中斷控制器進行級聯組成,可支持15級可屏蔽中斷處理,如圖5.8所示。434415級可屏蔽中斷的中斷號分配如表5.3和表5.4所示。中斷源中斷號高5位5位低3位3位中斷號日時鐘08HIR0(0)08H鍵盤08HIR1(1)09H保留08HIR2(2)0AH通信(二)08HIR3(3)0BH通信(一)08HIR4(4)0CH硬盤08HIR5(5)0DH軟盤08HIR6(6)0EH打印機08HIR7(7)0FH中斷源中斷號高5位5位低3位3位中斷號實時鐘70HIR0(0)70H改向INTOAINTOA70HIR1(1)71H保留70HIR2(2)72H保留70HIR3(3)73H保留70HIR4(4)74H協處理器70HIR5(5)75H硬盤70HIR6(6)76H保留70HIR7(7)77H表5.4 從片82C59A8級硬中斷源的中斷號表5.3 主片82C59A8級硬中斷源的中斷號5.8.2可屏蔽中斷的初始化設置1.初始化設置的內容

(1)中斷觸發方式采用邊沿觸發,上跳變有效。(2)中斷屏蔽方式采用常規屏蔽方式,即使用OCW1向IMR寫入屏蔽碼。(3)中斷優先級排隊方式采用固定優先級的完全嵌套方式。(4)中斷結束方式采用非自動結束方式中的不指定結束和指定結束兩種命令格式,即在中斷服務程序服務完畢中斷返回之前,發結束命令代碼20H或6XH均可(X為0~7)。(5)級聯方式采用兩片主/從連接方式,并且規定把從片的中斷申請輸出引腳INT連到主片的中斷請求輸入引腳IR2上。兩片級聯處理15級中斷。(6)15級中斷號的分配為:中斷號08H~0FH對應IRQ0~IRQ7,中斷號70H~77H對應IRQ8~IRQ15。(7)兩片82C59A的端口地址分配為:主片82C59A的兩個端口是20H和21H;從片82C59A的兩個端口是0A0H和0A1H452.初始化設置的程序(1)初始化流程系統上電期間,分別對82C59A的主片和從片進行初始化。初始化流程如圖5.9所示。46(2)系統對中斷控制器初始化程序段

①82C59A主片匯編語言初始化程序段如下。INTA00EQU020H ;82C59A主片端口(A0=0)INTA01EQU021H ;82C59A主片端口(A0=1)MOVAL,11H ;ICW1:邊沿觸發,多片,要ICW4OUTINTA00,ALJMPSHORT$+2 ;I/O端口延時要求(下同)MOVAL,8H ;ICW2:中斷號的高5位OUTINTA01,ALJMPSHORT$+2MOVAL,04H ;ICW3:主片的IR2上接從片,(A0=1)OUTINTA01,ALJMPSHORT$+2MOVAL,01H ;ICW4:非緩沖,全嵌套,16位的CPU,非自動結束OUTINTA01,AL47②82C59A從片匯編語言初始化程序段如下。INTB00EQU0A0H ;82C59A從片端口(A0=0)INTB01EQU0A1H ;82C59A從片端口(A0=1)MOVAL,11H ;ICW1:邊沿觸發,多片,要ICW4OUTINTB00,ALJMPSHORT$+2MOVAL,70H ;ICW2:中斷號的高5位OUTINTB01,ALJMPSHORT$+2MOVAL,02H ;ICW3:從片接主片的IR2(ID2ID1ID0=010)OUTINTB01,ALJMPSHORT$+2MOVAL,01H;ICW4:非緩沖,全嵌套,16位的CPU,非自動結束OUTINTB01,AL系統一旦完成了對82C59A的初始化,所有外部硬件中斷源和服務程序(包括已開發和未開發的)都必須按初始化的規定去做,因此,為慎重起見,對系統的82C59A初始化編程不由用戶去做,而是在微機啟動后由處理器按初始化設置要求自動完成。485.9系統中斷資源的應用5.9.1修改中斷向量

修改中斷向量是修改同一中斷號下的中斷服務程序入口地址。1.中斷向量修改的方法

中斷向量修改的方法是利用DOS功能調用INT21H的35H號功能和25H號功能。INT21H系統功能調用為用戶程序修改中斷向量提供了兩個讀/寫中斷向量的功能號,其入口/出口參數如下。(1)INT21H的35H號功能是從中斷向量表中讀取中斷向量入口參數:無。AH=功能號35H,AL=中斷號N。調用:即執行INT21H。出口參數:ES∶BX=讀取的中斷向量的段基址:偏移量。(2)INT21H的25H號功能是向中斷向量表中寫入中斷向量

入口參數:DS∶DX=要寫入的中斷向量的段基址:偏移量。AH=功能號25H,AL=中斷號N。調用:即執行INT21H。出口參數:無。492.中斷向量修改與恢復的步驟(1)調用35H號功能,從向量表中讀取某一中斷號的原中斷向量,并保存在雙字節變量中。(2)調用25H號功能,將新中斷向量寫入中斷向量表中原中斷向量的位置,取代原中斷向量。(3)新中斷服務程序完畢后,再用25H號功能將保存在雙字節變量中的原中斷向量寫回去,恢復原中斷向量。50

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論