第7章-微型計(jì)算機(jī)中斷系統(tǒng)_第1頁
第7章-微型計(jì)算機(jī)中斷系統(tǒng)_第2頁
第7章-微型計(jì)算機(jī)中斷系統(tǒng)_第3頁
第7章-微型計(jì)算機(jī)中斷系統(tǒng)_第4頁
第7章-微型計(jì)算機(jī)中斷系統(tǒng)_第5頁
已閱讀5頁,還剩91頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

微型計(jì)算機(jī)原理與接口技術(shù)第七章微型計(jì)算機(jī)中斷系統(tǒng)1/14/20231第七章微型計(jì)算機(jī)中斷系統(tǒng)概述中斷處理過程中斷優(yōu)先級(jí)和中斷嵌套可編程中斷控制器8259A內(nèi)容提要1/14/20232CPU正常運(yùn)行程序時(shí),微處理器內(nèi)部事件或外設(shè)請(qǐng)求,引起CPU中斷正在運(yùn)行的程序,轉(zhuǎn)去執(zhí)行請(qǐng)求中斷的外設(shè)(或內(nèi)部事件)的服務(wù)子程序,執(zhí)行完畢,再返回被中止的程序,這一過程稱為中斷。1.中斷源引起中斷的事件。包括外部中斷和內(nèi)部中斷。一、中斷概念

2.中斷響應(yīng)CPU在每條指令的最后一個(gè)T周期檢測(cè)INTR引腳,一旦檢測(cè)到有中斷請(qǐng)求,在滿足中斷響應(yīng)的條件下(IF=1),響應(yīng)中斷,向外設(shè)發(fā)出INTA中斷響應(yīng)信號(hào)。并保護(hù)斷點(diǎn)(當(dāng)前CS,IP和PSW入棧),轉(zhuǎn)向中斷服務(wù)程序。執(zhí)行完畢,CPU返回中斷處,繼續(xù)向下執(zhí)行,稱為中斷返回?!?-1概述

——中斷概念

§7-1概述1/14/202333.中斷向量表CPU響應(yīng)中斷后,必須由中斷源提供地址信息,引導(dǎo)程序進(jìn)入中斷服務(wù)子程序,這些中斷服務(wù)程序的入口地址存放在中斷向量表中。內(nèi)存中專門開辟一個(gè)區(qū)域,存放中斷向量表(也稱中斷矢量表)。

4.中斷優(yōu)先級(jí)當(dāng)有多個(gè)中斷源請(qǐng)求中斷時(shí),中斷系統(tǒng)判別中斷申請(qǐng)的優(yōu)先級(jí),CPU響應(yīng)優(yōu)先級(jí)高的中斷,掛起優(yōu)先級(jí)低的中斷。當(dāng)CPU在運(yùn)行中斷服務(wù)子程序時(shí),又有新的更高優(yōu)先級(jí)的中斷申請(qǐng)進(jìn)入,CPU要掛起原中斷進(jìn)入更高級(jí)別的中斷服務(wù)子程序,實(shí)現(xiàn)中斷嵌套功能。§7-1概述

——中斷概念

1/14/20234

5.中斷屏蔽當(dāng)中斷源申請(qǐng)中斷時(shí),CPU可以由軟件設(shè)置,使之不能響應(yīng),稱為中斷屏蔽。對(duì)于各種計(jì)算機(jī)系統(tǒng),中斷系統(tǒng)的構(gòu)成差別很大,但都具有基本功能:⑴能實(shí)現(xiàn)中斷響應(yīng)、中斷服務(wù)、中斷返回、中斷屏蔽;⑵能實(shí)現(xiàn)中斷優(yōu)先級(jí)排隊(duì);⑶能實(shí)現(xiàn)中斷嵌套。§7-1概述

——中斷概念

1/14/20235

二、中斷分類8086/8088可以處理256種不同的中斷。按產(chǎn)生中斷的方法來分類,256種中斷可以分為兩大類:外部中斷內(nèi)部中斷外部中斷也稱硬件中斷,由外部的硬件產(chǎn)生,硬件中斷又分成不可屏蔽中斷和可屏蔽中斷。

如圖7-1所示?!?-1概述

——中斷分類

1/14/20236

NMIINTR可屏蔽中斷請(qǐng)求圖7-18086/8088中斷源§7-1概述

——中斷分類

1/14/20237

外部中斷⑴不可屏蔽中斷請(qǐng)求由CPU的引腳NMI引入,采用邊沿觸發(fā),上升沿之后維持兩個(gè)時(shí)鐘周期高電平有效。不能用軟件屏蔽,一旦有不可屏蔽中斷請(qǐng)求,如電源掉電等緊急情況,CPU必須予以響應(yīng)。不可屏蔽中斷請(qǐng)求的中斷類型號(hào)為2,中斷處理程序的入口地址在0段的0008H~000BH的4個(gè)單元中。

§7-1概述

——中斷分類

1/14/20238⑵可屏蔽中斷請(qǐng)求由CPU的引腳INTR引入,采用電平觸發(fā),高電平有效,INTR信號(hào)的高電平必須維持到CPU響應(yīng)中斷才結(jié)束??捎密浖O(shè)置來屏蔽,即使外部設(shè)備有可屏蔽中斷請(qǐng)求,CPU可以不予響應(yīng)。由外部設(shè)備引起的可屏蔽中斷請(qǐng)求要得到響應(yīng)有兩個(gè)條件:一個(gè)是外設(shè)中斷請(qǐng)求未被屏蔽,一個(gè)是CPU允許響應(yīng)中斷?!?-1概述

——中斷分類

1/14/20239

§7-1概述

——中斷分類

2.內(nèi)部中斷內(nèi)部中斷又稱為軟件中斷。⑴由中斷指令I(lǐng)NT引起的中斷CPU執(zhí)行一條INTn指令后會(huì)立即產(chǎn)生中斷,并且調(diào)用系統(tǒng)中相應(yīng)的中斷處理程序去完成中斷功能,指令中n指出了中斷類型號(hào)。⑵由CPU的某些運(yùn)算錯(cuò)誤引起的中斷除法錯(cuò)中斷:類型0中斷。在除法運(yùn)算中,若除數(shù)為0或商超過寄存器所能表達(dá)的范圍,則產(chǎn)生類型0中斷,轉(zhuǎn)入類型0中斷處理。溢出中斷:類型4中斷,專用指令為INTO。在運(yùn)算中,若溢出標(biāo)志位OF置1,下面緊跟溢出中斷指令I(lǐng)NTO,則產(chǎn)生類型4中斷;若OF為0,INTO指令不起作用。因此在加、減法運(yùn)算指令后應(yīng)安排一條INTO指令,否則運(yùn)算產(chǎn)生溢出后無法向CPU發(fā)出溢出中斷請(qǐng)求。1/14/202310

單步中斷:類型1中斷。標(biāo)志位TF=1時(shí),每條指令執(zhí)行后,CPU自動(dòng)產(chǎn)生類型1中斷。產(chǎn)生單步中斷時(shí),CPU同樣自動(dòng)地將PSW、CS和IP內(nèi)容入棧,然后清除TF、IF,進(jìn)入單步中斷處理程序,單步處理程序結(jié)束時(shí),原來的PSW從堆棧中取出,CPU重新置成單步方式。斷點(diǎn)中斷:類型3中斷。

當(dāng)CPU執(zhí)行到斷點(diǎn)時(shí)產(chǎn)生中斷,同時(shí)顯示當(dāng)前各寄存器和有關(guān)存儲(chǔ)器的內(nèi)容及下條要執(zhí)行的指令,供用戶檢查。設(shè)置斷點(diǎn)即把一條斷點(diǎn)指令I(lǐng)NT3插入到斷點(diǎn)設(shè)置處,CPU執(zhí)行到INT3指令便產(chǎn)生中斷?!?-1概述

——中斷分類

1/14/202311

一、CPU響應(yīng)中斷過程1.CPU響應(yīng)可屏蔽中斷的三個(gè)條件

外設(shè)的中斷請(qǐng)求的是隨機(jī)的,而CPU在每條指令的最后一個(gè)總線周期的最后一個(gè)T狀態(tài)去采樣中斷請(qǐng)求輸入線INTR,當(dāng)CPU在INTR引腳上接收到一個(gè)有效的中斷請(qǐng)求信號(hào),而CPU內(nèi)部中斷允許觸發(fā)器是開放的,中斷接口電路中的中斷屏蔽觸發(fā)器未被屏蔽,則在當(dāng)前指令執(zhí)行完后CPU響應(yīng)中斷。

外設(shè)提出中斷申請(qǐng)本中斷位未被屏蔽中斷允許可屏蔽中斷處理的過程一般分成以下幾步:中斷請(qǐng)求;中斷響應(yīng);保護(hù)現(xiàn)場;轉(zhuǎn)入執(zhí)行中斷服務(wù)子程序;恢復(fù)現(xiàn)場和中斷返回。§7-2中斷處理過程

——CPU響應(yīng)中斷過程

§7-2中斷處理過程1/14/202312取下一條指令有中斷請(qǐng)求指令結(jié)束響應(yīng)中斷關(guān)中斷保護(hù)斷點(diǎn)尋找中斷源執(zhí)行指令轉(zhuǎn)中斷服務(wù)程序保護(hù)現(xiàn)場中斷服務(wù)恢復(fù)現(xiàn)場開中斷返回否是是否圖7-2可屏蔽中斷處理流程圖§7-2中斷處理過程

——CPU響應(yīng)中斷過程

1/14/202313

2.CPU響應(yīng)可屏蔽中斷的過程從數(shù)據(jù)總線上讀取中斷類型號(hào),將其存入內(nèi)部暫存器。將標(biāo)志寄存器PSW的值入棧。將PSW中的中斷允許標(biāo)志IF和單步標(biāo)志TF清0,以屏蔽外部其它中斷請(qǐng)求,避免CPU以單步方式執(zhí)行中斷處理子程字。

保護(hù)斷點(diǎn),將當(dāng)前指令下面一條指令的段地址CS和指令指針I(yè)P的值入棧,中斷處理完畢后,能正確返回到主程序繼續(xù)執(zhí)行。根據(jù)中斷類型號(hào)到中斷向量表中找到中斷向量,轉(zhuǎn)入相應(yīng)中斷服務(wù)子程序。中斷處理程序結(jié)束以后,從堆棧中依次彈出IP、CS和PSW,然后返回主程序斷點(diǎn)處,繼續(xù)執(zhí)行原來的程序。

§7-2中斷處理過程

——CPU響應(yīng)中斷過程

1/14/202314

3.CPU須執(zhí)行完下一條指令才響應(yīng)可屏蔽中斷的情況發(fā)出中斷請(qǐng)求時(shí),CPU正在執(zhí)行封鎖指令

。執(zhí)行向段寄存器傳送數(shù)據(jù)的指令(MOV和POP指令)

。遇STI和IRET指令。注意:當(dāng)遇到等待指令或串操作指令時(shí),允許在指令執(zhí)行過程中進(jìn)入中斷,但在一個(gè)基本操作完成后響應(yīng)中斷。

4.不可屏蔽中斷的響應(yīng)不必判斷IF是否為1,也不是由外設(shè)接口給出中斷類型號(hào),從NMI引腳進(jìn)入的中斷請(qǐng)求規(guī)定為類型2。在運(yùn)行中斷子程序過程中,若NMI上有不可屏蔽中斷請(qǐng)求進(jìn)入,CPU仍能響應(yīng)。

§7-2中斷處理過程

——CPU響應(yīng)中斷過程

1/14/202315

5.軟件中斷的響應(yīng)軟件中斷由程序設(shè)定,沒有隨機(jī)性,它不受中斷允許標(biāo)志位IF的影響,中斷類型號(hào)由指令I(lǐng)NTn中的n決定。正在執(zhí)行軟件中斷時(shí),如果有不可屏蔽中斷請(qǐng)求,就會(huì)在當(dāng)前指令執(zhí)行完后立即予以響應(yīng)。如果有可屏蔽中斷請(qǐng)求,并且IF=1,也會(huì)在當(dāng)前指令執(zhí)行完后予以響應(yīng)。§7-2中斷處理過程

——CPU響應(yīng)中斷過程

1/14/202316

二、中斷向量表

中斷向量表又稱中斷服務(wù)程序入口地址表。8086/8088系統(tǒng)允許處理256種類型的中斷,對(duì)應(yīng)類型號(hào)為0~FFH。在存儲(chǔ)器的00000H~003FFH,占1K字節(jié)空間,用作存放中斷向量。每個(gè)類型號(hào)占4個(gè)字節(jié),高2個(gè)字節(jié)存放中斷入口地址的段地址,低2個(gè)字節(jié)存放段內(nèi)偏移地址。各個(gè)中斷處理程序的段地址和段內(nèi)偏移地址按中斷類型號(hào)順序存放在中斷向量表中。因此由中斷類型號(hào)n×4即可得到相應(yīng)中斷向量的地址,取4n和4n十1單元中的內(nèi)容(中斷入口段內(nèi)偏移地址)裝入指令指針寄存器IP,取4n十2和4n十3單元中內(nèi)容(中斷入口段地址)裝入代碼段寄存器CS,即可轉(zhuǎn)入中斷處理程序。1.中斷向量表§7-2中斷處理過程

——中斷向量表

1/14/202317類型255中斷入口……類型32中斷入口類型31中斷入口……類型5中斷入口類型4中斷入口(溢出中斷)類型3中斷入口(斷點(diǎn)中斷)類型2中斷入口(NMI)類型1中斷入口(單步中斷)類型0中斷入口(除法出錯(cuò))IPCSIPCSIPCS03FF07C08000000400800C010014專用中斷系統(tǒng)使用供用戶使用(224個(gè))(5個(gè))(27個(gè))圖8-48086/8088中斷向量表§7-2中斷處理過程

——中斷向量表

1/14/202318

2.中斷向量(中斷入口地址)的設(shè)置有兩種方法可為中斷類型號(hào)n設(shè)置中斷向量,即將中斷服務(wù)程序的入口地址置入中斷類型號(hào)n所對(duì)應(yīng)的中斷向量表中。一種方法用指令來設(shè)置,另一種方法利用DOS功能調(diào)用來設(shè)置。①用指令來設(shè)置中斷服務(wù)程序的入口地址表

②利用DOS功能調(diào)用來設(shè)置中斷服務(wù)程序的入口地表

§7-2中斷處理過程

——中斷向量表

1/14/202319方法一:MOVAX,0;主程序中設(shè)置MOVES,AXMOVDI,N×4;中斷類型號(hào)×4MOVAX,OFFSETINTRAD;送中斷子程序的偏移地址至AXCLDSTOSW;偏移地址送到[4n],[4n+1]單元MOVAX,SEGINTRADSTOSW;段地址送到[4n+2],[4n+3]單元STI;開中斷……INTRAD:……;中斷服務(wù)子程序IRET用指令來設(shè)置中斷服務(wù)程序的入口地址表§7-2中斷處理過程

——中斷向量表

1/14/202320方法二:MOVAX,0;主程序中設(shè)置MOVES,AXMOVBX,N×4;中斷類型號(hào)×4MOVAX,OFFSETINTRAD;置偏移地址

MOVES:WORDPTR[BX],AXMOVAX,SEGINTRAD;置段地址送

MOVES:WORDPTR[BX+2],AXSTI;開中斷……INTRAD:……;中斷服務(wù)子程序IRET①

用指令來設(shè)置中斷服務(wù)程序的入口地址表§7-2中斷處理過程

——中斷向量表

1/14/202321設(shè)置中斷向量:把由AL中指定中斷類型號(hào)的中斷向量DS:DX,放置在中斷向量表中。預(yù)置:AL=中斷類型號(hào)DS:DX=中斷服務(wù)程序入口地址AH=25H執(zhí)行:INT21H

②利用DOS功能調(diào)用來設(shè)置中斷服務(wù)程序的入口地址表取中斷向量:把由AL中指定中斷類型號(hào)的中斷向量.預(yù)置:AL=中斷類型號(hào)AH=35H執(zhí)行:INT21H返回:ES:BX=中斷服務(wù)程序入口地址§7-2中斷處理過程

——中斷向量表

1/14/202322MOVAL,N;取中斷向量到ES:BXMOVAH,35HINT21HPUSHES;存原中斷向量PUSHBXPUSHDSMOVAX,SEGINTRAD;設(shè)置中斷向量段地址在DSMOVDS,AXMOVDX,OFFSETINTRAD;設(shè)置中斷向量偏移地址在DXMOVAL,N;中斷類型號(hào)n在ALMOVAH,25H;設(shè)置中斷向量INT21H

利用DOS功能調(diào)用來設(shè)置中斷服務(wù)程序的入口地址表§7-2中斷處理過程

——中斷向量表

1/14/202323 POPDS ……;中斷在此段程序內(nèi)產(chǎn)生并響應(yīng)

POPDX;恢復(fù)原中斷向量 POPDS MOVAL,N MOVAH,25H INT 21H RETINTRAD: …… IRET

利用DOS功能調(diào)用來設(shè)置中斷服務(wù)程序的入口地址表§7-2中斷處理過程

——中斷向量表

1/14/202324中斷類型號(hào)的獲取對(duì)于除法出錯(cuò),單步中斷,不可屏蔽中斷NMI,斷點(diǎn)中斷和溢出中斷,CPU分別自動(dòng)提供中斷類型號(hào)0~4。對(duì)于用戶自己確定的軟件中斷INTn,類型號(hào)由n決定。對(duì)外部可屏蔽中斷INTR,可以用可編程中斷控制器8259A獲得中斷類型號(hào)。

對(duì)外部可屏蔽中斷INTR,可用硬件電路(例如通用并行接口芯片8212)設(shè)計(jì)產(chǎn)生中斷類型號(hào)?!?-2中斷處理過程

——中斷向量表

1/14/202325三、中斷程序的編寫方法:主程序初始化:①設(shè)置中斷向量。設(shè)置8259A的中斷屏蔽寄存器的中斷屏蔽位。設(shè)置CPU中斷允許位標(biāo)志IF(開中斷STI)。

§7-2中斷處理過程

——中斷向量表

1/14/202326硬件(外設(shè)接口)和CPU自動(dòng)完成:①外設(shè)接口向CPU的INTR端發(fā)出中斷請(qǐng)求。當(dāng)前指令執(zhí)行完后,CPU發(fā)兩個(gè)中斷響應(yīng)信號(hào)INTA給外設(shè)接口。CPU取中斷類型號(hào)n。CPU自動(dòng)將當(dāng)前PSW、CS、IP內(nèi)容入棧保護(hù)。清除IF、TF,禁止外部中斷和單步中斷。從中斷向量表中取中斷程序入口地址(IP、CS)。轉(zhuǎn)向中斷服務(wù)子程序。

§7-2中斷處理過程

——中斷向量表

1/14/202327中斷服務(wù)子程序:中斷服務(wù)子程序的功能各有不同,但所有的中斷服務(wù)子程序都有相同的結(jié)構(gòu)形式。①程序開始必須保護(hù)中斷現(xiàn)場,可以通過一系列PUSH指令將CPU各寄存器的值入棧保護(hù)。②允許中斷嵌套時(shí),用STI指令設(shè)置開中斷,使中斷允許標(biāo)志IF為1。③執(zhí)行中斷處理程序。④用CLI指令設(shè)置關(guān)中斷,使中斷允許標(biāo)志IF=0,禁止其他中斷請(qǐng)求進(jìn)入。⑤給中斷命令寄存器送中斷結(jié)束命令EOI,使當(dāng)前正在處理的中斷請(qǐng)求標(biāo)志位被清除,否則同級(jí)中斷或低級(jí)中斷的請(qǐng)求仍會(huì)被屏蔽掉?!?-2中斷處理過程

——中斷服務(wù)子程序

1/14/202328⑥恢復(fù)中斷時(shí)的現(xiàn)場,通過一系列POP指令將CPU各寄存器的值恢復(fù)。⑦用中斷返回指令I(lǐng)RET返回主程序,此時(shí)堆棧中保存的斷點(diǎn)和標(biāo)志值分別裝入IP、CS和PSW?!?-2中斷處理過程

——中斷服務(wù)子程序

說明:中斷服務(wù)程序中開中斷,是為了允許中斷嵌套而設(shè)置的?;謴?fù)寄存器內(nèi)容時(shí),為了防止有中斷進(jìn)入破壞其內(nèi)容,先執(zhí)行了關(guān)中斷,然后在中斷返回時(shí),原來的PSW返回,使IF=1,又再開中斷,這樣返回主程序時(shí)中斷請(qǐng)求能得到允許。中斷結(jié)束命令EOI一般在中斷處理結(jié)束前發(fā)出,使一次中斷處理的過程是完整的。1/14/202329 pushax ;1、保護(hù)現(xiàn)場 …… pushbx sti ;2、開中斷 …… ;3、中斷處理 cli ;4、關(guān)中斷 popbx ;5、恢復(fù)現(xiàn)場 …… popax sti ;6、開中斷和中斷返回

iret 1/14/202330§7-2中斷處理過程

——中斷服務(wù)子程序

例7-9編寫中斷處理程序,要求主程序運(yùn)行時(shí),每10秒響鈴一次,同時(shí)屏幕上顯示信息“Thebellisring!”。分析:①利用系統(tǒng)定時(shí)器:每1/18.2秒中斷一次,調(diào)用一次INT1CH;②INT1CH的處理程序只有一條IRET指令;③編寫一段程序替代INT1CH,實(shí)現(xiàn)相應(yīng)功能。注意:①保存原中斷向量;②設(shè)置新中斷向量;③恢復(fù)原中斷向量。1/14/202331§7-2中斷處理過程

——中斷服務(wù)子程序

DATA SEGMENT ;定義數(shù)據(jù)段 COUNTDW1 MESSDB‘Thebellisring!’,0AH,0DH,‘$’DATA ENDSSTACK SEGMENT ;定義堆棧段 STTDB100DUP(?) TOPLABLEWORDSTACKENDSCODE SEGMENT ;定義代碼段MAIN PROC FAR ASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACK1/14/202332§7-2中斷處理過程

——中斷服務(wù)子程序

START: MOV AX,STACK ;堆棧段初始化

MOV SS,AX MOV SP,OFFSETTOP

PUSH DS ;程序段前綴

SUB AX,AX PUSH AX

MOV AX,DATA ;數(shù)據(jù)段初始化

MOV DS,AX;主程序初始化 ①設(shè)置中斷向量

MOV AL,1CH ;取原中斷向量,ES:BXMOV AH,35HINT 21H PUSH ES ;存儲(chǔ)原中斷向量 PUSH BX PUSH DS1/14/202333§7-2中斷處理過程

——中斷服務(wù)子程序

MOV DX,OFFSETRING ;RING的偏移地址

MOV AX,SEGRING ;RING的段地址

MOV DS,AX

MOV AL,1CH ;設(shè)置新中斷向量

MOV AH,25HINT 21H POP DS …… IN AL,21H ;②設(shè)置中斷屏蔽位(8259A) AND AL,0FEH OUT 21H,AL

STI ;③設(shè)置中斷允許標(biāo)志

1/14/202334§7-2中斷處理過程

——中斷服務(wù)子程序

;程序主體

MOV DI,2000

;延時(shí)DELAY: MOV SI,3000

DELAY1:DEC SI

JNZ DELAY1

DEC DI

JNZDELAY

POP DX ;取原中斷向量,DS:DX

POP DS MOVAL,1CH ;恢復(fù)原中斷向量

MOVAH,25H INT 21H RETMAIN ENDP 1/14/202335§7-2中斷處理過程

——中斷服務(wù)子程序

;中斷服務(wù)程序RING PROCNEAR

PUSHDS ;①保護(hù)現(xiàn)場PUSHAXPUSHCXPUSHDX

MOVAX,DATA ;設(shè)置串顯示首地址

MOVDS,AX STI ;②開中斷(允許嵌套) DECCOUNT ;③中斷服務(wù)程序主體

JNZEXIT ;10s計(jì)數(shù),不到零,退出

;到零,執(zhí)行中斷服務(wù)程序1/14/202336

MOV DX,OFFSETMESS

;顯示信息(參見P161)MOV AH,09H

INT21H

MOV DX,100 ;設(shè)定總延時(shí)常數(shù)

IN AL,61H ;響鈴(參見P113)

ANDAL,0FCH ;清零61H端口的D1和D0位SOUND:XOR AL,02H ;D1位:0→1→0→1……

OUT 61H,AL MOVCX,140H ;設(shè)定“響/不響”的延時(shí)常數(shù)WAIT: LOOPWAIT DEC DX JNZSOUND MOVCOUNT,182 ;設(shè)定10s的值

§7-2中斷處理過程

——中斷服務(wù)子程序

1/14/202337EXIT: CLI

;④恢復(fù)現(xiàn)場前關(guān)中斷, ;防止新中斷進(jìn)入破壞原被保護(hù)現(xiàn)場的內(nèi)容 ;⑤送中斷結(jié)束命令EOIPOPDX ;⑥恢復(fù)中斷現(xiàn)場 POPCX

POP AX

POP DS

IRET ;⑦中斷返回RINGENDPCODE ENDS

END START

§7-2中斷處理過程

——中斷服務(wù)子程序

1/14/202338四、中斷響應(yīng)時(shí)序CPU對(duì)可屏蔽中斷請(qǐng)求的響應(yīng)過程要執(zhí)行兩個(gè)連續(xù)的中斷響應(yīng)INTA總線周期,每個(gè)總線周期包括4個(gè)時(shí)鐘周期Tl~T4。第一個(gè)中斷響應(yīng)總線周期,CPU通知外設(shè)準(zhǔn)備響應(yīng)中斷,外設(shè)應(yīng)該準(zhǔn)備好中斷類型號(hào);第二個(gè)中斷響應(yīng)總線周期,CPU接收外設(shè)接口發(fā)來的中斷類型號(hào)。如下圖所示。§7-2中斷處理過程

——中斷響應(yīng)時(shí)序

1/14/202339§7-2中斷處理過程

——中斷響應(yīng)時(shí)序

1/14/202340CPU將地址/數(shù)據(jù)總線浮空,在T2~T4期間發(fā)中斷響應(yīng)信號(hào)INTA給8259A,表示CPU響應(yīng)此中斷請(qǐng)求,禁止其它總線控制器的總線請(qǐng)求。在最大模式時(shí),CPU啟動(dòng)LOCK信號(hào),通知系統(tǒng)中總線仲裁器8289,使系統(tǒng)中其它處理器不能訪問總線。1.第一個(gè)INTA周期§7-2中斷處理過程

——中斷響應(yīng)時(shí)序

1/14/202341

2.第二個(gè)INTA周期CPU向8259A發(fā)出第二個(gè)INTA信號(hào),8259A響應(yīng)第二個(gè)INTA,在T2和T3周期將一個(gè)字節(jié)的中斷類型號(hào)N送到數(shù)據(jù)總線低8位。CPU讀取中斷類型號(hào)N,乘以4,查中斷向量表得中斷服務(wù)程序入口地址。CPU保護(hù)PSW,清標(biāo)志位IF和TF,將斷點(diǎn)返回地址CS和IP入棧,轉(zhuǎn)向中斷服務(wù)程序入口。

注意:8086執(zhí)行中斷響應(yīng)時(shí),在兩個(gè)中斷響應(yīng)周期之間要插入2~3個(gè)空閑狀態(tài),8088系統(tǒng)并沒有在兩個(gè)中斷響應(yīng)總線周期中插入空閑狀態(tài)。

§7-2中斷處理過程

——中斷響應(yīng)時(shí)序

1/14/202342

8086要求中斷請(qǐng)求信號(hào)INTR必須維持2個(gè)時(shí)鐘周期的高電平。否則CPU執(zhí)行完一條指令后,如果總線接口部件正在執(zhí)行總線周期,則會(huì)使中斷請(qǐng)求得不到響應(yīng)而執(zhí)行其他的總線周期。8086工作在最大模式時(shí),S2S1S0組合為000,通過總線控制器8288發(fā)出INTA中斷響應(yīng)信號(hào)。8086不允許在兩個(gè)INTA周期之間響應(yīng)總線保持請(qǐng)求,但如果同時(shí)出現(xiàn)中斷請(qǐng)求和總線保持請(qǐng)求,則CPU先對(duì)總線保持請(qǐng)求服務(wù)。3.說明§7-2中斷處理過程

——中斷響應(yīng)時(shí)序

1/14/202343外設(shè)的中斷類型號(hào)一般通過16位數(shù)據(jù)總線的低8位傳送給8086,所以提供中斷向量的外設(shè)接口應(yīng)該接在數(shù)據(jù)總線的低8位上。在兩個(gè)INTA周期中,地址/數(shù)據(jù)/狀態(tài)總線浮空,但M/IO為低電平,而ALE在每個(gè)總線周期的T1狀態(tài)輸出一個(gè)高電平脈沖,作為地址鎖存信號(hào)。軟件中斷和不可屏蔽中斷不按照這種時(shí)序來響應(yīng)中斷?!?-2中斷處理過程

——中斷響應(yīng)時(shí)序

1/14/202344

概述多個(gè)中斷源同時(shí)向CPU請(qǐng)求中斷時(shí),CPU先響應(yīng)優(yōu)先級(jí)高的中斷請(qǐng)求。當(dāng)CPU正在處理中斷時(shí),有更高優(yōu)先級(jí)別的中斷請(qǐng)求進(jìn)入,并且IF=1,CPU先響應(yīng)更高級(jí)別的中斷請(qǐng)求,而屏蔽低級(jí)的中斷請(qǐng)求,形成中斷嵌套,或稱為多重中斷。多個(gè)中斷源的中斷流程如圖7-7所示,與單級(jí)中斷流程圖7-2相比,流程圖中增加了:①屏蔽本級(jí)與較低級(jí)中斷請(qǐng)求;②中斷服務(wù)前要開中斷,以允許中斷嵌套;③恢復(fù)現(xiàn)場前要關(guān)中斷,使恢復(fù)現(xiàn)場不受干擾;④中斷返回時(shí)自動(dòng)開中斷,以允許其它中斷能被CPU響應(yīng)?!?-3中斷優(yōu)先級(jí)和中斷嵌套

——概述

§7-3中斷優(yōu)先級(jí)和中斷嵌套1/14/202345中斷服務(wù)子程序關(guān)中斷恢復(fù)現(xiàn)場返回開中斷執(zhí)行一條指令關(guān)中斷取下一條指令保護(hù)現(xiàn)場屏蔽本級(jí)和低級(jí)中斷中斷?是否圖7-7多個(gè)中斷源中斷流程圖§7-3中斷優(yōu)先級(jí)和中斷嵌套

——概述

1/14/202346一、中斷優(yōu)先級(jí)

IBMPC機(jī)中規(guī)定優(yōu)先級(jí)從高到低的次序?yàn)椋簝?nèi)中斷(除法錯(cuò),INTO,INTn)不可屏蔽中斷(NMI)可屏蔽中斷(INTR)單步中斷可屏蔽中斷的優(yōu)先級(jí)設(shè)定有三種方法:§7-3中斷優(yōu)先級(jí)和中斷嵌套

——中斷優(yōu)先級(jí)

1/14/2023471.軟件查詢中斷優(yōu)先級(jí)軟件查詢中斷方式,是將各個(gè)外設(shè)的中斷請(qǐng)求信號(hào)通過或門相“或”后,送到CPU的INTR端,同時(shí)把幾個(gè)外設(shè)的中斷請(qǐng)求狀態(tài)位組成一個(gè)端口,賦以端口號(hào)。任一外設(shè)有中斷請(qǐng)求,CPU響應(yīng)中斷后進(jìn)入中斷處理子程序,讀取端口內(nèi)容,逐位查詢端口的狀態(tài),查到哪個(gè)外設(shè)有中斷請(qǐng)求,就轉(zhuǎn)入哪個(gè)外設(shè)的中斷服務(wù)程序。查詢程序的次序,決定了外設(shè)優(yōu)先級(jí)別的高低,先測(cè)試的中斷源優(yōu)先級(jí)別最高。

§7-3中斷優(yōu)先級(jí)和中斷嵌套

——中斷優(yōu)先級(jí)

1/14/202348

2.硬件查詢中斷優(yōu)先級(jí)——菊花鏈法§7-3中斷優(yōu)先級(jí)和中斷嵌套

——中斷優(yōu)先級(jí)

1/14/2023493.矢量中斷優(yōu)先級(jí)§7-3中斷優(yōu)先級(jí)和中斷嵌套

——中斷優(yōu)先級(jí)

中斷類型寄存器由中斷請(qǐng)求決定圖8-9矢量中斷優(yōu)先權(quán)控制器的原理圖IR1……IR0IR71/14/202350二、中斷嵌套

§7-3中斷優(yōu)先級(jí)和中斷嵌套

——中斷嵌套

1/14/202351

從上圖中可以看到:主程序必須有開中斷指令,使IF=1,才能響應(yīng)中斷。進(jìn)入中斷處理程序時(shí),系統(tǒng)自動(dòng)關(guān)中斷,在中斷服務(wù)程序中必須有STI開中斷指令,這樣才可以允許其它中斷進(jìn)入實(shí)現(xiàn)中斷嵌套。中斷結(jié)束返回前要有EOI中斷結(jié)束命令,用來清除中斷服務(wù)寄存器中的對(duì)應(yīng)位,允許低級(jí)中斷進(jìn)入。最后有中斷返回指令I(lǐng)RET,使程序返回到被中斷的程序的斷點(diǎn)處。中斷處理程序中如果沒有EOI指令,中斷處理中不會(huì)受其它中斷影響,在執(zhí)行IRET指令后,因?yàn)樽詣?dòng)返回中斷斷點(diǎn)及中斷標(biāo)志寄存器PSW的內(nèi)容,當(dāng)IF的值為1,系統(tǒng)便能開放中斷?!?-3中斷優(yōu)先級(jí)和中斷嵌套

——中斷嵌套

1/14/202352

一個(gè)正在執(zhí)行的中斷處理程序,中斷服務(wù)寄存器相應(yīng)位置“1”,在開中斷(IF=1)的情況下,能夠被優(yōu)先級(jí)高于它的中斷源中斷。但如果中斷處理中提前發(fā)出了EOI命令,則清除了正在執(zhí)行的中斷服務(wù),中斷服務(wù)寄存器置“1”位被清0,允許響應(yīng)同級(jí)或低級(jí)的中斷申請(qǐng)。從上圖中可以看到在IR2處理程序中,由于發(fā)出了EOI命令,清除了IR2的中斷服務(wù)寄存器,所以較低優(yōu)先級(jí)的IR4請(qǐng)求到達(dá)后,轉(zhuǎn)去處理IR4中斷請(qǐng)求。但這種情況要盡量避免,防止重復(fù)嵌套,使優(yōu)先級(jí)高的中斷不能及時(shí)服務(wù),因此一般EOI結(jié)束命令放在中斷返回指令I(lǐng)RET前面?!?-3中斷優(yōu)先級(jí)和中斷嵌套——中斷嵌套

1/14/2023537.4可編程中斷控制器Intel8259A一、8259A的功能具有8級(jí)優(yōu)先權(quán)控制,通過級(jí)聯(lián)可擴(kuò)展到64級(jí)優(yōu)先權(quán)控制(主從式中斷系統(tǒng))每一級(jí)中斷都可以單獨(dú)屏蔽或允許可提供中斷類型號(hào)傳送給CPU,從而能迅速地轉(zhuǎn)至中斷服務(wù)程序可通過編程選擇多種不同的工作方式1/14/202354二、8259A的內(nèi)部結(jié)構(gòu)及引腳7.4可編程中斷控制器Intel8259A1/14/2023558259A的級(jí)聯(lián)緩沖/比較器緩沖方式8259A通過總線驅(qū)動(dòng)器和數(shù)據(jù)總線相連SP/EN作輸出端(連總線驅(qū)動(dòng)器允許端)EN=0,數(shù)據(jù):8259A→CPUEN=1,數(shù)據(jù):CPU→8259A非緩沖方式8259A直接與數(shù)據(jù)總線相連SP/EN作輸入端SP=1,主片SP=0,從片7.4可編程中斷控制器Intel8259A1/14/2023561、8259A的編程結(jié)構(gòu)SP/ENCA0CA1CA2IORIOW總線D0~D7數(shù)據(jù)線D0~D7INTAINTRA0片選譯碼A5~A9CSA0RD

INTAWRINT

I3I4ICW1芯片控制

ICW2中斷類型號(hào)

ICW3主從片連接關(guān)系

ICW4方式控制0111A010010100OCW1

中斷屏蔽寄存器IMR

00

OCW2優(yōu)先級(jí)設(shè)置、發(fā)EOI

01

OCW3特殊屏蔽,查詢方式設(shè)置處理部分控制部分00000000

ISR當(dāng)前中斷服務(wù)寄存器PR優(yōu)先級(jí)裁決器VCCGND100A0IR0IR1IR2IR3IR4IR5IR6IR7IRR中斷申請(qǐng)寄存器00000000

三、8259A的中斷管理方式7.4可編程中斷控制器Intel8259A1/14/2023574個(gè)初始化命令寄存器ICW1、ICW2ICW3、ICW43個(gè)操作命令寄存器OCW1(IMR)OCW2、OCW3當(dāng)前中斷服務(wù)寄存器ISR中斷申請(qǐng)寄存器IRR

8259A內(nèi)部有9個(gè)可讀寫的寄存器8259A的編程結(jié)構(gòu)

I3I4ICW1芯片控制

ICW2中斷類型號(hào)

ICW3主從片關(guān)系

ICW4方式控制處理部分控制部分00000000

ISR當(dāng)前中斷服務(wù)寄存器PR優(yōu)先級(jí)裁決器IRR中斷申請(qǐng)寄存器00000000

中斷屏蔽寄存器IMROCW2

10010100

00

01

OCW3OCW18259A中斷控制器1/14/202358(1)初始化命令字(ICW1-ICW4)

決定8259A的工作方式通常是在計(jì)算機(jī)系統(tǒng)啟動(dòng)時(shí)在初始程序設(shè)置,一旦設(shè)定,一般在系統(tǒng)工作過程不再改變。例開機(jī)后,BIOS將8259A初始化為:①IR0~IR7中斷申請(qǐng)信號(hào)為上升沿觸發(fā)方式;②IR0~IR7對(duì)應(yīng)的中斷類型號(hào)分別為08H~0FH;③優(yōu)先級(jí)IR0最高,IR7最低;7.4可編程中斷控制器Intel8259A1/14/202359(2)操作命令字(OCW1,OCW2,OCW3)

在應(yīng)用程序中設(shè)定,動(dòng)態(tài)地控制CPU處理中斷的過程(3)ISR和IRR存放當(dāng)前8259A的狀態(tài)

通過讀取ISR和IRR的內(nèi)容,可了解當(dāng)前8259A工作情況7.4可編程中斷控制器Intel8259A1/14/202360(1)全嵌套方式8259A的中斷請(qǐng)求輸入端引入的中斷具有固定的優(yōu)先權(quán)排隊(duì)順序,IR0為最高優(yōu)先級(jí),IR1為次高優(yōu)先級(jí),依次類推,IR7為最低優(yōu)先級(jí)。

2、優(yōu)先級(jí)設(shè)置方式7.4可編程中斷控制器Intel8259A1/14/202361(2)特殊全嵌套方式特殊全嵌套方式和全嵌套方式基本相同,只有一點(diǎn)不同,就是在特殊全嵌套方式下,當(dāng)處理某一級(jí)中斷時(shí),如果有同級(jí)的中斷請(qǐng)求,那么,也會(huì)給予響應(yīng),從而實(shí)現(xiàn)一種對(duì)同級(jí)中斷請(qǐng)求的特殊嵌套。

注:特殊全嵌套僅用于多個(gè)8259A級(jí)連時(shí)的主8259A,而不能用于從屬8259A或單8259A系統(tǒng)。

7.4可編程中斷控制器Intel8259A1/14/202362(3)優(yōu)先級(jí)自動(dòng)循環(huán)方式。初始時(shí),優(yōu)先次序?yàn)镮R0→IR7,IR0最高,IR7最低。當(dāng)某級(jí)中斷響應(yīng)后,則優(yōu)先級(jí)降為最低。而其后的與之相鄰的優(yōu)先級(jí)升為最高。如,IR3響應(yīng)后的優(yōu)先級(jí)次序變?yōu)镮R4,IR5,IR6,IR7,IR0,IR1,IR2,IR3。(4)優(yōu)先權(quán)特殊循環(huán)方式。優(yōu)先權(quán)特殊循環(huán)方式與優(yōu)先權(quán)循環(huán)方式相比僅有一點(diǎn)不同,就是在優(yōu)先權(quán)特殊循環(huán)方式下,一開始的最低優(yōu)先權(quán)是由編程確定的。7.4可編程中斷控制器Intel8259A1/14/2023633、中斷結(jié)束的管理方式(固定優(yōu)先級(jí)的中斷結(jié)束)

中斷結(jié)束的管理就是用不同的方式使ISR中相應(yīng)位清零。普通結(jié)束方式EOI

8259A每得到一次EOI命令,就將ISR中已置位的各位中優(yōu)先級(jí)最高的位復(fù)位。特殊結(jié)束方式SEOI

該方式的特殊性在于,除了普通EOI方式的功能外,將明確指明本次復(fù)位的ISR位。自動(dòng)結(jié)束方式AEOI

自動(dòng)EOI方式是利用響應(yīng)中斷時(shí)最后一個(gè)響應(yīng)脈沖的后沿執(zhí)行一次普通EOI,而不需要CPU發(fā)送EOI指令,這時(shí)CPU為中斷服務(wù)而ISR沒有指示。7.4可編程中斷控制器Intel8259A1/14/2023644、循環(huán)優(yōu)先級(jí)的循環(huán)方法在循環(huán)優(yōu)先級(jí)方式中,與中斷結(jié)束方式聯(lián)合,有三種循環(huán)結(jié)束,結(jié)束時(shí)并確定下面的優(yōu)先權(quán)排隊(duì)。(1)普通EOI循環(huán)方式當(dāng)任地級(jí)中斷結(jié)束處理完后,使CPU給8259A回送普通EOI循環(huán)命令,8259A收到EOI循環(huán)命令后將ISR寄存器中最高優(yōu)先級(jí)的IRi置“1”位清“0”并賦給它最低優(yōu)先級(jí),將最高優(yōu)先級(jí)賦給它的下一級(jí)IRi+1。7.4可編程中斷控制器Intel8259A1/14/202365(2)特殊EOI循環(huán)方式特殊EOI循環(huán)方式即指定最低級(jí)循環(huán)方式,最低優(yōu)先級(jí)由編程決定,最高優(yōu)先級(jí)也相應(yīng)而定,這樣在當(dāng)前中斷服務(wù)結(jié)束前,使CPU給8259A回送特殊EOI結(jié)束命令,8259A收到此命令字后,指定最低優(yōu)先級(jí),并重新排列優(yōu)先級(jí)別。(3)自動(dòng)EOI循環(huán)方式自動(dòng)EOI方式是利用響應(yīng)中斷時(shí)最后一個(gè)響應(yīng)脈沖的后沿執(zhí)行一次普通EOI,自動(dòng)將ISR寄存器中相應(yīng)位清0,并立即改變各級(jí)中斷的優(yōu)先級(jí)別,改變方式與普通EOI循環(huán)循環(huán)方式相同。這時(shí)CPU為中斷服務(wù)而ISR沒有指示,使用這種方式要小心,防止重復(fù)嵌套產(chǎn)生。7.4可編程中斷控制器Intel8259A1/14/202366

IR7

IR6

IR5

IR4

IR3

IR2

IR1

IR0

ISR

內(nèi)容

0

0

1

0

0

1

0

0

原始狀

態(tài)

優(yōu)先級(jí)

7

6

5

4

3

2

1

0

ISR內(nèi)容

0

0

1

0

0

0

0

0

處理完IR2

優(yōu)先級(jí)

4

3

2

1

0

7

6

5

ISR內(nèi)容

0

0

0

0

0

0

0

0

處理完IR5

優(yōu)先級(jí)

1

0

7

6

5

4

3

2

IR7

IR6

IR5

IR4

IR3

IR2

IR1

IR0

ISR

內(nèi)容

0

1

0

0

0

1

0

0

原始狀

態(tài)

優(yōu)先級(jí)

7

6

5

4

3

2

1

0

ISR內(nèi)容

0

1

0

0

0

1

0

0

執(zhí)行置位

優(yōu)先權(quán)

優(yōu)先級(jí)

3

2

1

0

7

6

5

4

ISR內(nèi)容

0

1

0

0

0

0

0

0

處理完IR2

優(yōu)先級(jí)

4

3

2

1

0

7

6

5

普通EOI循環(huán)方式特殊EOI循環(huán)方式(正在處理IR2)1/14/2023675、中斷屏蔽方式

(1)普通屏蔽方式。這種屏蔽方式是通過編程將中斷屏蔽字寫入IMR而實(shí)現(xiàn)的。若寫入某位為1,則對(duì)應(yīng)的中斷請(qǐng)求被屏蔽;為0,則對(duì)應(yīng)的中斷請(qǐng)求被開放。(2)特殊屏蔽方式。在執(zhí)行較高級(jí)的中斷服務(wù)時(shí),希望開放較低級(jí)的中斷請(qǐng)求。采用普通屏蔽方式是不能實(shí)現(xiàn)這一要求的,因?yàn)橛闷胀ǚ绞綍r(shí),即使把較低級(jí)的中斷請(qǐng)求開放,但由于ISR中當(dāng)前正在服務(wù)的較高中斷級(jí)的對(duì)應(yīng)位仍為“1”,它會(huì)禁止所有優(yōu)先級(jí)比它低的中斷請(qǐng)求。采用特殊屏蔽方式,可在中斷服務(wù)程序中用中斷屏蔽命令字來屏蔽當(dāng)前正在服務(wù)的中斷級(jí)別(即設(shè)置IMR的相應(yīng)位為“1”),同時(shí)使ISR中對(duì)應(yīng)位清“0”,這樣就不但屏蔽了當(dāng)前正在服務(wù)的中斷級(jí),同時(shí)真正開放了其它優(yōu)先級(jí)較低的中斷請(qǐng)求。

7.4可編程中斷控制器Intel8259A1/14/2023686、中斷請(qǐng)求引入方式(2)電平觸發(fā)方式

8259A依靠IR引腳上的有效高電平信號(hào)來觸發(fā),而與有效電平出現(xiàn)的方式和時(shí)間無關(guān)。(1)邊沿觸發(fā)方式

利用IR輸入信號(hào)由低電平跳向高電平時(shí)觸發(fā)。當(dāng)IR產(chǎn)生上升沿后,應(yīng)保持高電平直到中斷被響應(yīng)為止。(3)查詢方式

允許8259A不工作于中斷方式,而是以查詢方式工作。CPU中的IF=0時(shí),禁止中斷請(qǐng)求,CPU要使用軟件查詢來確定中斷源,才能實(shí)現(xiàn)對(duì)外設(shè)的中斷服務(wù)。因此即有中斷的特點(diǎn),又有查詢的特點(diǎn)。7.4可編程中斷控制器Intel8259A1/14/202369四8259A的編程方法初始化命令字ICW,操作命令字OCW;系統(tǒng)復(fù)位后,應(yīng)初始化編程,按次序只寫一次;

設(shè)定觸發(fā)方式、緩沖方式、類型號(hào)基值、優(yōu)先級(jí)、結(jié)束方式初始化后,在任何位置可操作編程,沒有嚴(yán)格順序,允許重置,以動(dòng)態(tài)改變8259A的操作與控制。7.4可編程中斷控制器Intel8259A1/14/2023701.8259A的初始化命令字(1)初始化命令字ICW1D3(LTIM)表示中斷請(qǐng)求信號(hào)起作用的觸發(fā)方式。D3=1為電平觸發(fā),D3=0為邊沿觸發(fā)。D1(SNGL)表示系統(tǒng)是使用單片8259A還是多片8259A。D1=1為單片,D1=0為多片。D0(ICW4)表示是否需要ICW4。D0=1為需要,D0=0為不需要。D2(ADI)在8080/8085CPU模式下用,80x86CPU模式下不用。7.4可編程中斷控制器Intel8259A1/14/202371(2)初始化命令字ICW2設(shè)定8259A的中斷類型號(hào)D7~D3為中斷類型號(hào)的高5位,由用戶給出。低3位由8259A按IR0~I(xiàn)R7三位編碼值自動(dòng)填入。7.4可編程中斷控制器Intel8259A1/14/202372(3)初始化命令字ICW3(多片時(shí)需要)8259A作為主片的格式:(Di=1表示IRi接有從片)8259A作為從片的格式:

表示從片的INT輸出與主片8259A中的哪一個(gè)IRi相連接

7.4可編程中斷控制器Intel8259A1/14/202373(4)初始化命令字ICW4

D0(μPM):D0=1為80x86系統(tǒng),D0=0為8080/8085系統(tǒng)。D1(AEOI):表示是否采用自動(dòng)結(jié)束中斷方式,D1=1為自動(dòng)中斷結(jié)束方式,D1=0為非自動(dòng)中斷結(jié)束方式。D2(M/S):D2=1為主片,D2=0為從片。D3(BUF):D3=1表示有緩沖器D3=0表示沒有緩沖器。(決定8259A和系統(tǒng)數(shù)據(jù)總線之間是否有緩沖器)D4(SFNM):D4=1為特殊全嵌套方式,D4=0為全嵌套方式。(用于設(shè)定級(jí)聯(lián)方式下的優(yōu)先權(quán)管理方式)

7.4可編程中斷控制器Intel8259A1/14/202374寫入初始化命令字的流程:

7.4可編程中斷控制器Intel8259A1/14/2023752.8259A的操作命令字

(1)操作命令字OCW1(屏蔽操作命令字)Mi=1表示IRi上的中斷請(qǐng)求被屏蔽

7.4可編程中斷控制器Intel8259A1/14/202376(2)操作命令字OCW2(中斷方式命令字)D7(R):中斷排隊(duì)是否循環(huán)的標(biāo)志。R=1為優(yōu)先級(jí)循環(huán)方式,R=0為固定優(yōu)先級(jí)方式。D6(SL):選擇L2L1L0編碼是否有效的標(biāo)志。若SL=1,則L2L1L0編碼有效,若SL=0,則無效。D5(EOI):中斷結(jié)束命令。D5=1時(shí),則使現(xiàn)行的ISR中最高優(yōu)先級(jí)的相應(yīng)位復(fù)位(一般中斷結(jié)束方式),或由L2L1L0指定的ISR相應(yīng)位復(fù)位(特殊中斷結(jié)束方式)。D2D1D0(L2L1L0):對(duì)應(yīng)8個(gè)二進(jìn)制編碼,有兩個(gè)作用:一是用在特殊EOI命令中,表示清除的是ISR的哪一位;另一是用在優(yōu)先權(quán)特殊循環(huán)方式中,表示系統(tǒng)中最低優(yōu)先級(jí)編碼。

7.4可編程中斷控制器Intel8259A1/14/202377(3)操作命令字OCW3(狀態(tài)操作命令字)D6D5:決定8259A是否工作于特殊屏蔽方式。D6D5為11時(shí),8259A為特殊屏蔽方式;D6D5為10時(shí),8259A為一般屏蔽方式。D1D0:兩位規(guī)定隨后讀取的寄存器。D1D0為11時(shí),表示要讀ISR;D1D0為10時(shí),表示要讀IRR。D2(P):決定8259A是否處于程序查詢方式。D2=1時(shí),8259A處于程序查詢方式。當(dāng)8259A發(fā)出查詢命令后,隨后從偶地址讀出的數(shù)據(jù)即為中斷請(qǐng)求狀態(tài)字。OCW3命令字有三個(gè)功能:①設(shè)置或撤消特殊屏蔽方式;②設(shè)置中斷查詢方式;③設(shè)置讀8259A內(nèi)部寄存器方式。7.4可編程中斷控制器Intel8259A1/14/2023788259A的應(yīng)用舉例8086最小模式與8259A接口如下,外設(shè)中斷請(qǐng)求分別從IR2、IR4、IR7引入,中斷類型號(hào)從0C0H~0C7H,采用上升沿觸發(fā),寫出8259A初始化程序。

D0~D7RDWRA1A7A6A5A0M/IOA4A3A2INTRINTAD0~D7RDWRA0IR2IR4IR7CSINTINTAGG2AG2BCY1BA≥1≥1端口地址:10000100B84H10000110B86H7.4可編程中斷控制器Intel8259A1/14/202379CLI ;關(guān)中斷MOV AL,13H;ICW1:00010011B邊沿觸發(fā),單片,需要ICW4OUT 84H,ALMOV AL,0C0H;ICW2:中斷類型碼的D7~D3位為11000OUT 86H,ALMOV AL,01H;ICW4:00000001B全嵌套,非緩沖,非自動(dòng)EOIOUT 86H,ALMOV AL,6BH;OCW1:01101011B屏蔽IR0.1.3.5.6OUT 86H,ALSTI ;開中斷若要讀IRR的內(nèi)容MOVAL,0AH;OCW3:00001010BOUT84H,ALNOPINAL,84H7.4可編程中斷控制器Intel8259A1/14/202380若要讀ISR的內(nèi)容MOVAL,0BH;OCW3:00001011BOUT84H,ALNOPINAL,84H若要讀IMR的內(nèi)容,可直接從高地址讀入INAL,86H若中斷是關(guān)閉的,可采用查詢方式,看是否有中斷NEXT:MOVAL,0CH;OCW3:00001100BOUT84H,ALNOPINAL,84HTESTAL,80HJZNEXT7.4可編程中斷控制器Intel8259A1/14/202381例2:某8086系統(tǒng)中有兩片8259A,從片接主片的IR4,主片IR2、IR5有外部中斷引入,類型號(hào)分別為62H、65H;從片IR0、IR3有外部中斷引入,類型號(hào)分別為40H、43H。設(shè)主片的一個(gè)端口地址為82H,從片的一個(gè)端口地址為84H,分別進(jìn)行初始化編程。分析端口地址:主片1000001082H

1000000080H從片

1000010084H

1000011086H類型號(hào)基值:主片60H從片40H7.4可編程中斷控制器Intel8259A1/14/202382主片初始化程序MOVAL,11H;ICW1,00010001B邊沿觸發(fā)級(jí)連OUT80H,AL;MOVAL,60H;類型號(hào)基值OUT82H,AL;MOVAL,00010000B;OUT82H,AL;MOVAL,11H;ICW4,00010001B特殊嵌套非緩沖非自動(dòng)OUT82H,AL;MOVAL,11001011B;OUT82H,AL;7.4可編程中斷控制器Intel8259A1/14/202383從片初始化程序MOVAL,11H;00010001B邊沿觸發(fā)級(jí)連OUT84H,AL;MOVAL,40H;類型號(hào)基值OUT86H,AL;MOVAL,00000100B;OUT86H,AL;MOVAL,01H;00000001B完全嵌套非緩沖非自動(dòng)80X86OUT86H,AL;MOVAL,11110110B;OUT86H,AL;7.4可編程中斷控制器Intel8259A1/14/202384【例3】試編程實(shí)現(xiàn)主機(jī)每次響應(yīng)8259A的IR2中斷請(qǐng)求,顯示字符串“Thisisa8259Ainterrupt!”,中斷10次結(jié)束。8259A偶地址端口為20H,奇地址端口為21H,IR2的中斷類型號(hào)為0AH。程序流程如圖,程序如

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論