2011年微機(jī)原理與接口技術(shù)-課件3-8第4章中斷系統(tǒng)_第1頁
2011年微機(jī)原理與接口技術(shù)-課件3-8第4章中斷系統(tǒng)_第2頁
2011年微機(jī)原理與接口技術(shù)-課件3-8第4章中斷系統(tǒng)_第3頁
2011年微機(jī)原理與接口技術(shù)-課件3-8第4章中斷系統(tǒng)_第4頁
2011年微機(jī)原理與接口技術(shù)-課件3-8第4章中斷系統(tǒng)_第5頁
已閱讀5頁,還剩77頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第4章微型計算機(jī)的中斷系統(tǒng)4.1中斷原理4.28086CPU中斷系統(tǒng)4.3可編程中斷控制器8259A4.4中斷方式輸入輸出4.1中斷原理4.1.1中斷的基本概念1.中斷

由于某個事件的發(fā)生,CPU暫停當(dāng)前正在執(zhí)行的程序,轉(zhuǎn)而執(zhí)行處理該事件的一個程序。該程序執(zhí)行完成后,CPU接著執(zhí)行被暫停的程序。這個過程稱為中斷。2.中斷源引發(fā)中斷的事件稱為中斷源內(nèi)部中斷(在CPU內(nèi)部的中斷源):程序異常(運(yùn)算溢出等),陷阱中斷(例如,單步運(yùn)行程序等),軟件中斷(執(zhí)行特殊指令)等。外部中斷(發(fā)生在CPU外部的中斷):外部故障(電源故障,存儲器讀寫校驗錯)外部事件(定時時間到,外部特殊信號)IO事件(外部設(shè)備完成一次IO操作,請求數(shù)據(jù)傳輸)3.中斷類型

用若干位二進(jìn)制表示的中斷源的編號。4.中斷斷點(diǎn)

由于中斷的發(fā)生,某個程序被暫停執(zhí)行。 該程序中即將執(zhí)行,由于中斷沒有被執(zhí)行的那條指令的地址稱為中斷斷點(diǎn),簡稱斷點(diǎn)。5.中斷服務(wù)程序

處理中斷事件的程序段稱為中斷服務(wù)程序。

如:故障中斷服務(wù)程序,輸入輸出中斷服務(wù)程序。 不同類型的中斷需要不同的中斷服務(wù)程序。 中斷服務(wù)程序不同于一般的子程序:子程序由某個程序調(diào)用,它的調(diào)用是由程序設(shè)定的,

它的執(zhí)行時間是確定的。中斷服務(wù)程序由某個事件引發(fā),它的執(zhí)行一般是隨

機(jī)的,不確定的。

6.中斷系統(tǒng)

為實現(xiàn)計算機(jī)的中斷功能而配置的相關(guān)硬件、軟件的集合稱為中斷系統(tǒng)。4.1.2中斷工作方式的特點(diǎn)1.并行處理能力

實現(xiàn)CPU和多個外設(shè)同時工作,提高CPU效率。2.實時處理能力

計算機(jī)應(yīng)用于實時控制時,對外部事件及時響應(yīng)。故障處理能力

及時處理故障,不影響其他程序的運(yùn)行。4.多道程序或多重任務(wù)的運(yùn)行

在操作系統(tǒng)的調(diào)度下,運(yùn)行多道程序或多重任務(wù)。4.1.3中斷管理1.對中斷全過程的控制中斷源發(fā)出中斷請求時,CPU能決定是否響應(yīng)這一中斷。若允許響應(yīng)這個中斷請求,CPU在保護(hù)斷點(diǎn)后,將控制轉(zhuǎn)移到相應(yīng)的中斷服務(wù)程序去中斷處理完,CPU返回到斷點(diǎn)處繼續(xù)執(zhí)行被中斷的程序。2.中斷源的識別

軟件識別:響應(yīng)中斷后,CPU進(jìn)入中斷處理程序。在這個程序里,CPU逐個查詢各中斷源的狀態(tài),確

定是哪一個設(shè)備申請了中斷。硬件識別:響應(yīng)中斷后,CPU進(jìn)入一個“中斷響應(yīng)周期”。在這個周期里,申請中斷的設(shè)備向CPU發(fā)送它的中斷類型。3.中斷的優(yōu)先權(quán)

優(yōu)先權(quán):有多個中斷源同時提出中斷請求時,CPU

響應(yīng)中斷的優(yōu)先次序。(1)軟件查詢法(2)分類申請法(3)鏈?zhǔn)絻?yōu)先權(quán)排隊——菊花鏈法(4)可編程中斷控制器——“向量”優(yōu)先權(quán)排隊圖4-1菊花鏈中斷優(yōu)先級排隊電路4.中斷嵌套CPU在處理中斷過程中,如果出現(xiàn)了級別更高的中斷

請求,CPU停止執(zhí)行低級中斷的處理程序而去優(yōu)先處

理高級中斷。等高級中斷處理完畢后,再接著執(zhí)行低級的未處理完

的程序。這種中斷處理方式稱為多重(級)中斷或中斷嵌套。CPU在響應(yīng)中斷時已將IF清零,一定要在中斷處理程

序中加入開中斷指令,才有可能進(jìn)行中斷嵌套。中斷嵌套

4.1.4中斷過程1.中斷源請求中斷(1)外部中斷源

由外部硬件產(chǎn)生可屏蔽或不可屏蔽中斷的請求信號;(2)內(nèi)部中斷源

在程序運(yùn)行過程中發(fā)生了指令異?;蚱渌闆r。(3)中斷屏蔽

CPU用程序的方法允許某些中斷源發(fā)出中斷請求,而禁止某些中斷源請求中斷在外設(shè)的接口內(nèi)增設(shè)一個中斷屏蔽觸發(fā)器

Q=0時,中斷請求不能發(fā)往INTR;適當(dāng)?shù)卦O(shè)定中斷屏蔽觸發(fā)器的狀態(tài),可以控制中斷

請求信號是否能夠送到INTR端2.中斷響應(yīng)

(1)響應(yīng)可屏蔽中斷必須同時具備以下條件:CPU處于允許中斷狀態(tài)(IF=1);沒有不可屏蔽中斷請求和總線請求;當(dāng)前指令執(zhí)行結(jié)束。(2)響應(yīng)不可屏蔽中斷必須同時滿足以下條件:

沒有總線請求;當(dāng)前指令執(zhí)行結(jié)束。(3)響應(yīng)內(nèi)部中斷的條件:當(dāng)前指令執(zhí)行結(jié)束。CPU接受中斷請求后轉(zhuǎn)入中斷響應(yīng)周期:(1)識別中斷源,取得中斷源的中斷類型;(2)將標(biāo)志寄存器FLAGS和CS、IP(斷點(diǎn))先后壓入

堆棧保存;(3)清除自陷標(biāo)志位TF和中斷允許標(biāo)志位IF;(4)獲得相應(yīng)的中斷服務(wù)程序入口地址,轉(zhuǎn)入中斷服務(wù)

程序。中斷響應(yīng)周期圖4-3中斷過程3.中斷服務(wù)

(1)保護(hù)現(xiàn)場:保護(hù)中斷服務(wù)時要使用的寄存器(壓棧);(2)開中斷:中斷服務(wù)時能響應(yīng)更高級的中斷請求;(3)中斷處理:執(zhí)行輸入輸出或非常事件的處理;(4)關(guān)中斷:恢復(fù)現(xiàn)場時不被新的中斷打擾;(5)恢復(fù)現(xiàn)場:將堆棧中保存的內(nèi)容彈出;(6)中斷返回:通過中斷返回指令,彈出IP,CS,FLAGS,

程序回到被中斷的地址,恢復(fù)中斷前的狀態(tài)。4.28086CPU中斷系統(tǒng)4.2.18086的中斷類型中斷類型:用8位二進(jìn)制表示,可以有256個不同的中斷;中斷請求輸入引腳:NMI、INTR;中斷優(yōu)先級:

INT0(除法溢出)→溢出中斷(INTO)→INTn指令

→NMI→INTR→單步中斷。圖4-48086CPU中斷1.可屏蔽中斷

IF=0時,CPU不響應(yīng)INTR的中斷請求;

IF=1時,CPU響應(yīng)INTR的中斷請求。 用STI指令使IF=1,稱為開中斷;

用CLI指令使IF=0,稱為關(guān)中斷。 系統(tǒng)復(fù)位后,或CPU響應(yīng)了任何一種中斷后,都會使

IF=0。

應(yīng)使用STI指令使IF=1,確保中斷開放。 可屏蔽中斷源由8259A統(tǒng)一管理,每片8259A可以接

受8個外部設(shè)備的中斷請求。2.不可屏蔽中斷

NMI接收上升沿觸發(fā)的中斷請求信號; 輸入脈沖應(yīng)大于兩個時鐘周期;

CPU對NMI中斷請求的響應(yīng),不受中斷允許 標(biāo)志位

IF控制; NMI中斷類型碼固定為2。3.內(nèi)部中斷

(1)除法溢出中斷(n=0):

除數(shù)為零或商超過寄存器所能表達(dá)的范圍。(2)單步中斷(n=1):

TF=1,每執(zhí)行完一條指令產(chǎn)生一次中斷。

用于實現(xiàn)單步操作,是強(qiáng)有力的調(diào)試手段。(3)斷點(diǎn)中斷(n=3):

INT3指令產(chǎn)生一個中斷類型碼為3的斷點(diǎn)中斷。(4)INTO指令(n=4):

OF=1,則INTO指令引起類型碼為4的內(nèi)部中斷;

OF=0,此指令不起作用,程序順序執(zhí)行。(5)INTn指令中斷向量:中斷服務(wù)程序的入口地址;8086的中斷向量表從內(nèi)存00000H開始存放;每個中斷向量占用4個字節(jié);中斷服務(wù)程序入口的偏移地址存入兩個低地址字節(jié),

入口的段基址存入兩個高地址字節(jié);256個中斷向量占用00000H~003FFH共1024個字節(jié)。4.2.28086的中斷向量表圖4-58086的中斷向量表AH=35HAL=中斷類型

INT21H →把原有的中斷向量送ES:BX

AH=25HAL=中斷類型DS:DX=中斷向量

INT21H →把新的中斷向量送中斷向量表

1.不可屏蔽中斷NMI不受CPU內(nèi)部中斷允許標(biāo)志IF的約束,優(yōu)先權(quán)高于INTR;中斷類型號2;采用邊沿觸發(fā)(上升沿)方式(1)標(biāo)志寄存器壓入堆棧(2)清除IF標(biāo)志和TF標(biāo)志(3)保存斷點(diǎn),把斷點(diǎn)處的CS和IP內(nèi)容先后壓入堆棧(4)取出中斷服務(wù)程序的入口地址,送入IP和CS(5)進(jìn)入中斷服務(wù)程序用途:主板上RAM奇偶錯,I/O通道中的奇偶校驗錯,

8087協(xié)處理器異常中斷。4.2.38086對外部中斷的響應(yīng)2.可屏蔽中斷INTR

外設(shè)的中斷請求首先送到8259A,按照中斷優(yōu)先權(quán)排隊;電平觸發(fā)方式,高電平有效。響應(yīng)過程:第一個INTA總線周期,通知外部做好準(zhǔn)備;第二個INTA總線周期,從外部獲取中斷類型號;執(zhí)行總線寫周期,把FLAGS壓入堆棧,并清除IF,TF;執(zhí)行總線寫周期,把CS內(nèi)容壓棧;執(zhí)行總線寫周期,把IP內(nèi)容壓棧;執(zhí)行總線讀周期,中斷服務(wù)程序入口偏移地址送入IP;

執(zhí)行總線讀周期,中斷服務(wù)程序入口段基址送入CS。4.3可編程中斷控制器8259A接收8路外部中斷請求,通過級聯(lián)可以擴(kuò)展至64級;優(yōu)先權(quán)排隊和控制,優(yōu)先權(quán)方式可選;中斷嵌套功能;向CPU提供中斷類型號;對每一級編程進(jìn)行屏蔽或開放。4.3.18259A的基本功能DB7~DB0:雙向三態(tài)數(shù)據(jù)總線;IR7~IR0:外設(shè)向8259A發(fā)出的中斷請求信號,輸入。A0: 地址線,輸入,用于選擇內(nèi)部端口。CS#:片選信號,輸入、低電平有效。RD#:讀信號,輸入、低電平有效。WR#:寫信號,輸入、低電平有效。INITA#:中斷響應(yīng)信號,輸入、低電平有效。INT:中斷請求信號,輸出、高電平有效。CAS2~CAS0:雙向的級聯(lián)線。SP/EN:主從設(shè)備設(shè)定/緩沖器讀寫控制,雙向雙功能4.3.28259A引腳及內(nèi)部結(jié)構(gòu)圖4-68259A引腳圖4-78259A的內(nèi)部結(jié)構(gòu)2.中斷請求寄存器IRR

鎖存外部設(shè)備送來的IR7~IR0中斷請求信號;中斷請求線變?yōu)楦唠娖綍r,IRR中與之對應(yīng)的一位被置1;寄存器的內(nèi)容可以被CPU讀出。3.中斷屏蔽寄存器IMR

記錄對每一級中斷的屏蔽信號;置1時,對應(yīng)的外部中斷請求線被屏蔽;設(shè)置IMR起到改變中斷請求優(yōu)先級的效果。4.中斷服務(wù)狀態(tài)寄存器ISR

記錄當(dāng)前正在被服務(wù)的所有中斷級;CPU響應(yīng)IRi中斷請求,ISR中對應(yīng)第i位置1;中斷處理結(jié)束前,要使用指令清除這一位;寄存器可以被CPU讀出。5.優(yōu)先權(quán)處理器

識別和管理各中斷請求信號的優(yōu)先級別;多個中斷請求信號同時出現(xiàn)時,優(yōu)先權(quán)處理器根據(jù)

控制邏輯規(guī)定的優(yōu)先級規(guī)則和IMR的內(nèi)容來判斷這

些請求信號的最高優(yōu)先級。6.控制邏輯

初始化命令字寄存器ICW1~ICW4: 在系統(tǒng)初始化時置入,工作過程中保持不變。操作命令字寄存器OCW1~OCW3: 工作過程中根據(jù)需要設(shè)定。7.?dāng)?shù)據(jù)總線緩沖器

8位的雙向三態(tài)緩沖器,是8259A與系統(tǒng)數(shù)據(jù)總線的接口。8.讀/寫控制邏輯

接收、執(zhí)行CPU的讀/寫命令。9.級聯(lián)緩沖/比較器

在級聯(lián)方式的主/從結(jié)構(gòu)中,用來控制8259A的級聯(lián)。緩沖器:SP/EN輸出低電平時,開啟雙向緩沖器。級聯(lián)比較器:

主8259A:用CAS2~CAS0輸出被選中從片代碼;

從8259A:接收主器件送來的從片選擇代碼1.8259A的工作過程(1)中斷源在IR0~I(xiàn)R7上產(chǎn)生中斷請求;(2)中斷請求被鎖存,經(jīng)IMR“屏蔽”,送優(yōu)先權(quán)電路判優(yōu);(3)控制邏輯接收中斷請求,向CPU輸出INT信號;(4)CPU接受8259A的INT信號,進(jìn)入連續(xù)兩個INTA周期。(5)優(yōu)先權(quán)電路將最高優(yōu)先權(quán)對應(yīng)ISR中的位置位;(6)第二個INTA周期把中斷類型號輸出到數(shù)據(jù)總線;(7)CPU讀取中斷類型號,轉(zhuǎn)移到相應(yīng)的中斷處理程序。(8)中斷處理結(jié)束前,向8259A發(fā)送EOI(中斷結(jié)束)命

令,使ISR相應(yīng)位復(fù)位,本次中斷到此結(jié)束。4.3.38259A的工作方式2.8259A的優(yōu)先權(quán)管理

(1)固定優(yōu)先級

中斷源的優(yōu)先級由它所連接的引腳編號決定;

全嵌套方式: 中斷優(yōu)先權(quán)級別固定,IR0優(yōu)先權(quán)最高,IR7最低。

特殊全嵌套: 接收同一引腳上的第二次中斷請求。(2)循環(huán)優(yōu)先級

各個中斷申請具有大體相同的優(yōu)先級;

有優(yōu)先權(quán)自動循環(huán)方式和優(yōu)先權(quán)特殊循環(huán)方式。

3.中斷屏蔽方式(1)普通屏蔽方式通過將中斷屏蔽字寫入IMR實現(xiàn);寫入某位為“1”,對應(yīng)的中斷請求被屏蔽;為“0”開放。(2)特殊屏蔽方式采用特殊屏蔽方式并用屏蔽字對IMR中某一位置“1”,

會同時使ISR中對應(yīng)位清“0”。對屏蔽位的設(shè)置部分地改變了中斷優(yōu)先權(quán)。4.中斷結(jié)束方式中斷結(jié)束命令(EOI):

將ISR中的相應(yīng)位清“0”,表示中斷處理結(jié)束。(1)自動中斷結(jié)束方式(AEOI)

8259A在第二個中斷響應(yīng)周期INTA信號的后沿,自動

將ISR中被響應(yīng)中斷級的對應(yīng)位清“0”。(2)非自動中斷結(jié)束方式(EOI)從中斷服務(wù)程序返回前,在程序里向8259A輸出一個中

斷結(jié)束命令(EOI),把ISR對應(yīng)位清“0”。一般的中斷結(jié)束方式:由8259A自動選擇優(yōu)先權(quán)最高的位。特殊的中斷結(jié)束命令:指令內(nèi)指明要清除ISR中的某一位。注意!

在非自動中斷結(jié)束方式下,如果在程序里忘了發(fā)送中斷結(jié)束命令,那么,8259A將不再響應(yīng)這個中斷以及比它級別低的中斷請求。5.8259A查詢工作方式工作在程序查詢方式時,8259A不向CPU發(fā)INT信號;CPU通過查詢8259A了解有無中斷;如果有中斷發(fā)生,轉(zhuǎn)入相應(yīng)的服務(wù)程序。設(shè)置查詢方式的過程:關(guān)閉中斷;用輸出指令把“查詢方式命令字”送到8259A;對8259A執(zhí)行一條輸入指令,讀取查詢字查詢字格式為:IXXXXW2WlW0I=1,有中斷請求,W2WlW0為最高優(yōu)先級編碼。初始化命令字:在系統(tǒng)初始化時寫入;用來設(shè)定8259的基本工作方式。操作命令字:在初始化后的任何時刻寫入8259A;用來動態(tài)地控制8259A的操作。4.3.48259A的編程圖4-81.初始化命令字ICW(1)初始化命令字ICWl注意!向8259A送入一條A0=0、D4=1的命令(ICW1):

啟動8259A的初始化過程,相當(dāng)于RESET信號的作用,自動完成下列操作:清除中斷屏蔽寄存器IMR;設(shè)置以IR0為最高優(yōu)先級,IR7為最低優(yōu)先級的全嵌

套方式;固定中斷優(yōu)先權(quán)排序。圖4-9(2)初始化命令字ICW2圖4-10(3)初始化命令字ICW3(主片)圖4-11(3)初始化命令字ICW3(從片)圖4-12(4)初始化命令字ICW4(5)8259A初始化按以下順序?qū)?259A初始化:單片8259A:ICW1、ICW2、ICW4級聯(lián)方式:ICW1、ICW2、ICW3、ICW4注意:級聯(lián)方式下,每一片8259A都要獨(dú)立地按上

面順序?qū)懭氤跏蓟钭?。單片工作,邊沿觸發(fā),全嵌套;中斷類型08H~0FH,端口地址20H,21H;非緩沖方式,非中斷自動結(jié)束,非特殊全嵌套方式;初始化程序:

MOV AL,00010011B OUT 20H,AL ;ICW1:單片,邊沿觸發(fā) MOV AL,00001000B OUT 21H,AL ;ICW2:中斷類型08H~0FH MOV AL,00000001B OUT 21H,AL ;ICW4:非中斷自動結(jié)束IBM-PC微型計算機(jī)內(nèi)8259A的工作方式例:二片8259A進(jìn)行級聯(lián),邊沿觸發(fā),非緩沖方式,非自動中斷結(jié)束,CAS0~CAS2互連。主片初始化程序:

MOV AL, 00010001BOUT 20H, AL ;ICW1:邊沿觸發(fā),級聯(lián)MOV AL, 00001000BOUT 21H, AL ;ICW2:中斷類型08H~0FHMOV AL, 00000100BOUT 21H, AL ;ICW3:IR2連有從片MOV AL, 00010001B ;ICW4:特殊全嵌套,非緩沖

OUT 21H, AL ;ICW4:非自動中斷結(jié)束圖4-138259A的級聯(lián)

從片初始化程序:

MOVAL, 00010001BOUT0A0H,AL ;ICW1:邊沿觸發(fā),級聯(lián)MOVAL,01110000BOUT0A1H,AL ;ICW2:中斷類型70H~77HMOVAL,00000010BOUT0A1H,AL ;ICW3:INT引腳連主片IR2MOVAL,00000001B ;ICW4:非自動中斷結(jié)束OUT0A1H,AL ;ICW4:非特殊全嵌套,非緩沖2.操作命令字OCW對8259A預(yù)置完畢后:8259A進(jìn)入設(shè)定的工作狀態(tài);準(zhǔn)備接收由IR輸入的中斷請求信號;按固定優(yōu)先級(缺省方式)來管理中斷請求。運(yùn)行中可以寫入操作控制字,對8259A管理中斷的方式進(jìn)行修改和設(shè)定。有OCW1、OCW2和OCW3三個操作控制字;OCW按需要選擇寫入,沒有固定順序。圖4-14(1)操作控制字OCWl例:需要屏蔽IR4的中斷輸入,同時不改變其他中斷輸入的屏蔽狀態(tài),可以用如下的三條指令實現(xiàn): IN AL,21H ;取屏蔽寄存器當(dāng)前值 OR AL,00010000B ;將D4位置1 OUT 21H,AL ;寫回改變后的屏蔽字反之,需要清除對IR2的中斷屏蔽: IN AL,21H ;取屏蔽寄存器當(dāng)前值 AND AL,11111011B ;將D2位清0 OUT 21H,AL ;寫回改變后的屏蔽字操作控制字OCW1應(yīng)用圖4-15(2)操作控制字OCW2一般的中斷結(jié)束命令: MOV AL, 20H OUT 20H, AL操作控制字OCW2應(yīng)用圖4-16(3)操作控制字OCW3OCW3用途:設(shè)置/清除特殊屏蔽命令發(fā)出讀寄存器命令:設(shè)置RR=1,RIS=0后,用IN指令讀偶端口,可以將

IRR讀入CPU。設(shè)置RR=1,RIS=1后,用IN指令讀偶端口,可以將

ISR讀入CPU。操作控制字OCW3應(yīng)用發(fā)出查詢命令;設(shè)置P=1后,用IN指令讀偶端口,可以將中斷查詢字

讀入CPU:

IXXXXW2WlW0I=1表示有中斷請求,W2WlW0表示請求服務(wù)的最高

優(yōu)先級編碼。注意:設(shè)置了P=1的查詢命令后,8259A不再通過INT引腳向

CPU發(fā)送中斷請求。要取消查詢方式,可以再次發(fā)出OCW3,并使P=0。操作控制字OCW3應(yīng)用例:BIOS中讀取ISR寄存器的程序段: MOV AL,00001011B ;OCW3命令字(讀ISR) OUT 20H,AL ;寫入OCW3端口 NOP ;延時 IN AL,20H ;將ISR內(nèi)容送入AL MOV AH,AL ;將ISR內(nèi)容轉(zhuǎn)存入AH OR AL,AH ;是全0否? JNZ AW-INT ;否,轉(zhuǎn)硬件中斷程序 ……操作控制字OCW3應(yīng)用4.4中斷方式輸入輸出4.4.1中斷方式IO接口中斷方式輸入過程:外部設(shè)備輸入數(shù)據(jù);中斷請求觸發(fā)器置位;接口向CPU申請中斷;CPU響應(yīng)中斷,中斷請求觸發(fā)器被復(fù)位;CPU在中斷服務(wù)程序中讀取數(shù)據(jù)。圖4-17中斷方式輸入接口中斷屏蔽觸發(fā)器的作用:控制外設(shè)接口的中斷請求信號能否發(fā)送給CPU。中斷屏蔽觸發(fā)器可以看作該接口控制寄存器的一位圖4-17是不完整的:沒有給出中斷屏蔽觸發(fā)器的寫入電路;解決中斷優(yōu)先權(quán)的電路;向CPU發(fā)送中斷類型號的電路。圖4-18中斷方式下,完整的輸入輸出程序應(yīng)由二個程序模塊配合完成:主程序:

完成輸入輸出所需要的“初始化”工作和結(jié)束工作;中斷服務(wù)程序:

完成數(shù)據(jù)傳輸和輸入輸出控制工作。4.4.2中斷方式輸入輸出程序設(shè)計1.主程序設(shè)計(1)CPU初始化:設(shè)置堆棧,設(shè)置中斷向量,開放中斷。(2)中斷控制器8259A的初始化:

選擇工作方式,設(shè)置優(yōu)先級、清除屏蔽位等。(3)接口的初始化:設(shè)置接口工作方式,設(shè)置中斷開放位等。(4)中斷服務(wù)程序的初始化:

設(shè)置中斷服務(wù)程序使用的緩沖區(qū)指針,計數(shù)器,狀態(tài)位等。注意:中斷服務(wù)程序的指針、計數(shù)器、狀態(tài)位等只能存放在

內(nèi)存單元。對于輸出過程,應(yīng)在主程序中啟動第一次輸出。輸入輸出完成之后,主程序要根據(jù)需要做好結(jié)束工作。

如:處理輸入的數(shù)據(jù),關(guān)閉中斷等。2.中斷服務(wù)程序設(shè)計

保護(hù)現(xiàn)場:

把所有中斷服務(wù)程序里使用、會改變值的寄存器壓入

堆棧。

開放中斷:

允許CPU響應(yīng)優(yōu)先級更高、更緊急的中斷。

輸入輸出處理:

關(guān)閉中斷:

關(guān)閉中斷可以避免不必要的中斷嵌套,發(fā)EOI命令。

恢復(fù)現(xiàn)場:

按照“先進(jìn)后出”的原則,恢復(fù)各寄存器的內(nèi)容。

中斷返回:

用IRET指令返回被中斷的程序。中斷服務(wù)程序應(yīng)注意的幾個問題:中斷服務(wù)程序要短小精悍,運(yùn)行時間短,執(zhí)行一次中斷服務(wù)程序的時間要大大少于二次中斷的時間間隔。對于耗費(fèi)時間多的數(shù)據(jù)處理工作,應(yīng)交由主程序完成。一般的情況下,應(yīng)避免在中斷服務(wù)程序內(nèi)進(jìn)行DOS功能調(diào)用。那樣做,可能產(chǎn)生這些程序的“重入”。DOS功能調(diào)用程序不具備重入功能,會產(chǎn)生難以預(yù)料的結(jié)果。需要進(jìn)行控制臺IO操作可以使用BIOS調(diào)用。在輸入輸出處理完成后,一定要向8259A發(fā)送中斷結(jié)束命令(EOI)。如果是級聯(lián)的8259A的從片上的中斷,則需要向主片和從片分別發(fā)送中斷結(jié)束命令。否則,該設(shè)備的下一次中斷就不能被響應(yīng),比它級別低的中斷從此也不能被響應(yīng)。

一個完整的中斷方式輸入程序設(shè):數(shù)據(jù)端口地址為240H使用8259A的IR3引腳申請中斷,中斷類型0BH8259A端口地址為20H,21H輸入以“回車”字符表示結(jié)束。4.4.3中斷方式應(yīng)用DATA SEGMENTIN_BUFFER DB 100DUP(?) ;接收緩沖區(qū),假設(shè)一次輸入不超過100字節(jié)IN_POINTER DW ? ;接收緩沖區(qū)指針DONE DB 0 ;完成標(biāo)志,=1表示輸入已完成DATA ENDS數(shù)據(jù)段定義CODE SEGMENTASSUME CS:CODE,DS:DATABEGIN: MOV AX, SEGIN_INTR ;IN_INTR是中斷服務(wù)程序入口 MOV DS, AX LEA DX, IN_INTR MOV AX, 250BH ;AH中為功能號,AL中為中斷類型 INT 21H ;裝載0BH中斷向量 MOV AX, DATA MOV DS, AX;裝載數(shù)據(jù)段段基址主程序(1) MOV IN_POINTER,OFFSETIN_BUFFER ;設(shè)置指針初值 MOV DONE, 0 ;設(shè)置完成標(biāo)志為“未完成” IN AL, 21H AND AL, 11110111B OUT 21H, AL ;清除IR3的屏蔽位 STI ;開放中斷W: CMP DONE,0 JZ W ;等待完成 ..... ;結(jié)束處理 MOV AX, 4C00H INT 21H主程序(2)IN_INTR PROC FAR PUSH DS ;保護(hù)現(xiàn)場 PUSH AX PUSH BX PUSH DX STI ;開放中斷,允許響應(yīng)更高級中斷 MOV AX, DATA MOV DS, AX ;在中斷服務(wù)程序中重新裝載DS寄存器 MOV BX, IN_POINTER;裝載緩沖區(qū)指針 MOV DX, 240H

輸入中斷服務(wù)程序(1) IN AL, DX ;從輸入設(shè)備讀取一個數(shù)據(jù),同時清除中斷請求

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論