微機(jī)原理與應(yīng)用:第6章輸入輸出和中斷技術(shù)3-4_第1頁
微機(jī)原理與應(yīng)用:第6章輸入輸出和中斷技術(shù)3-4_第2頁
微機(jī)原理與應(yīng)用:第6章輸入輸出和中斷技術(shù)3-4_第3頁
微機(jī)原理與應(yīng)用:第6章輸入輸出和中斷技術(shù)3-4_第4頁
微機(jī)原理與應(yīng)用:第6章輸入輸出和中斷技術(shù)3-4_第5頁
已閱讀5頁,還剩159頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2022/12/2316.3中斷技術(shù)版權(quán)所有,2000(c)南京航空航天大學(xué)提示本節(jié)是微型計(jì)算機(jī)及接口技術(shù)課程的一個(gè)重點(diǎn)和難點(diǎn)。

2022/12/232

6.3中斷技術(shù)基本概念

中斷(中斷源、中斷分類、中斷特點(diǎn))中斷過程(請求、判優(yōu)、響應(yīng)、處理、返回)中斷優(yōu)先權(quán)(軟件排優(yōu)、鏈形電路、專用中斷)80X86(PentiumⅣ)中斷系統(tǒng)80X86中斷結(jié)構(gòu)80X86中斷向量(中斷類型碼、中斷向量表)80X86中斷過程及應(yīng)用(內(nèi)部中斷、NMI、INTR) 保護(hù)方式下的中斷過程*可編程中斷控制器8259A*

8259A內(nèi)部結(jié)構(gòu)及引腳功能 8259A工作原理及工作方式 8259A的編程及應(yīng)用、高級中斷控制器*為選講部分2022/12/233一、基本概念中斷(概念、中斷源、中斷分類、中斷特點(diǎn))中斷過程(請求、判優(yōu)、響應(yīng)、處理、返回)中斷優(yōu)先權(quán)(軟件排優(yōu)、鏈形電路、專用中斷)2022/12/2341、中斷(中斷源)的概念(1)所謂中斷,是指處理器在執(zhí)行正常程序過程中,當(dāng)出現(xiàn)某些異常情況或某個(gè)外部設(shè)備請求時(shí),處理器暫時(shí)中止正在執(zhí)行的程序,轉(zhuǎn)而去執(zhí)行其特定的服務(wù)程序,并在執(zhí)行完服務(wù)程序后返回原來被中止的程序處繼續(xù)執(zhí)行的過程。中斷申請主程序

中斷服務(wù)子程序中斷返回2022/12/235(2)中斷源——產(chǎn)生中斷的原因(由軟、硬件產(chǎn)生)輸入/輸出設(shè)備:鍵盤、顯示器、打印機(jī)數(shù)據(jù)通道:磁帶、磁盤等電源故障實(shí)時(shí)控制中的各種參數(shù)中斷指令I(lǐng)NTn等1、中斷(中斷源)的概念2022/12/236(3)中斷的分類內(nèi)中斷:由CPU執(zhí)行軟中斷指令I(lǐng)NTn或異常而產(chǎn)生的中斷。外中斷:外部中斷源向CPU提出請求而產(chǎn)生的中斷(如INTR、NMI引腳上出現(xiàn)的中斷源)。2022/12/237

“同步”操作CPU和多臺I/O外設(shè)同時(shí)工作,需要時(shí)服務(wù)一下。實(shí)時(shí)處理CPU可根據(jù)外部事件的情況,決定響應(yīng)中斷服務(wù)的順序。中斷嵌套中斷嵌套,使得CPU即使在外理某一中斷源時(shí),也可響應(yīng)更重要的中斷源的申請。中斷方式與程序控制方式最大的不同是外設(shè)具有申請使用CPU的主動(dòng)權(quán)。

圖示圖示(4)中斷的特點(diǎn)2022/12/238

2、中斷處理過程

中斷請求 中斷判優(yōu) 中斷響應(yīng) 中斷處理 中斷返回1)

中斷請求:由中斷源提出中斷申請這是引起中斷的第一步(必要條件)中斷源產(chǎn)生中斷的條件,隨中斷源不同而不同如軟件中斷(除法出錯(cuò)中斷,條件是除數(shù)為0或商過大)硬件中斷又分為可屏蔽和非屏蔽中斷,必須要使INTR或NMI信號有效。包括

五個(gè)基本過程2022/12/239

2)中斷判優(yōu):決定是否立即響應(yīng)中斷申請由于中斷產(chǎn)生的隨機(jī)性,在出現(xiàn)多個(gè)中斷源同時(shí)申請中斷處理時(shí),就必須根據(jù)設(shè)計(jì)者要求的輕重緩急來確定響應(yīng)哪個(gè)中斷源的申請(中斷優(yōu)先權(quán))。在已進(jìn)行中斷處理的情況下,可決定是否進(jìn)行中斷嵌套。在新中斷源優(yōu)先權(quán)更高時(shí),就產(chǎn)生中斷嵌套,否則等原中斷源處理完畢后,再響應(yīng)新的中斷(非嵌套)。CPU在處理中斷時(shí),又有優(yōu)先權(quán)更高的中斷請求,則CPU暫停現(xiàn)在的中斷程序,轉(zhuǎn)去處理新的中斷程序,處理完畢后,返回原中斷處繼續(xù)執(zhí)行的現(xiàn)象。

中斷優(yōu)先權(quán):根據(jù)中斷源的輕重緩急,給每個(gè)中斷源確定一個(gè)中斷級別。2022/12/2310

3)中斷響應(yīng):CPU根據(jù)外設(shè)提供的中斷向量(中斷服務(wù)程序的入口地址)轉(zhuǎn)至服務(wù)程序入口地址。

CPU在執(zhí)行完每一條指令后,查詢是否有中斷申請,如果有中斷申請,且CPU的中斷允許是開放的,則CPU硬件自動(dòng)完成下列工作:①

保留斷點(diǎn)把CPU響應(yīng)中斷時(shí)的IP和CS的內(nèi)容稱為斷點(diǎn),即程序在此被中斷,并把斷點(diǎn)壓入椎棧(80X86還把FR內(nèi)容壓入椎棧)。斷點(diǎn):下一條指令的起始地址。2022/12/2311

②關(guān)中斷

CPU響應(yīng)中斷后,就自動(dòng)實(shí)現(xiàn)關(guān)中斷。(要實(shí)現(xiàn)中斷嵌套,必須在進(jìn)入服務(wù)程序后用指令開中斷。)

③形成中斷程序的入口地址

CPU根據(jù)中斷源提供的中斷向量形成中斷入口地址(即中斷服務(wù)程序的首地址),分別送入IP和CS(其形成方法在下一節(jié)中介紹)。2022/12/2312

這里,提醒大家注意二點(diǎn):

1、

CPU復(fù)位時(shí),中斷允許是關(guān)閉的,即為’IF=0’。

因此,要使用中斷,必須用指令來開中斷(如 80X86的STI和CLI指令)。

2、只有中斷申請,還不一定能實(shí)現(xiàn)中斷過程。除了外設(shè)的優(yōu)先權(quán)高低條件外,在CPU內(nèi)部 還有中斷允許觸發(fā)器(80X86的IF標(biāo)志),只有其 為’1’時(shí),才能響應(yīng)中斷。否則,既使有中斷 請求信號,CPU也不予響應(yīng)(必要條件)。2022/12/2313

4)

中斷處理:

完成對中斷源的處理任務(wù)

在中斷處理時(shí),首先要進(jìn)行現(xiàn)場保護(hù),(即把有關(guān)寄存器的內(nèi)容壓入堆棧),然后再進(jìn)行中斷處理,這是中斷的核心部分。在中斷處理結(jié)束后,再用POP指令恢復(fù)有關(guān)寄存器的狀態(tài)。2022/12/2314

5)中斷返回 通常在執(zhí)行中斷返回指令I(lǐng)RET前,要求用指令 開中斷,以便CPU再次響應(yīng)中斷,然后再執(zhí)行 IRET指令。對80X86CPU來說,由于IRET不僅具有彈出斷點(diǎn) 送IP和CS的功能,還具有恢復(fù)FR內(nèi)容的功能。

這一功能實(shí)際上起到了開中斷的作用。思考:80X86CPU在執(zhí)行IRET指令后,IF的狀態(tài)?2022/12/2315

3、中斷優(yōu)先權(quán) 在系統(tǒng)中如果有多個(gè)中斷源時(shí),就要考慮其中斷級 別,即中斷優(yōu)先權(quán)的問題。通常CPU引腳只有一條 中斷請求線,這就提出了當(dāng)有多個(gè)中斷源同時(shí)請求 時(shí),CPU應(yīng)響應(yīng)哪個(gè)中斷源的問題。 另外,CPU如正在處理中斷時(shí),也要求能響應(yīng)更高 級的中斷申請,并屏蔽同級或較低的中斷申請。

中斷優(yōu)先權(quán)的一般處理原則:

1)不同級別中斷發(fā)生,按級別高低處理;

2)高級中斷可以打斷低級中斷的處理程序;

3)低級中斷不能打斷高級中斷的處理程序;

2)同級中斷不能相互打斷中斷處理程序。

目前大都采用軟件和硬件的方法來確定中斷優(yōu)先權(quán)2022/12/2316

1)軟件查詢法利用軟件查詢技術(shù)來確定中斷優(yōu)先權(quán)的方法。 軟件查詢法確定優(yōu)先級的方法: 先查詢的中斷源優(yōu)先級最高, 最后查詢的級別最低。 軟件查詢法的實(shí)現(xiàn)可用屏蔽法 (一位一位測試)或移位法(左、右 移位到CF中測試)。

如圖2022/12/2317

軟件查詢法的優(yōu)缺點(diǎn):優(yōu)點(diǎn):

①硬件電路簡單②無需優(yōu)先權(quán)的硬件排隊(duì)電路③可隨時(shí)修改優(yōu)先級缺點(diǎn):

軟件查詢,影響中斷響應(yīng)的實(shí)時(shí)性。2022/12/2318

2)硬件優(yōu)先權(quán)排隊(duì)電路利用硬件優(yōu)先權(quán)排隊(duì)電路可大大提高CPU中斷處理的速度。常用的方法有兩種:簡單硬件方法----菊花鏈法(鏈形優(yōu)先權(quán)排隊(duì)電路)①

其接口原理圖②

工作原理:當(dāng)I/O接口有中斷請求時(shí),如CPU是開中斷的,就會(huì)發(fā)出INTA信號,如果沒有級別高的外設(shè)中斷請求,那么中斷邏輯電路會(huì)允許INTA信號原封不動(dòng)地往后傳遞,一直到發(fā)出中斷請求的接口;同時(shí),本級的中斷請求信號通過中斷邏輯電路實(shí)行阻塞,使INTA信號不再傳到后面的接口,當(dāng)某一接口收到中斷響應(yīng)信號后,才撤消中斷請求信號并轉(zhuǎn)入中斷服務(wù)子程序。點(diǎn)擊看圖2022/12/2319

當(dāng)多個(gè)外設(shè)同時(shí)發(fā)出中斷請求時(shí),按上述原理,顯然最接近CPU的接口先得到中斷響應(yīng),而排在菊花鏈中較后位置的接口則收不到到中斷響應(yīng)信號,從而一直保持中斷請求。此后,CPU進(jìn)入某個(gè)中斷處理子程序的執(zhí)行,如果在子程序

中用開中斷指令又一次使CPU開中斷(IF=‘1’),則CPU就會(huì)響應(yīng)高級別的中斷請求,又發(fā)出中斷響應(yīng)信號,直到這時(shí),第二個(gè)請求服務(wù)的接口才能撤消中斷請求。2022/12/2320

當(dāng)CPU響應(yīng)某個(gè)級別較低的中斷請求進(jìn)行中斷處理時(shí),如果又有級別較高的外設(shè)提出中斷請求,由于菊花鏈電路中級別低的外設(shè)不能屏蔽級別高的外設(shè)的中斷請求,故優(yōu)先權(quán)級別高的外設(shè)的中斷請求可傳遞到CPU。此時(shí),如果CPU是開放的,CPU就立即響應(yīng)該中斷,暫停當(dāng)前優(yōu)先權(quán)級別較低的外設(shè)的中斷服務(wù),轉(zhuǎn)入為高級別中斷外設(shè)服務(wù),這就是中斷嵌套??芍?菊花鏈電路控制優(yōu)先權(quán)的辦法是:各外設(shè)在鏈中的位置決定了優(yōu)先權(quán)的級別,越靠近CPU的接口,其優(yōu)先權(quán)級別越高。2022/12/2321

專用硬件方式------可編程的中斷控制器采用可編程中斷控制器是當(dāng)前微型計(jì)算機(jī)系統(tǒng)中解決中斷優(yōu)先權(quán)管理的常用辦法,其電路框圖見圖。通常,中斷控制器包括:中斷優(yōu)先權(quán)編碼電路、中斷請求鎖存器、中斷類型寄存器、當(dāng)前中斷服務(wù)寄存器以及中斷屏蔽寄存器。2022/12/2322

引用了中斷控制器,CPU的中斷響應(yīng)信號INTA和中斷請求信號就不再直接連到接口上,而是和中斷控制器連接。同時(shí),外設(shè)的I/O接口送來的中斷請求信號也都并行地送到中斷控制器的輸入端,這些信號經(jīng)中斷控制器內(nèi)部的優(yōu)先權(quán)編碼電路分配各自的優(yōu)先級順序,如IR0、IR1……IR7等等。在80X86系統(tǒng)中,中斷控制器的型號為8259A。2022/12/2323二、80X86(PentiumⅣ)中斷系統(tǒng)

1、80X86的中斷結(jié)構(gòu)不可屏蔽中斷(NMI)可屏蔽中斷(INTR)中斷分類圖外部中斷:內(nèi)部中斷:

專用中斷

指令中斷(INTN)2022/12/2324不可屏蔽中斷NMI含義:不能用軟件來控制是否允許中斷的一種外部中斷。常見NMI中斷有:

(1)電源掉電;

(2)存儲(chǔ)器檢驗(yàn)出錯(cuò);

(3)總線奇偶錯(cuò)等。2022/12/2325可屏蔽中斷INTR含義:可用軟件控制是否允許中斷的外部中斷。即STI使IF=1,允許中斷;CLI使IF=0,禁止中斷。常見INTR中斷有:

所有外部設(shè)備中斷如鍵盤、鼠標(biāo)、打印機(jī)、顯示器、聲卡、CD-ROM等。2022/12/23268086的內(nèi)部中斷專用中斷指令中斷在80X86系統(tǒng)中,通過執(zhí)行中斷指令或由CPU本身啟動(dòng)的中斷稱為內(nèi)部中斷。2022/12/23272、80X86中斷向量術(shù)語及概念實(shí)方式下中斷服務(wù)程序入口地址保護(hù)方式下中斷服務(wù)程序入口地址*保護(hù)方式與實(shí)方式中斷主要區(qū)別*2022/12/2328(1)術(shù)語及概念中斷類型碼(中斷類型號)中斷向量中斷向量表中斷描述符*中斷描述符表*2022/12/2329中斷類型碼(中斷類型號)中斷類型碼:中斷源的唯一編號數(shù)量:256個(gè)編號:0~255適用范圍:8086~PentiumIV(各種工作方式)2022/12/2330中斷向量含義:

中斷服務(wù)程序的入口地址(CS:IP)組成及格式:

共4個(gè)字節(jié),段地址及偏移地址。2022/12/2331中斷向量表含義:

存放256個(gè)中斷向量的內(nèi)存區(qū)域。即存放中斷服務(wù)程序入口地址的內(nèi)存區(qū)域稱為中斷向量表。中斷向量表大?。?KB(256*4)中斷向量表地址范圍:00000H~003FFH適用范圍:實(shí)地址方式2022/12/2332中斷向量地址指針=中斷類型碼×

4中斷類型碼n與其對應(yīng)的中斷向量存放起始地址之間的關(guān)系是:

起始地址=4×n;末地址=4×n+3

即中斷類型號n與其對應(yīng)的中斷向量存放在4×n~4×n+3指示的內(nèi)存單元中。(2)實(shí)方式下中斷服務(wù)程序入口地址2022/12/2333

實(shí)地址方式下的中斷服務(wù)程序入口地址求法【例1】假設(shè)在實(shí)地址方式下,內(nèi)存單元00140H到00147H中存放的內(nèi)容如圖所示,求51H號中斷的中斷服務(wù)程序入口地址。

2022/12/2334例1求解(1)求中斷向量存放的首地址和末地址

由N=51H可知中斷向量存放的首地址=51H×4=144H(左移兩位方法)

末地址=51H×4+3=147H(2)從首、末地址對應(yīng)的4個(gè)單元找出中斷向量

00144H~00147H中內(nèi)容就是51H號中斷源的中斷向量,對照中斷向量組成及格式可知:

段地址=4540H,偏移地址=3430H,所以,中斷服務(wù)程序入口地址的邏輯地址為4540:3430H物理地址為:

段地址×16+偏移地址=45400H+3430H=48830H2022/12/2335【例3】已知20H~23H單元存放中斷向量12H、34H、56H、78H,求該向量所對應(yīng)的中斷類型碼?!纠?】已知中斷向量為1234:5678H,中斷類型碼為17H,問該中斷向量應(yīng)如何存入中斷向量表中?解:4×17H~4×17H+3=5CH~5FH四個(gè)單元,依次存放78H、56H、34H、12H。解:因?yàn)镹×4=表地址20H所以N=20H/4(右移2位)=08H(中斷類型碼)

2022/12/2336中斷向量組成及格式2022/12/2337中斷描述符*含義:

描述某中斷對應(yīng)中斷服務(wù)程序的入口地址信息及其屬性,

包括偏移地址和對應(yīng)段的選擇子。組成及格式:8個(gè)字節(jié)2022/12/2338中斷描述符表*含義:

存放256個(gè)中斷描述符的內(nèi)存區(qū)域。中斷描述符表容量:2KB。適用范圍:保護(hù)地址和V86方式。2022/12/2339(3)保護(hù)方式下中斷服務(wù)程序入口地址*(1)通過中斷類型號n從中斷描述符表IDT中找出中斷描述符。 中斷描述符首地址=中斷類型號碼n×8+IDT基地從該地址開始取出8字節(jié)內(nèi)容就是中斷描述符。(2)通過中斷描述符中的選擇子從GDT或LDT中找出或求出段描述符。(3)據(jù)段描述符提供的段基地址與中斷描述符提供的偏移地址合成物理地址。示例2022/12/2340保護(hù)方式下的中斷服務(wù)程序入口地址求法(例子)【例4】已知保護(hù)方式下,內(nèi)存單元中有關(guān)單元存放的內(nèi)容如右圖所示,IDT的首地址為00280000H,GDT首地址為00500000H,求20H號中斷服務(wù)程序入口地址。解:2022/12/2341例4求解(1)求偏移地址先找中斷描述符,然后從中找出中斷服務(wù)程序偏移地址由n=20H知,中斷描述符存放在00280000H+20H×8=00280100H開始

的8個(gè)單元,所以中斷描述符為:0042

EE000013

2012H(2)求中斷服務(wù)程序所在段的段基地址

段選擇子為:0013H=0000000000010011B

TI=0,段描述符在GDT中,RPL=11為普通用戶程序請求,

索引值=0000000000010B所以中斷描述符所在段描述符在GDT中的位置為:索引值×8+GDT首地址=0000000000010000B+00500000H=00500010H因此,段描述符為:3918

40

423400

0096

H

段基地址=39423400H(3)合成物理地址服務(wù)程序入口地址=對應(yīng)段的段基地址+偏移地址=39423400H+00422012H=39845412H2022/12/2342(3)保護(hù)方式與實(shí)方式中斷主要區(qū)別表的大小不同中斷描述符表2KB;中斷向量表1KB表的位置不同保護(hù)方式下的中斷描述符表可位于內(nèi)存的任何位置,由中斷描述符寄存器(IDTR)決定;實(shí)地址方式下的中斷向量表只能固定在00000H~003FFH的最低內(nèi)存1KB的區(qū)域。中斷服務(wù)程序存放位置不同保護(hù)方式下的中斷服務(wù)程序可以放到內(nèi)存的任何區(qū)域,而實(shí)地址方式下的中斷服務(wù)程序只能在存放的1MB以下的內(nèi)存區(qū)域。2022/12/2343中斷嵌套含義:在低級中斷中斷正在處理時(shí)高一級中斷請求,則進(jìn)入高級中斷處理程序,處理完高級再返回低級中斷處理程序。示意圖2022/12/23441)內(nèi)部中斷—軟件中斷定義:在80X86系統(tǒng)中,通過執(zhí)行中斷指令或由CPU本身啟動(dòng)的中斷稱為內(nèi)部中斷。專用中斷及指令中斷內(nèi)部中斷的處理過程內(nèi)部中斷的特點(diǎn)3、80X86中斷過程及應(yīng)用2022/12/2345(1)專用中斷及指令中斷專用中斷0型中斷—除法出錯(cuò)中斷(DIV或IDIV)類型碼為00H的0型中斷為除法出錯(cuò)中斷。DIV或IDIV指令被執(zhí)行時(shí),若除數(shù)為0或商超過寄存器的字長時(shí),立即產(chǎn)生0型中斷。1型中斷—單步中斷(陷阱中斷)。當(dāng)TF=‘1’時(shí),80X86就處于單步工作方式。即每執(zhí)行完一條指令后,就自動(dòng)產(chǎn)生1型中斷。2022/12/2346這里提醒注意兩點(diǎn):中斷響應(yīng)后CPU自動(dòng)保護(hù)FR(入棧),并清除TF和IF。故進(jìn)入單步中斷處理后,CPU就不再處于單步工作方式,而是以正常工作方式工作。只有單步處理結(jié)束后,從推棧中彈出FR標(biāo)志,才能使CPU回到單步方式。在80X86指令中,沒有TF的設(shè)置或清除指令。如要設(shè)置或清除TF可利用PUSHF和POPF指令。2022/12/23473型中斷—斷點(diǎn)中斷(INT3以及INTn指令)3型中斷是專供在程序中設(shè)置斷點(diǎn)用的,故稱斷點(diǎn)中斷。用INT3表示。

INTn與INT3的區(qū)別在于前者是雙字節(jié),而后者是單字節(jié)。因而可方便地置于被調(diào)用程序之中,其指令置入處即為斷點(diǎn)。4型中斷—溢出中斷(INTO指令)主要用于算術(shù)運(yùn)算出現(xiàn)溢出時(shí)(OF=‘1’)。通常與算術(shù)指令配合使用。2022/12/2348指令中斷(INTN)由指令中的操作數(shù)N來提供中斷類型碼(類型號)2022/12/2349

(2)內(nèi)部中斷的處理過程80X86的各種中斷類型的響應(yīng)和處理過程是不完全相同的主要區(qū)別:如何獲取相應(yīng)的中斷類型碼在內(nèi)部中斷中:①對專用中斷:類型碼是CPU自動(dòng)形成的,即

中斷功能

中斷類型碼除法出錯(cuò)0單步1斷點(diǎn)3溢出42022/12/2350

②對指令中斷INTN(

N為除0~4外的類型碼):類型碼由指令提供取得中斷類型碼N后,內(nèi)部中斷的處理過程是相同的,即:①

中斷類型碼×4→中斷向量表指針②

FR入棧(自動(dòng))→保護(hù)標(biāo)志位(作用同PUSHF)③

清除IF和TF標(biāo)志→屏蔽INTR中斷和TF中斷④

保護(hù)斷點(diǎn):CS、IP入棧(自動(dòng))⑤從中斷向量表指針處取出中斷服務(wù)子程序入口地址,分別送IP和CS(低位在前,高位在后,偏移量在前,段基值在后)⑥

按新的CS:IP內(nèi)容執(zhí)行中斷處理子程序。保護(hù)現(xiàn)場、中斷處理、恢復(fù)現(xiàn)場、中斷返回(IRET)2022/12/2351(3)內(nèi)部中斷的特點(diǎn)用一條指令來進(jìn)入中斷處理子程序,并且中斷類型碼或由指令提供,或是預(yù)定的。進(jìn)入中斷時(shí),不需執(zhí)行中斷響應(yīng)周期。CPU既不發(fā)出中斷響應(yīng)信號INTA,也不從數(shù)據(jù)總線上獲取中斷類型碼。除單步中斷外,內(nèi)部中斷無法用軟件禁止。即不管IF=‘1’或是‘0’,都不影響執(zhí)行內(nèi)部中斷。但單步中斷受TF控制。內(nèi)部中斷(單步中斷除外)比外部中斷具有更高的優(yōu)先權(quán)。除0型中斷外,一般內(nèi)部中斷沒有隨機(jī)性。2022/12/23522、外部中斷—硬件中斷

外屏蔽中斷NMI可屏蔽中斷INTR外部中斷響應(yīng)及處理過程2022/12/23531)外屏蔽中斷NMI

NMI引腳上產(chǎn)生的中斷稱為外屏蔽中斷。由NMI引腳出現(xiàn)上升沿觸發(fā),高電平維持2個(gè)T。它不受IF的控制。其中斷類型碼為02,中斷矢量存于0008H~000BH這四個(gè)單元之中。NMI產(chǎn)生中斷請求后,不管CPU當(dāng)前正在做何操作,都會(huì)響應(yīng)這個(gè)中斷請求。故其中斷優(yōu)先權(quán)是最高的。2022/12/23542)可屏蔽中斷INTR從INTR引腳接受的中斷請求信號稱為可屏蔽中斷。它一般是外部設(shè)備產(chǎn)生的。從CPU的INTR端引入高電平觸發(fā)。INTR受IF的控制。只有IF=‘1’時(shí),才有可能進(jìn)入其中斷處理過程。而INTR的優(yōu)先權(quán)由上節(jié)介紹的軟、硬件優(yōu)先權(quán)排隊(duì)電路來決定。

2022/12/23553)外部中斷響應(yīng)及處理過程N(yùn)MI線上的請求信號是邊沿觸發(fā)的,由80X86內(nèi)部鎖存。故80X86要求NMI線上的請求脈寬要大于2個(gè)T。CPU采樣到NMI請求后自動(dòng)提供02中斷類型碼。其后的處理過程同內(nèi)部中斷。INTR線上的請求信號是電平觸發(fā)的。CPU內(nèi)部由CLK來同步。INTR線上的請求信號的高電平必須保持到當(dāng)前指令結(jié)束。2022/12/2356在INTR信號有效時(shí),如果IF=‘1’,則CPU在執(zhí)行完當(dāng)前指令后,就立即響應(yīng)INTR,轉(zhuǎn)入中斷響應(yīng)周期。中斷響應(yīng)周期有兩個(gè),每個(gè)由4個(gè)T構(gòu)成。在每個(gè)中斷響應(yīng)周期CPU都向INTA引腳上發(fā)出一個(gè)INTA的負(fù)脈沖信號,請求中斷的外設(shè)在收到第二個(gè)負(fù)脈沖時(shí),立即往數(shù)據(jù)總線上發(fā)送中斷類型碼。CPU在T4前沿采樣數(shù)據(jù)總線,獲取中斷類型碼。響應(yīng)2022/12/2357如圖:T1T2T3T4TITITIT1CLKALEINTA

D7-D0中斷類型T4T2T3中斷響應(yīng)總線周期2022/12/2358

處理過程:PUSHDSMOVAX,0000HMOVDS,AXMOVAX,3210HMOVBX,0100HMOV[BX],AXMOVAX,7654HMOV2[BX],AXPOPDSSTI…MOVAX,2000HADDAX,AXMOV[BX],AX140H號I/O外設(shè)申請中斷3426587中斷類型碼40HCPU當(dāng)前FR、CS、IP入棧78H56H34H12HFRLFRHSPSPIF=‘0’,TF=‘0’(4X40H)IP=3210H(4X40H+2)CS=7654H

形成子程序入口地址

7654:3210PUSHAX;保護(hù)現(xiàn)場

…STI;開中斷以備嵌套…;中斷處理

POPAX ;中斷返回IRET執(zhí)行完ADDCPU響應(yīng)INTA=‘0’IP、CS、FR出棧形成返回地址1234:5678H和當(dāng)時(shí)狀態(tài)FR1234:5678H80X86CPU處理INTR的完整過程共8步2022/12/2359

在時(shí)序上,共有7個(gè)總線周期來完成該中斷響應(yīng),即:①

執(zhí)行第一個(gè)INTA總線周期,以通知外設(shè)準(zhǔn)備中斷類型碼;②

執(zhí)行第二個(gè)INTA總線周期,(8086時(shí)兩個(gè)周期之間插入2~3個(gè)T)這時(shí),被響應(yīng)的外設(shè)通過數(shù)據(jù)總線的低8位D7~D0,提供單字節(jié)的中斷類型碼n(8259A提供),CPU接收中斷類型碼后,立即左移二位,形成中斷向量表指針,存于暫存器;③

執(zhí)行一個(gè)總線寫周期,把FR的內(nèi)容壓堆棧。同時(shí),清IF和TF

標(biāo)志,以禁止其它INTR和單步中斷的進(jìn)入;④執(zhí)行一個(gè)總線寫周期,CS內(nèi)容入棧;⑤執(zhí)行一個(gè)總線寫周期,IP內(nèi)容入棧;⑥執(zhí)行一個(gè)總線讀周期,從向量表中取出中斷服務(wù)子程序入口地址偏移量→IP;⑦

執(zhí)行一個(gè)總線讀周期,

從向量表中取出中斷服務(wù)子程序入口段地址→CS。然后就轉(zhuǎn)入中斷服務(wù)子程序的處理。斷點(diǎn)入棧2022/12/2360

概括整個(gè)中斷響應(yīng)過程.我們發(fā)現(xiàn):對NMI和軟件中斷,則是跳過1~2步,從3~7開始執(zhí)行。2022/12/2361中斷優(yōu)先級識別中斷優(yōu)先級排隊(duì):把多個(gè)中斷源按輕重緩急優(yōu)先處理權(quán)由高到低的順序排列起來。排隊(duì)方法:軟件排隊(duì)和硬件排隊(duì)。在8086~PentiumⅣ系統(tǒng)中,中斷優(yōu)先級從高到低依次為:

內(nèi)部異常中斷(除單步)>INTn>NMI>INTR>單步中斷2022/12/23622022/12/23632022/12/23647.4可編程中斷控制器8259A*基本情況:

(1)8位可編程中斷控制器,又稱優(yōu)先級控制器

(2)處理8級向量優(yōu)先級中斷

(3)具有單一+5V供電

(4)8259A芯片級聯(lián)組成強(qiáng)大的中斷管理系統(tǒng)(多至64級外部中斷)。

(5)優(yōu)先級方式可編程

(6)多級中斷管理主要內(nèi)容

一、內(nèi)部結(jié)構(gòu)及工作原理

和功能二、引腳信號

三、工作方式

四、編程方法2022/12/23658259A中斷控制器(可編程)(PIC)

中斷控制器的功能是在有多個(gè)中斷源的系統(tǒng)中,接收外部的中斷請求,判斷中斷優(yōu)先權(quán),并將級別最高的請求送到CPU的INTR端,當(dāng)CPU響應(yīng)中斷并進(jìn)入中斷子程序的處理過程后,中斷控制器仍負(fù)責(zé)對外部中斷請求的管理。Intel8259A是專門設(shè)計(jì)的中斷控制芯片,它將中斷源優(yōu)先級排隊(duì),判優(yōu),提供中斷類型碼的電路集于一體,可管理8級(64個(gè))中斷。(級連)2022/12/2366一、內(nèi)部結(jié)構(gòu)及工作原理2022/12/2367內(nèi)部結(jié)構(gòu)

內(nèi)部由IRR(中斷請求R)優(yōu)先權(quán)電路、ISR(中斷服務(wù)R)、IMR(中斷屏蔽R)、數(shù)據(jù)總線緩沖器(DBBUF)、讀/寫電路(R/WC)控制邏輯(CL)和級連緩沖/比較器組成。 每片8259A有8條中斷請求信號線IR0~I(xiàn)R7,其中斷請求信號通過IRR和ISR來處理:IRR:寄存所有要求服務(wù)的中斷請求(8B)ISR:寄存所有正在被服務(wù)的中斷級(8B)IMR:寄存所有被屏蔽的中斷請求,(1→屏蔽該位中斷)(8B)2022/12/2368優(yōu)先權(quán)電路:對IRR中的中斷源判斷,并送至ISR數(shù)據(jù)總線緩沖器:(8B)三態(tài)雙向緩沖器,用于連接CPUDB和8279A內(nèi)部總線,輸入/輸出控制字,狀態(tài)字,狀態(tài)信息。讀寫電路:用來對8259進(jìn)行初始化命令字(ICW)、操作字(OCW)的輸入,以確定其工作方式和控制模式,以及讀出有關(guān)狀態(tài)信息。級連緩沖器:用于多片8259A之間的連接,使8級中斷源可擴(kuò)展至64級控制邏輯:完成對芯片的控制操作。2022/12/23698259A的工作原理

當(dāng)系統(tǒng)通電后,首先應(yīng)對8259A進(jìn)行初始化,8259A處于待命狀態(tài)。當(dāng)外設(shè)發(fā)出中斷請求后,8259A對其中斷請求的處理過程如下:1)IR0—IR7有一條或若干條(跳變或高電平),IRRi=‘1’

2)IR0—IR7至少有一個(gè)是中斷允許的,8259A由INT引腳向CPUINTR請求3)

STI→=‘1’→CPU用INTA響應(yīng)(當(dāng)前指令完成)2022/12/23704)

第一個(gè)INTR到達(dá),最高優(yōu)先權(quán)的ISRi=‘1’→IRRi=‘0’5)

第二個(gè)INTR到達(dá),8259A向DB輸出一個(gè)8位的向量號(類型號)INW2→D0—D7,CPU讀取此類型號*4(左移2位)→中斷向量指針→從向量表中取出入口地址(CS、IP)6)

若8259A工作于自動(dòng)結(jié)束時(shí)→ISRi=‘0’。否則,直至終端服務(wù)程序結(jié)束,發(fā)出EOI命令→ISRi=‘0’2022/12/2371功能:具有8具有優(yōu)先權(quán)控制通過級連可擴(kuò)展至64級優(yōu)先權(quán)控制;每一級都可以由軟件屏蔽或允許(開放);在中斷響應(yīng)時(shí),可提供相應(yīng)的中斷類型碼;可通過軟件來設(shè)定其工作方式。2022/12/2372數(shù)據(jù)總線緩沖器數(shù)據(jù)總線緩沖器是一個(gè)三態(tài)、雙向的8位緩沖器,是8259A與CPU系統(tǒng)數(shù)據(jù)總線的接口。數(shù)據(jù)總線緩沖器的主要功能有:

(1)通過數(shù)據(jù)總線緩沖器,CPU向8259A內(nèi)部發(fā)送命令。

(2)CPU接收8259A狀態(tài)信息。

(3)在中斷響應(yīng)周期,CPU從中獲得中斷類型號。2022/12/2373讀/寫邏輯接收CPU送來的讀/寫控制信號、片選信號以及地址選擇信號以對內(nèi)部控制邏輯編者編程以確定工作方式2022/12/2374級聯(lián)緩沖/比較器級聯(lián)緩沖/比較器在級聯(lián)方式的主從結(jié)構(gòu)中(兩個(gè)以上的8259A組成的系統(tǒng)),用來存放和比較系統(tǒng)中各8259A的從設(shè)備標(biāo)志(ID)。2022/12/2375控制邏輯控制邏輯是控制8259A內(nèi)部各個(gè)部件的主要邏輯電路。主要功能包括:

(1)根據(jù)CPU對8259A編程設(shè)定的工作方式來產(chǎn)生內(nèi)部控制信號。

(2)如果中斷請求寄存器IRR有未被屏蔽的位,則控制邏輯對應(yīng)于當(dāng)時(shí)最高優(yōu)先的中斷源,向CPU發(fā)中斷請求信號INT。

(3)接收CPU送來的中斷響應(yīng)信號,并允許中斷服務(wù)寄存器ISR的相應(yīng)位(ISRi)置位。(4)控制發(fā)出相應(yīng)的中斷類型號,通過數(shù)據(jù)總線緩沖器輸出到系統(tǒng)總線上。2022/12/2376中斷請求寄存器IRRIRR是一個(gè)專門用于記錄外部中斷源的中斷申請的8位寄存器。IRR的8個(gè)輸入端分別可接8個(gè)中斷源,只要有中斷請求即IRR的某端(IRRi)由低電平變高電平時(shí),則相應(yīng)的IRR位置1(IRRi=1),直到中斷服務(wù)寄存器相應(yīng)位置1,IRR相應(yīng)位才復(fù)位。2022/12/2377中斷優(yōu)先權(quán)分辨器PR優(yōu)先權(quán)分辨器PR用來確定存放在IRR中各個(gè)中斷請求信號對應(yīng)中斷源的優(yōu)先級。

并總是選出當(dāng)前最高優(yōu)先中斷源的中斷申請通知控制邏輯,以便控制邏輯發(fā)送中斷請求信號INT。2022/12/2378中斷服務(wù)寄存器ISRISR為用于記錄正在被CPU處理(服務(wù))的中斷級的8位寄存器。當(dāng)有中斷請求并被CPU響應(yīng)時(shí),即在CPU響應(yīng)中斷后發(fā)來第一個(gè)中斷響應(yīng)脈沖時(shí),將對應(yīng)的中斷服務(wù)寄存器相應(yīng)位置1,直到結(jié)束中斷或有中斷結(jié)束命令才復(fù)位。2022/12/2379中斷屏蔽寄存器IMRIMR是8位的用于從硬件上屏蔽中斷源的寄存器。如果IMR相應(yīng)位為1,則對應(yīng)中斷源的中斷請求被屏蔽。只有相應(yīng)位為0且IF=1,CPU才有可能響應(yīng)可屏幕中斷。2022/12/2380二、引腳信號D7~D0為8位雙向的數(shù)據(jù)線INT:中斷請求輸出信號INTA:中斷響應(yīng)輸入信號RD和WR:讀/寫控制信號CS:片選信號A0:端口選擇信號(兩個(gè)端口地址)IRRi:8個(gè)中斷源中斷請求端SP/EN:級聯(lián)控制

主:=1,從=02022/12/2381三、工作方式優(yōu)先級的方式屏蔽中斷源的方式結(jié)束中斷處理的方式連接系統(tǒng)總線的方式中斷請求信號方式2022/12/2382優(yōu)先級的方式全嵌套方式特殊全嵌套方式優(yōu)先級自動(dòng)循環(huán)方式優(yōu)先級特殊循環(huán)方式2022/12/2383全嵌套方式僅允許高一級中斷進(jìn)入嵌套。從高到低優(yōu)先級依次為IR0>IR1>IR2>IR3>IR4>IR5>IR6>IR7。2022/12/2384特殊全嵌套方式允許高一級,也允許同級中斷進(jìn)入嵌套。從高到低優(yōu)先級依次為IR0>IR1>IR2>IR3>IR4>IR5>IR6>IR7。2022/12/2385優(yōu)先級自動(dòng)循環(huán)方式在這種方式下,中斷源的優(yōu)先級是變化的,當(dāng)一個(gè)設(shè)備得到中斷服務(wù)以后,它的優(yōu)先級自動(dòng)降為最低優(yōu)先。在初始狀態(tài)下的優(yōu)先級為IR0>IR1>...>IR7,下一次優(yōu)先級為IR1>IR2>....>IR6>IR7>IR0,依次類推。2022/12/2386優(yōu)先級特殊循環(huán)方式與優(yōu)先級自動(dòng)循環(huán)方式只有一點(diǎn)區(qū)別:初始最優(yōu)者可由程序設(shè)定,可任意指定一個(gè)初始最高優(yōu)先級,以后再循環(huán)優(yōu)先。2022/12/2387屏蔽中斷源的方式普通屏蔽方式:設(shè)置8259A內(nèi)部中斷屏蔽寄存器IMR的相應(yīng)位為1(通過OCW1),即可屏蔽對應(yīng)中斷源的中斷申請。特殊屏蔽方式:先寫入特殊屏幕命令字OCW3,然后再寫屏蔽命令字OCW1。使當(dāng)前中斷服務(wù)寄存器ISR的相應(yīng)位自動(dòng)復(fù)位。這就只屏蔽了當(dāng)前正在處理的這級中斷。2022/12/2388結(jié)束中斷處理的方式自動(dòng)結(jié)束方式:系統(tǒng)一旦進(jìn)入中斷服務(wù)程序,8259A就自動(dòng)將當(dāng)前中斷服務(wù)寄存器相應(yīng)位清0。(在第二個(gè)中斷響應(yīng)脈沖)非自動(dòng)結(jié)束方式:在中斷服務(wù)程序結(jié)束,返回主程序之前發(fā)一條中斷結(jié)束命令,使8259A的當(dāng)前最高優(yōu)先級的中斷對應(yīng)的ISR復(fù)位。2022/12/2389連接系統(tǒng)總線的方式緩沖方式:

一般在多片8259A級聯(lián)系統(tǒng)中,8259A通過總線驅(qū)動(dòng)器與系統(tǒng)總線相連,而不是8259A直接與系統(tǒng)總線相連,這就是緩沖方式。非緩沖方式:

當(dāng)系統(tǒng)只有一片8259A或少量幾片8259A時(shí),一般將它直接與數(shù)據(jù)總線相連。這就是所謂的非緩沖方式。2022/12/2390中斷請求信號方式邊沿觸發(fā)方式:

在邊沿觸發(fā)方式下,8259A將中斷請求輸入端出現(xiàn)的上升沿作為中斷請求信號,且該信號可以一直保持為高電平。為了防止干擾,其高電平也應(yīng)有一定的寬度。電平觸發(fā)方式:

8259A把中斷請求輸入端出現(xiàn)的高電平作為中斷請求信號。但應(yīng)注意的是,當(dāng)中斷請求被響應(yīng)后,輸入端必須立即撤消高電平,以免引起再一次中斷。2022/12/2391四、編程方法一般原則:先進(jìn)行初始化編程,再進(jìn)行控制命令編程8259A的初始化編程8259A操作命令字的編程2022/12/23928259A的

初始化編程對8259A進(jìn)行初始化編程就是向8259A寫入兩到四個(gè)初始化命令字。流程如圖。初始化編程任務(wù):

●設(shè)定中斷請求信號的有效形式。

●設(shè)定8259A是單片還是多片級聯(lián)方式。

●設(shè)置中斷類型號。

●設(shè)置優(yōu)先排隊(duì)規(guī)則。

●設(shè)定中斷結(jié)束時(shí)的操作原則。2022/12/23938259A的編程

對8259A的編程可以分為二部分:①

初始化編程:由CPU向8259A送2~4個(gè)字節(jié)的初始化命令字ICW。(InitializationCommandWord),→使8259A處于準(zhǔn)備就緒狀態(tài)(可接收Iri中斷請求)②

工作方式編程:由CPU向8259A送3個(gè)字節(jié)的工作(操作)命令字OCW(OperationCommandWord)→規(guī)定8259A的工作方式*OCW可在8259A已結(jié)束初始化后的任何時(shí)間內(nèi)寫入2022/12/23948259A的初始化編程

8259A有A0一條地址線,可選擇偶/奇兩個(gè)地址。。在初始化時(shí),ICW,寫入偶地址命令寄存器,IC2~I(xiàn)C4(順序)寫入奇地址寄存器。初始化過程如圖1.

ICW1—芯片控制字目的(作用):①復(fù)位邊沿檢測電路,使(邊沿或電平)Iri上升沿才能產(chǎn)生中斷;②IMR=0(屏蔽開放)優(yōu)先權(quán)排隊(duì)IR0→IR7(最低)①②→復(fù)位8259A(∵8259A無RESET)②

指出系統(tǒng)中是單片還是多片8259A故在80X86系統(tǒng)中,ICW1定義如圖2022/12/23952.W2—中斷類型碼目的(作用):向CPU提供8個(gè)中斷類型碼*只提供高5位,低3位自動(dòng)填入,如圖中斷類型碼8H(IR0)—0FH(IR7)*高5位一旦確定,IR0—IR7的中斷類型碼就確定了2022/12/23963.

ICW3—主/從控制字:指明級連狀態(tài)在ICW1(D1)中,D1=1,→不用ICW3Dr=0,→級連,用ICW3,級連可擴(kuò)展至64個(gè)中斷源。這時(shí),主/從控制字ICW3是不同的,分別為2022/12/23974.

ICW4—方式控制字奇地址*自動(dòng)EOI:第2個(gè)INTA后清ISRi,不屏蔽中斷,(低級或同級)→無嵌套→可能亂*正常EOI:IRET前,發(fā)結(jié)束中斷命令字,清ISRi能屏蔽低級中斷,亦可中斷嵌套(高級)級連時(shí),發(fā)二個(gè)EOI:一個(gè)給8259A主一個(gè)給8289A從*ICW1~I(xiàn)CW4在寫入時(shí)需完全按圖的流程順序?qū)懭朊钭忠允緟^(qū)別,否則8259A將不能正確的工作。2022/12/2398例,對8259A設(shè)置寢化命令字,設(shè)端口地址為20H,21H MOVAL,00010011BOUT20H,ALMOVAL,00011000BOUT21H,ALMOVAL,00001101BOUT21H,AL2022/12/2399;設(shè)置ICW1:邊沿觸發(fā),一片8259A要ICW4;設(shè)置ICW2:中斷類型碼為18H—1FH;設(shè)置ICW4:(ICW1(D1)=1→1片,不要ICW3:不用特殊主嵌套方式,也不用AEOI方式,而用緩沖方式,正常EOI命令清ISR2022/12/231008259A的操作命令字

8259初始化后,其工作方式就確定了,即,優(yōu)先權(quán)IR0—IR7(高→低)Iri服務(wù)時(shí),ISRi=1,禁止同級或低級中斷,若Iri低,有Iri-1高級時(shí),(IF=1)Iri-1,ISRi不變,掛起,至Iri-1結(jié)束發(fā)EOI,ISRi-1=0,IRET,返回低級Iri中斷處執(zhí)行。若要改變此方式,或讀出IRR、ISR、IMR內(nèi)容,則需要寫入操作命令字OCW。OCW有3個(gè),即OCW1—OCW3,順序無定義。2022/12/231011.OCW1—屏蔽命令字作用:屏蔽Iri的中斷源申請,→間接改變優(yōu)先權(quán)。2.

OCW2—中斷方式字中斷優(yōu)先級循環(huán)—1非循環(huán)—02022/12/23102可知,OCW2的作用為:1.

設(shè)置優(yōu)先級循環(huán)方式2.

設(shè)置中斷結(jié)束方式8259有3種中斷結(jié)束方式(1)中斷自動(dòng)結(jié)束方式:只用于一片2859,無中斷嵌套情況,IC·4的D1(AEOI)=1,CPU響應(yīng)中斷后,立即清除ISRn,即第二個(gè)INTA到后,就清除了ISR,故無嵌套

2022/12/23103(2)

用的一般斷方式于全嵌套方式,CPU用OCW2(R、SL,EOI)=001發(fā)也一般(正常)中斷結(jié)束命令時(shí),8259A把當(dāng)前ISR的最高位復(fù)位,這時(shí)的最高位對應(yīng)于最后一次被響應(yīng)的中斷,故為結(jié)束當(dāng)前中斷,2022/12/23104(3)

特殊的中斷結(jié)束方式當(dāng)IR0—IR7優(yōu)先級改變時(shí),就不能確定正常EOI清除的ISRn位,而必須通過OCW2的R、SL、EOI(011)且指定L2—L0為初清除的ISRn位。8259的優(yōu)先級設(shè)置方式有以下幾種:2022/12/231051:

全嵌套方式ICW4(D4)=0Irn申請中斷(優(yōu)先級IR0—IR7)→中斷類型碼n送D·B→對應(yīng)的ISRn置位,→進(jìn)入中斷服務(wù)程序→中斷結(jié)束時(shí),CPU發(fā)出EOI(正常)命令→ISRn復(fù)位(當(dāng)前)可能是中斷嵌套(優(yōu)先級允許高級中斷產(chǎn)生嵌套)2022/12/231062:

特殊全嵌套方式類似全嵌套方式,不同的是除高級中斷嵌套外,還允許同級中斷嵌套,主要用于多級8259管理。*對2級的8259來說,IR0—Irn有優(yōu)先級高低之分,但對1級8259來說,就只有Iri這一同級了2022/12/231073:

優(yōu)先級自動(dòng)循環(huán)方式優(yōu)先級設(shè)定:利用OCW2改變優(yōu)先級,例,設(shè)IR3最高,則IR2就自然為最低了,IR3IR4、5、6、7、0、1、2同級中斷源,往往采用優(yōu)先級自動(dòng)循環(huán)方式,即一個(gè)設(shè)備被服務(wù)后,其優(yōu)先級就變最低,原來次高的設(shè)備為最高,上例IR3響應(yīng)后,優(yōu)先級為IR4、5、6、7、0、1、2、3自動(dòng)循環(huán)方式又分為二種:2022/12/23108一種為在EOI下的循環(huán),由R、SL、EOI=101設(shè)置一種為在AEOI下的循環(huán),由R、SL、EOI=100設(shè)定,000清除,(即恢復(fù)循環(huán)前的優(yōu)先級)2022/12/23109特殊循環(huán):指定最低優(yōu)先級,例IR3最低則IR4最高由OCW2R、SL、EOI=110時(shí),L2UL0指定最低級OCW2R、SL、EOI=111時(shí),L2UL0指定最低級,同時(shí)清除當(dāng)前ISRn位(特殊EOI方式下循環(huán))例:設(shè)IR5最高OCW4=1100010時(shí),則IR5對應(yīng)的ISR5復(fù)位,同時(shí)優(yōu)先級為IR3、4、5、6、7、1、22022/12/231103.

OCW3—狀態(tài)插操作命令字作用:①設(shè)置和撤消特殊民間蔽方式①

設(shè)置中斷查詢方式②

設(shè)置對8259內(nèi)部寄存器讀出命令無操作2022/12/231111.

OCW3—狀態(tài)插操作命令字作用:①設(shè)置和撤消特殊民間蔽方式①

設(shè)置中斷查詢方式②

設(shè)置對8259內(nèi)部寄存器讀出命令無操作2022/12/231128259共有4個(gè)狀態(tài)字可供查詢,它們是IRR:中斷請求RISR:中斷服務(wù)RIMR:中斷屏蔽R以及中斷狀態(tài)字有中斷請求—1無中斷請求—0最高請求優(yōu)先級編碼2022/12/23113例:MOVAL,0001010BOUT20H,ALINAL,20H;讀IRRMOVAL,00001011BOUT20H,AL2022/12/23114INAL,20H;讀ISRMOVAL,00001100BOUT20H,ALINAL,20H;讀中斷狀態(tài)INAL,21H;讀IMR2022/12/23115芯片初始化命令字ICW12022/12/23116中斷類型初始化命令字ICW2要寫入8259A的A0=1的端口2022/12/23117主/從片初始化命令字ICW3

——主片ICW3要寫入8259A的A0=1的端口IRi=1,指示IRRi處接一從片2022/12/23118主/從片初始化命令字ICW3

——從片ICW3要寫入8259A的A0=1的端口ID2,ID1,ID0編碼決定從片的IRRi接主片2022/12/23119控制初始化命令字ICW4要寫入8259A的A0=1的端口各位含義:

μPM:CPU類型,0=8080/8085,1=80X86。

AEOI:自動(dòng)結(jié)束中斷方式,AEOI=1自動(dòng)中斷結(jié)束方式。M/S:主/從片選擇,1=主片,0=從片。BUF:緩沖方式。BUF=1工作在緩沖方式。SFNM:特殊全嵌套方式。SFNM=1,特殊全嵌套方式。2022/12/231208259A初始化編程實(shí)例系統(tǒng)對主片8259A初始化的要求是:(如圖所示)

●主片的IR2接從片的INT端。

●主片中斷信號為邊沿觸發(fā)方式。

●級聯(lián)但無緩沖。

●起始中斷類型號為08H(IR0)。

●正常的中斷結(jié)束,不選擇特殊的全嵌套方式。

● 級聯(lián)方式要ICW3和ICW4。對從片的要求是:

●從片的INT接主片的IR2。

●從片起始中斷類型號為70H。

●級聯(lián)方式要ICW3和ICW4。2022/12/23121實(shí)例系統(tǒng)圖2022/12/23122編程實(shí)例解(主片)主片初始化程序段:

MOVAL,00010001B ;ICW1:邊沿,ICW4,ICW3

OUT20H,AL ;寫入ICW1

MOVAL,00001000H ;ICW2:IR0中斷類型號為08H

OUT21H,AL ;寫入ICW2

MOVAL,00000100B ;ICW3:主片IR2接從片INT

OUT21H,AL ;寫入ICW3

MOVAL,00000001B ;ICW4:非緩沖,正常中斷結(jié)束,非特殊全嵌套方式

OUT21H,AL ;寫入ICW42022/12/23123編程實(shí)例解(從片)從片初始化程序段:

MOVAL,00010001B ;ICW1:邊沿,ICW4,ICW3

OUT0A0H,AL ;寫入ICW1

MOVAL,01110000H ;ICW2:IR0中斷類型號為70H

OUT0A1H,AL ;寫入ICW2

MOVAL,00000010B ;ICW3:從片接主片的IR2

OUT0A1H,AL ;寫入ICW3

MOVAL,00000001B ;ICW4:非緩沖,正常結(jié)束,非特殊全嵌套方式

OUT0A1H,AL ;寫入ICW42022/12/231248259A操作命令字的編程中斷屏蔽命令字OCW1控制中斷和優(yōu)先級循環(huán)的操作命令字OCW2屏蔽查詢狀態(tài)命令字OCW32022/12/23125中斷屏蔽命令字OCW1

Mi=1表示對應(yīng)的IRi中斷源被屏蔽,Mi=0則取消屏蔽(i=0,1,2,3,4,5,6,7)。要求寫入8259A的A0=1的端口2022/12/23126控制中斷和優(yōu)先級循環(huán)的操作命令字OCW2

R:優(yōu)先級循環(huán)位,R=1為循環(huán)優(yōu)先。SL:指定IRi級別位。SL=1時(shí)L2~L0有效。L2~L0:編碼指定IRRi要求寫入8259A的A0=0的端口2022/12/23127屏蔽查詢狀態(tài)命令字OCW3

ESMM:特殊屏蔽允許,SMM:特殊屏蔽位。P:管理查詢方式。當(dāng)P=1時(shí)可用作查詢方式RR:讀寄存器命令位,RR=1讀寄存器IRR和ISR,RR=0禁止讀這兩個(gè)寄存器的內(nèi)容。RIS:寄存器選擇位,RR=1時(shí)且RIS=0讀IRR寄存器,RIS=1讀ISR寄存器的內(nèi)容。要求寫入8259A的A0=0的端口2022/12/23128操作命令編程實(shí)例MOVAL,11110000H;主片OCW1,屏蔽主片的IR7,IR6,IR5和IR4

OUT21H,AL ;寫入主片的OCW1MOVAL,10000001H;從片OCW1:屏蔽從片8259A的IR0和IR7

OUT0A1H,AL ;寫入從片的OCW1

MOVAL,00100000H;OCW2:結(jié)束最高中斷,清ISR相應(yīng)位,發(fā)普通中斷結(jié)束命令

OUT0A0H,AL ;先向從片發(fā)中斷結(jié)束命令

OUT20H,AL ;后向主片發(fā)中斷結(jié)束命2022/12/231298259A狀態(tài)的讀取中斷屏蔽寄存器IMR的讀取

讀取IMR只需用一條IN指令

IN AL,21H ;A0=1的偶地址端口中斷請求寄存器IRR的讀取

MOVAL,0AH;發(fā)讀取IRR的OCW3命令字OUT20H,AL;寫入A=0的偶地址端口

IN AL,20H ;讀IRR內(nèi)容到AL中中斷服務(wù)寄存器ISR的讀取

MOVAL,0BH ;發(fā)讀取ISR的OCW3命令字 OUT20H,AL ;命令字寫入A0=0的端口

IN AL,20H ;讀ISR內(nèi)容到AL中2022/12/23130中斷調(diào)用及中斷程序設(shè)計(jì)版權(quán)所有,南京航空航天大學(xué)2022/12/23131理解中斷調(diào)用指令的執(zhí)行過程INTn指令I(lǐng)RET指令2022/12/23132INTn指令的執(zhí)行過程(1)SP=SP-2

(2)PSW(FLAGS)入棧

(3)SP=SP-2

(4)斷點(diǎn)地址(INTn的下一條指令)的CS入棧

(5)SP=SP-2

(6)斷點(diǎn)地址的IP入棧

(7)IP=[0000:n*4]

(8)CS=[0000:n*4+2]2022/12/23133IRET指令的執(zhí)行過程(1)IP=[SS:SP]

(2)SP=SP+2

(3)CS=[SS:SP]

(4)SP=SP+2

(6)PSW=[SS:SP]

(7)SP=SP+22022/12/23134中斷調(diào)用BIOS功能調(diào)用

供助于存于系統(tǒng)板ROM中的BIOS程序?qū)崿F(xiàn)功能調(diào)用,它是最直接控制硬件的系統(tǒng)程序,是其它程序(OS,用戶程序等)與硬件的接口程序。DOS功能調(diào)用

供助于DOS操作系統(tǒng)提供的處理程序?qū)崿F(xiàn)功能調(diào)用。2022/12/23135BIOS中斷調(diào)用BIOS中斷類型BIOS調(diào)用方法BIOS調(diào)用示例2022/12/23136BIOS中斷類型

2022/12/23137BIOS調(diào)用方法在AH寄存器中設(shè)置調(diào)用子程序的功能號根據(jù)要求設(shè)置入口參數(shù)使用INTn指令轉(zhuǎn)入BIOS程序入口,其中n為中斷類型號程序運(yùn)行完畢后,如果有出口參數(shù),則按規(guī)定取得出口參數(shù)2022/12/23138BIOS調(diào)用示例顯示功能日期和時(shí)間鍵盤服務(wù)2022/12/23139BIOS顯示功能調(diào)用10H示例在當(dāng)前光標(biāo)處顯示一個(gè)字符‘$’,光標(biāo)自動(dòng)后移,功能號AH=0EH入口參數(shù):要顯示的字符在AL中調(diào)用方法:MOVAH,0EH

MOVAL,’$’

INT10H2022/12/23140利用BIOS日期調(diào)用讀取日期讀系統(tǒng)日期,功能號04H入口參數(shù):無出口參數(shù):CX=年(帶世紀(jì)),DH=月,DL=日調(diào)用方法:MOVAH,04

INT1AH2022/12/23141利用BIOS日期調(diào)用設(shè)置日期讀系統(tǒng)日期,功能號05H入口參數(shù):CX=年(帶世紀(jì)),DH=月,DL=日出口參數(shù):無調(diào)用方法:MOVCX,2002H;2002年

MOVDX,0512H;5月12日

MOVAH,05

INT1AH2022/12/23142利用BIOS時(shí)間調(diào)用讀取時(shí)間讀系統(tǒng)時(shí)間,功能號02H入口參數(shù):無出口參數(shù):CH=時(shí),CL=分,DH=秒調(diào)用方法:MOVAH,02

INT1AH2022/12/23143利用BIOS時(shí)間調(diào)用設(shè)置時(shí)間讀系統(tǒng)時(shí)間,功能號03H入口參數(shù):CH=時(shí),CL=分,DH=秒出口參數(shù):無調(diào)用方法:MOVAH,03

MOVCX,1209H;12:09

MOVDH,0

INT1AH2022/12/23144BIOS鍵盤服務(wù)調(diào)用16H示例從鍵盤緩沖區(qū)讀取字符入口參數(shù):AH=1出口參數(shù):ZF=0,AH=鍵盤掃描碼,AL=ACII碼字符

ZF=1,無鍵按下調(diào)用方法:MOVAH,1

INT16H2022/12/23145DOS中斷調(diào)用DOS中斷類型DOS調(diào)用方法DOS調(diào)用示例2022/12/23146DOS中斷類型

2022/12/23147D

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論