版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1第7章中斷控制接口教學(xué)重點(diǎn)8088CPU的中斷系統(tǒng)
8259A的中斷工作過(guò)程和工作方式中斷服務(wù)程序的編寫27.18088中斷系統(tǒng)8088的中斷系統(tǒng)采用向量中斷機(jī)制一共可處理256個(gè)中斷源,中斷向量編號(hào)為0~255,用以區(qū)別不同的中斷。借助專用的中斷控制器Intel8259A對(duì)系統(tǒng)中的可屏蔽中斷資源(INTR)進(jìn)行擴(kuò)充和管理,8259A的功能有:擴(kuò)充系統(tǒng)的可屏蔽中斷資源(每片可管理8個(gè)中斷,級(jí)聯(lián)后最多可管理64個(gè)中斷)實(shí)現(xiàn)中斷優(yōu)先級(jí)比較實(shí)現(xiàn)中斷源的識(shí)別(通過(guò)向總線送中斷矢量)37.1.18088的中斷類型中斷邏輯INTO指令單步中斷除法錯(cuò)誤INTn指令CPU8259A中斷控制器IR0IR1IR2IR3IR4IR5IR6IR7來(lái)自外設(shè)的中斷源
-INTA可屏蔽中斷申請(qǐng)
INTR不可屏蔽中斷申請(qǐng)可屏蔽中斷源不可屏蔽中斷源內(nèi)部中斷INT3指令3n401NMI中斷2不可屏蔽中斷源外部中斷48088的中斷分類內(nèi)部中斷——內(nèi)部機(jī)制產(chǎn)生除法錯(cuò)中斷(0號(hào))——除運(yùn)算結(jié)果溢出時(shí)產(chǎn)生指令中斷(n號(hào))——執(zhí)行intn指令后產(chǎn)生(操作碼CDH)斷點(diǎn)中斷(3號(hào))——執(zhí)行int3指令(單字節(jié)指令操作碼CCH)用于在調(diào)試中設(shè)置斷點(diǎn),程序遇斷點(diǎn)則中斷溢出中斷(4號(hào))——執(zhí)行into指令,且前面運(yùn)算有溢出(OF=1)時(shí)產(chǎn)生單步中斷(1號(hào))——TF標(biāo)志置1后,每執(zhí)行一條子指令將發(fā)生一次外部中斷——外部引腳觸發(fā)非屏蔽中斷(外設(shè)提供向量號(hào))——觸發(fā)INTR引腳產(chǎn)生可屏蔽中斷(2號(hào))——觸發(fā)NMI引腳產(chǎn)生51.內(nèi)部中斷內(nèi)部中斷是由于8088內(nèi)部執(zhí)行程序出現(xiàn)特殊情況而引起的中斷除法錯(cuò)中斷: 向量號(hào)為0指令中斷(intn): 向量號(hào)為n斷點(diǎn)中斷(int3): 向量號(hào)為3溢出中斷(into): 向量號(hào)為4單步中斷: 向量號(hào)為1內(nèi)部中斷的中斷向量號(hào)已由Intel公司確定62.外部中斷外部中斷是由于8088外部通過(guò)CPU引腳提出中斷請(qǐng)求而引起的中斷非屏蔽中斷(NMI):向量號(hào)為2外部通過(guò)非屏蔽中斷NMI請(qǐng)求,必須響應(yīng)非屏蔽中斷主要用于處理系統(tǒng)的意外或故障(如奇偶校驗(yàn)或協(xié)處理器運(yùn)算錯(cuò)誤等)可屏蔽中斷(INTR):向量號(hào)由中斷控制器提供外部通過(guò)可屏蔽中斷INTR請(qǐng)求,由標(biāo)志位IF
控制是否響應(yīng);響應(yīng)時(shí)將產(chǎn)生有效的–INTA信號(hào)可屏蔽中斷主要用于外設(shè)中斷請(qǐng)求(請(qǐng)求交換數(shù)據(jù)等服務(wù))IF=0可屏蔽由INTR引腳引發(fā)的中斷7中斷標(biāo)志IF的狀態(tài)IF=0:可屏蔽中斷不會(huì)被響應(yīng)(禁止中斷,關(guān)中斷,中斷屏蔽)系統(tǒng)復(fù)位時(shí)IF=0任何一個(gè)中斷被響應(yīng),將使IF=0執(zhí)行指令CLI,可使IF=0IF=1:可屏蔽中斷會(huì)被響應(yīng)(允許中斷,開(kāi)中斷,中斷開(kāi)放)執(zhí)行指令STI,可使IF=1執(zhí)行指令I(lǐng)RET后,IF將恢復(fù)為中斷前的狀態(tài)(即IF=1)明確IF標(biāo)志的狀態(tài)是關(guān)鍵87.1.28088的中斷響應(yīng)過(guò)程CPU查詢各中斷的先后順序,決定了各中斷源的優(yōu)先級(jí)別:軟件中斷除法錯(cuò)中斷指令中斷溢出中斷非屏蔽中斷可屏蔽中斷單步中斷高低98088的中斷響應(yīng)過(guò)程N(yùn)MIN軟件中斷INTRTF=1中斷響應(yīng)周期讀中斷向量號(hào)下條指令現(xiàn)行指令I(lǐng)F=1NNNNYYYYY執(zhí)行中斷服務(wù)108088的中斷響應(yīng)過(guò)程(續(xù))Y還有NMITEMP=1標(biāo)志寄存器入棧TEMP=TF,IF=TF=0CS:IP入棧獲取中斷向量執(zhí)行服務(wù)程序彈出CS:IP彈出標(biāo)志寄存器返回被中斷程序(1)(2)(3)(4)(5)NNY(6)單步中斷標(biāo)志暫存118088的中斷響應(yīng)過(guò)程(續(xù))8088各種中斷源的優(yōu)先權(quán),實(shí)際上是指被識(shí)別的先后順序多種中斷同時(shí)請(qǐng)求時(shí),最先響應(yīng)的則可能是單步中斷或NMI中斷127.1.38088的中斷向量表4B4B中斷向量表1KB3FFH0H0號(hào)中斷向量IPCS弄清幾個(gè)概念:中斷向量號(hào)N(中斷類型號(hào))中斷向量(中斷服務(wù)程序的入口地址)中斷向量表中斷向量存放的首址:N×4以下詳述138088的中斷向量和中斷向量表中斷向量號(hào)——區(qū)別不同中斷源的編號(hào)0~255,也稱中斷向量號(hào)。中斷向量——指示中斷服務(wù)程序的入口,該地址包括:偏移地址IP、段地址CS。每個(gè)中斷向量的低字是偏移地址、高字是段地址,需占用4個(gè)字節(jié)(低對(duì)低,高對(duì)高)。中斷向量表——8088微處理器從物理地址000H開(kāi)始到3FFH(1KB),依次安排256個(gè)中斷向量。所占用的1KB區(qū)域,稱中斷向量表。N號(hào)中斷向量存放的首地址——N×4147.2內(nèi)部中斷服務(wù)程序編寫內(nèi)部中斷服務(wù)程序與編寫子程序類似利用過(guò)程定義偽指令PROC/ENDP第1條指令通常為開(kāi)中斷指令STI最后用中斷返回指令I(lǐng)RET通常采用寄存器傳遞參數(shù)主程序需要調(diào)用中斷服務(wù)程序使用前,需要重新設(shè)置中斷向量(入口地址)利用INTn指令調(diào)用中斷服務(wù)程序15例7.1內(nèi)部中斷服務(wù)程序編寫:80H
號(hào)中斷服務(wù)程序功能:通過(guò)BIOS功能調(diào)用INT10H,顯示以“0”結(jié)尾的字符串。入口參數(shù):DS:DX存字符串緩沖區(qū)首地址(段地址:偏移地址)。16數(shù)據(jù)段
intoff dw?;用于保存原中斷向量將來(lái)恢復(fù)
intseg dw?;用于保存原中斷向量將來(lái)恢復(fù)
intmsg db‘AInstructionInterrupt!’ db0dh,0ah,0;要顯示的信息例7.1以下分段介紹程序17保存中斷向量 movax,3580h;讀出原中斷向量
int21h movintoff,bx ;保存偏移地址 movintseg,es ;保存段基地址例7.118設(shè)置中斷向量的做法 pushds movdx,offsetnew80h movax,segnew80h movds,ax movax,25
80h;設(shè)置新中斷向量 int21h popds例7.119調(diào)用中斷服務(wù)程序 movdx,offsetintmsg
int80h;中斷調(diào)用例7.1注意比較指令:int/call20主程序結(jié)束 movdx,intoff movax,intseg movds,ax movax,25
80h;恢復(fù)原中斷向量
int21h movax,4c00h;返回DOS
int21h例7.1屏幕顯示:AInstructionInterrupt!21
new80h proc
sti;開(kāi)中斷,允許中斷嵌套 pushax;保護(hù)現(xiàn)場(chǎng) pushbx pushsi例7.1中斷服務(wù)子程序22顯示字符串 movsi,dxnew1: moval,[si]
;取顯示字符 cmpal,0
;判是否串尾 jznew2
movbx,0
;調(diào)BIOS中斷 movah,0eh
;子功能號(hào)
int10h incsi jmpnew1例7.123退出中斷服務(wù)程序 new2: popsi ;恢復(fù)現(xiàn)場(chǎng) popbx popax iret ;中斷返回 new80h endp例7.124用int21h子功能訪問(wèn)中斷向量AH=25——設(shè)置中斷向量入口參數(shù):ds:dx=中斷向量,al=中斷向量號(hào)AH=35——讀取中斷向量入口參數(shù):al=中斷向量號(hào)出口參數(shù):bx:es=中斷向量設(shè)置中斷向量:movdx,intoff movax,intseg movds,axmovax,25
80hint21h
讀取中斷向量:
movax,3580hint21hmovintoff,bxmovintseg,es25直接訪問(wèn)中斷向量(以int
80h為例)設(shè)置中斷向量:
pushdsxorax,axmovds,ax leabx,80H*4 movwordptrds:[bx],intoff incbx incbx
movwordptrds:[bx],intsegpopds讀取中斷向量:
pushdsxorax,axmovds,axleabx,80H*4 movintoff,wordptrds:[bx] incbx incbx
movintseg,wordptrds:[bx]
popds
267.38259A中斷控制器Intel8259A是可編程中斷控制器(PIC)??膳浜螩PU(I8080/85、I8086/88/286/386等)管理可屏蔽中斷。8259A的基本功能:1片8259A可以管理8級(jí)中斷,經(jīng)級(jí)聯(lián)最多可擴(kuò)展至64級(jí)每一級(jí)中斷都可單獨(dú)被屏蔽或允許在中斷響應(yīng)周期,可提供相應(yīng)的調(diào)用指令(配合I8080/85)或中斷向量號(hào)(配合I8086/88/286/386)8259A設(shè)計(jì)有多種工作方式,通過(guò)初始化編程進(jìn)行設(shè)置277.3.18259A的內(nèi)部結(jié)構(gòu)和引腳D7~D0-INTAINT中斷請(qǐng)求寄存器中斷屏蔽寄存器數(shù)據(jù)總線緩沖器IR0IR7讀/寫控制邏輯級(jí)聯(lián)緩沖器比較器-RD-WRA0-CSCAS0CSA1CAS2-SP/-EN優(yōu)先權(quán)判別電路中斷服務(wù)寄存器控制邏輯281.中斷控制中斷請(qǐng)求寄存器IRR記錄中斷請(qǐng)求(IR0~I(xiàn)R7)Di位為1表示相應(yīng)引腳有中斷請(qǐng)求;為0表示無(wú)請(qǐng)求中斷服務(wù)寄存器ISR記錄中斷服務(wù)(IR0~I(xiàn)R7)Di位為1表示相應(yīng)中斷正在服務(wù)中;為0表示位在服務(wù)中斷屏蔽寄存器IMR記錄中斷屏蔽(IR0~I(xiàn)R7)Di位為1表示相應(yīng)中斷被屏蔽(禁止);為0表示允許292.與處理器接口-CSA0-RD-WR功能00100110000101010×111×××寫入ICW1、OCW2和OCW3寫入ICW2~I(xiàn)CW4和OCW1讀出IRR、ISR和查詢字讀出IMR數(shù)據(jù)總線高阻狀態(tài)數(shù)據(jù)總線高阻狀態(tài)30CAS0IR0CAS1IR1CAS2IR2
IR3-INTAIR4IR5INTIR6IR7-SP/-EN
CAS0-INTA
CAS1
CAS2INT
IR0
IR1-SP/-ENIR7CAS0IR0CAS1IR1CAS2IR2IR3-INTAIR4IR5INTIR6IR7-SP/-EN-INTAINTR+5V8259級(jí)聯(lián)工作示意圖3.8259A的級(jí)連輸出得到響應(yīng)的從片編號(hào)313.中斷級(jí)連8259A可以級(jí)連,1個(gè)主片最多可以級(jí)連8個(gè)從片,級(jí)連時(shí)的連接方法:主片——級(jí)連線CAS0~CAS2連至每個(gè)從片的CAS0~CAS2,輸出被選中的從片編號(hào),INT線連至CPU的中斷請(qǐng)求輸入端INTR從片——中斷請(qǐng)求信號(hào)INT連至主8259A的一個(gè)中斷請(qǐng)求輸入端IRx;主、從片的指定:在非緩沖方式下,通過(guò)引腳-SP/-EN來(lái)指定:接地指定該片充當(dāng)從片(-SP=0);反之則該片充當(dāng)主片(-SP=1)。在緩沖方式下,通過(guò)軟件控制字來(lái)指定,引腳-SP/-EN另作它用(緩沖器使能)327.3.28259A的中斷過(guò)程CAS0~CAS2D0~D7-SP/-ENIR0~I(xiàn)R7CPU響應(yīng)周期8259A工作波形INT第1個(gè)總線周期T1T2T3T4ALECLK
第2個(gè)總線周期T1T2T3T4第1個(gè)-INTA前保持高電平
-INTA-LOCK中斷向量主片輸出級(jí)聯(lián)信號(hào)從片接收337.3.38259A的工作方式普通全嵌套方式特殊全嵌套方式自動(dòng)循環(huán)方式特殊循環(huán)方式優(yōu)先權(quán)固定方式優(yōu)先權(quán)循環(huán)方式設(shè)置優(yōu)先權(quán)方式普通中斷結(jié)束方式特殊中斷結(jié)束方式自動(dòng)中斷結(jié)束方式非自動(dòng)中斷結(jié)束方式結(jié)束中斷方式中斷屏蔽方式普通屏蔽方式特殊屏蔽方式中斷觸發(fā)方式邊沿觸發(fā)方式電平觸發(fā)方式數(shù)據(jù)緩沖方式緩沖方式非緩沖方式與CPU配合方式與8080/8085CPU配合與8086/8088CPU配合級(jí)連方式級(jí)連不級(jí)連341、與CPU的配合方式與8080/8085CPU配合——中斷響應(yīng)時(shí),-INTA信號(hào)3次有效,8259A送CALLXXXXH指令(3B)的機(jī)器代碼到數(shù)據(jù)總線;與8086/8088CPU配合——中斷響應(yīng)時(shí),-INTA信號(hào)2次有效,8259A送相應(yīng)的中斷向量號(hào)(1B)到數(shù)據(jù)總線。8080/85CPU8259A8086/88CPU8259ACALLXXXXH(3B)中斷向量號(hào)(1B)-INTAINTR-INTAINTR3個(gè)2個(gè)352、級(jí)連方式不級(jí)連——只用1片,如PC/XT級(jí)連——可使用2~9片,如PC/AT(2片)-INTAINTRIR0IR7IR7IR0CAS0~CAS2=010INTINTD0~D7363、數(shù)據(jù)緩沖方式非緩沖方式-SP/-EN引腳作為輸入端在8259A級(jí)連時(shí),用它選擇該芯片充當(dāng)主片或從片緩沖方式對(duì)8259A的數(shù)據(jù)線(輸出中斷向量)加緩沖器予以隔離和驅(qū)動(dòng)-SP/-EN引腳作為輸出端,輸出允許信號(hào),用以關(guān)閉或開(kāi)啟緩沖器375、中斷觸發(fā)方式邊沿觸發(fā)方式中斷請(qǐng)求輸入端出現(xiàn)上升沿為有效的中斷請(qǐng)求信號(hào)電平觸發(fā)方式中斷請(qǐng)求端出現(xiàn)高電平為有效的中斷請(qǐng)求信號(hào)384、設(shè)置優(yōu)先權(quán)方式普通全嵌套方式8259A的中斷優(yōu)先權(quán)順序固定不變,從高到低依次為: IR0、IR1、IR2、……IR7中斷請(qǐng)求后,8259A對(duì)當(dāng)前請(qǐng)求中斷中優(yōu)先權(quán)最高的中斷IRi予以響應(yīng),將其向量號(hào)送上數(shù)據(jù)總線,對(duì)應(yīng)ISR的Di位置位,至到中斷結(jié)束(ISR的Di位復(fù)位)在ISR的Di位置位期間,禁止再發(fā)生同級(jí)和低級(jí)優(yōu)先權(quán)的中斷,但允許高級(jí)優(yōu)先權(quán)中斷的嵌套特殊全嵌套方式——允許同級(jí)中斷嵌套(用于級(jí)連主片)優(yōu)先權(quán)自動(dòng)循環(huán)方式——最高優(yōu)先權(quán)自動(dòng)轉(zhuǎn)移到相鄰的低優(yōu)先級(jí)中斷源優(yōu)先權(quán)特殊循環(huán)方式——最高優(yōu)先權(quán)轉(zhuǎn)移到由指令指定的中斷源39中斷結(jié)束字什么是8259A的中斷結(jié)束字(EOI)?8259A判斷中斷服務(wù)寄存器ISR的狀態(tài):ISRi=1,表示該中斷源正在得到服務(wù);一般情況下,將不再響應(yīng)同級(jí)或低級(jí)的中斷(但采用特殊屏蔽方式時(shí),可響應(yīng)低級(jí)別的中斷)ISRi=0,表示該中斷服務(wù)已結(jié)束,可響應(yīng)同級(jí)或低級(jí)別的中斷。用指令向8259A送中斷結(jié)束字,可以使ISR的某位清0該操作與CPU無(wú)關(guān)。405、結(jié)束中斷處理方式普通中斷結(jié)束方式——中斷結(jié)束時(shí)用戶用指令送結(jié)束字,清0ISR中當(dāng)前優(yōu)先級(jí)最高的中斷服務(wù)標(biāo)志配合全嵌套優(yōu)先權(quán)方式使用當(dāng)CPU用輸出指令往8259A發(fā)出普通中斷結(jié)束EOI命令時(shí),8259A就會(huì)對(duì)ISR中當(dāng)前優(yōu)先級(jí)最高的中斷服務(wù)標(biāo)志進(jìn)行清0特殊中斷結(jié)束方式——中斷結(jié)束時(shí)用戶用指令送特定的結(jié)束字,指明要清除ISR中的哪一位配合循環(huán)優(yōu)先權(quán)方式使用自動(dòng)中斷結(jié)束方式——中斷響應(yīng)后自動(dòng)送結(jié)束字,清0ISR中當(dāng)前優(yōu)先級(jí)最高的中斷服務(wù)標(biāo)志。416、屏蔽中斷源方式普通屏蔽方式IMRi=1,對(duì)應(yīng)的中斷IRi將被屏蔽,該中斷請(qǐng)求將不能從8259A送到CPUIMRi=0,則允許對(duì)應(yīng)的中斷產(chǎn)生特殊屏蔽方式——允許發(fā)生低級(jí)的中斷嵌套,用于級(jí)連時(shí)的主片。IMRi=1,但I(xiàn)SRi=0,中斷IRi被屏蔽;但允許發(fā)生低級(jí)的中斷。42帶“特殊”字樣的中斷管理功能特殊全嵌套——允許同級(jí)中斷發(fā)生,用于級(jí)連主片特殊屏蔽——屏蔽同級(jí)中斷,但允許低級(jí)中斷發(fā)生特殊中斷結(jié)束——指定要清除的中斷服務(wù)標(biāo)志的編碼(xxx)特殊優(yōu)先級(jí)循環(huán)——指定當(dāng)前擁有最高優(yōu)先級(jí)的引腳編碼(xxx)437.3.48259A的編程初始化編程8259A開(kāi)始工作前用戶必須對(duì)8259A進(jìn)行初始化編程。通過(guò)寫入初始化命令字ICW對(duì)8259A進(jìn)行初始化中斷操作編程在8259A工作期間可以隨時(shí)向8259A寫入操作命令字OCW,使之按用戶設(shè)置的新的工作方式進(jìn)行工作用戶還可以通過(guò)寫操作命令字OCW通知8259A,下面的操作要讀取8259A中的狀態(tài)信息,以便了解其工作情況441.初始化命令字ICW8259A在開(kāi)始工作前必須寫入初始化命令字初始化命令字ICW最多可以有4個(gè):
ICW1~I(xiàn)CW4必須按照以上順序依次寫入其中ICW1和ICW2是必須的ICW3和ICW4是否需要,由具體的工作方式?jīng)Q定ICW1~I(xiàn)CW4的寫入流程45ICW1×××1LTIM×SNGLIC4D7D6D5D4D3D2D1D0×——表示可以任意為1為0都可以(建議為0)1——只能為1,作為標(biāo)志中斷觸發(fā)方式:LTIM=1,電平觸發(fā)方式LTIM=0,邊沿觸發(fā)方式規(guī)定單片或級(jí)連方式:SNGL=1,單片方式SNGL=0,級(jí)連方式是否寫入ICW4IC4=1,要寫入ICW4IC4=0,不寫入ICW4,即ICW4規(guī)定的位全為046ICW2T7T6T5T4T3×××D7D6D5D4D3D2D1D0設(shè)置中斷向量號(hào)T7~T3為中斷向量號(hào)的高5位低3位由8259A自動(dòng)確定:IR0為000、IR1為001、……、IR7為11147ICW3S7S6S5S4S3S2ID2S1ID1S0ID0D7D6D5D4D3D2D1D0級(jí)連命令字主片:Si=1,說(shuō)明其對(duì)應(yīng)引腳IRi
上連接有從片;否則引腳IRi上沒(méi)有連接從片從片:ID0~I(xiàn)D2編碼說(shuō)明該從片的INT引腳接到了主片上的哪個(gè)IRi引腳針對(duì)從片針對(duì)主片48ICW4000SFNMBUFM/SAEOIμPMD7D6D5D4D3D2D1D0嵌套方式:特殊全嵌套方式(SFNM=1)普通全嵌套方式(SFNM=0)數(shù)據(jù)線的緩沖方式:緩沖方式(BUF=1)非緩沖方式(BUF=0)緩沖方式下的主片/從片選擇:主片(M/S=1)從片(M/S=0)中斷結(jié)束方式:自動(dòng)中斷結(jié)束(AEOI=1)非自動(dòng)中斷結(jié)束(AEOI=0)要配合的微處理器類型:8086/8088(PM=1)16位CPU8080/8085(PM=0)8位CPU49初始化主片8259A moval,11h ;寫入ICW1 out20h,al jmpintr1 intr1: moval,08h ;寫入ICW2 out21h,al jmpintr2 intr2: moval,04h ;寫入ICW3 out21h,al jmpintr3 intr3: moval,1h ;寫入ICW4 out21h,al中斷控制器的初始化程序段PC機(jī)上8259地址:20h-21h50初始化從片8259A moval,11h ;寫入ICW1 out0a0h,al jmpintr5intr5: moval,70h ;寫入ICW2 out0a1h,al jmpintr6intr6: moval,02h ;寫入ICW3 out0a1h,al jmpintr7intr7: moval,01h ;寫入ICW4 out0a1h,al中斷控制器的初始化程序段該體中8259的兩個(gè)地址:0a0h、0a1h512.操作命令字OCW8259A工作期間,可以隨時(shí)接受操作命令字OCWOCW共有3個(gè):OCW1~OCW3寫入時(shí)沒(méi)有順序要求,需要哪個(gè)OCW就寫入那個(gè)OCW52OCW1M7M6M5M4M3M2M1M0D7D6D5D4D3D2D1D0屏蔽命令字其內(nèi)容將寫入中斷屏蔽寄存器IMRMi=1,則禁止對(duì)應(yīng)IRi中斷;Mi=0,則允許對(duì)應(yīng)IRi中斷。各位互相獨(dú)立。53OCW2RSLEOI00L2L1L0D7D6D5D4D3D2D1D0R、SL和EOI配合使用產(chǎn)生中斷結(jié)束EOI命令和改變優(yōu)先權(quán)順序L2~L0的3位編碼指定IR引腳54OCW30ESMMSMM01PRRRISD7D6D5D4D3D2D1D0ESMM、SMM設(shè)置中斷屏蔽方式P、RR和RIS規(guī)定隨后讀取的狀態(tài)字含義553.讀取狀態(tài)字CPU可隨時(shí)讀出IRR、ISR、IMR和查詢字A0為低(偶地址)時(shí)由OCW3中RR和RIS位編碼決定讀取的是IRR或ISR,由OCW3中P位決定讀取的是查詢字,查詢字可反映8259A是否有中斷請(qǐng)求,及哪個(gè)引腳上有中斷請(qǐng)求A0為高(奇地址)時(shí),讀取的是IMR56查詢字I----W2W1W0D7D6D5D4D3D2D1D0中斷位I位為1,有外設(shè)請(qǐng)求中斷W2~W0的編碼當(dāng)前中斷請(qǐng)求的最高優(yōu)先級(jí)574.命令字和狀態(tài)字的區(qū)別方法利用讀寫信號(hào)區(qū)別寫入的控制寄存器和讀出的狀態(tài)寄存器利用地址信號(hào)區(qū)別不同I/O地址的寄存器由控制字中的標(biāo)志位說(shuō)明是哪個(gè)寄存器由芯片內(nèi)順序控制邏輯按一定順序操作不同的寄存器由前面的控制字(引導(dǎo)字)決定后續(xù)操作的寄存器這是接口電路中常用的方法587.48259A在IBMPC系列機(jī)上的應(yīng)用CAS0~CAS2
8259A定時(shí)器時(shí)鐘中斷鍵盤中斷保留異步通信COM2中斷異步通信COM1中斷并行打印機(jī)LPT2中斷軟盤中斷并行打印機(jī)LPT1中斷A0-INTRCS—IRQ0—IRQ1—IRQ2—IRQ3—IRQ4—IRQ5—IRQ6—IRQ7—A0—-CS-INTA-RD-WR對(duì)比829A在IBMPC/AT機(jī)的應(yīng)用829A在IBMPC/XT機(jī)上的應(yīng)用+5VD0~D7INT-SP/-ENPC/XT機(jī)的外中斷管理598259A在IBMPC/AT上的應(yīng)用CAS0~2CAS0~2+5V主8259A80286CPUINTRD0~D7-SP/-ENINTD0~D7日時(shí)鐘鍵盤串行口2串行口1并行口2軟盤并行口1A0-INTR1CS—IRQ0—IRQ1IRQ2—IRQ3—IRQ4—IRQ5—IRQ6—IRQ7—A0—-CS
從8259AD0~D7INT-SP/-EN實(shí)時(shí)鐘改向0AH中斷保留保留保留協(xié)處理器硬盤保留A0-INTR2CS—IRQ8—IRQ9—IRQ10—IRQ11—IRQ12—IRQ13—IRQ14—IRQ15—A0—-CS系統(tǒng)總線B25………B24………B23………B22………B21………系統(tǒng)總線B4………D3…………D4…………D5…………D6…………D7…………-INTA-RD-WR-INTA-IOR-IOW-INTA-RD-WR-S0~-S282288級(jí)聯(lián)60PC機(jī)中8259A應(yīng)用注意事項(xiàng)利用上升沿做為中斷請(qǐng)求IRQ的有效信號(hào)IRQ0~I(xiàn)RQ7中斷向量號(hào)依次為08H~0FHIRQ8~I(xiàn)RQ15中斷向量號(hào)依次為70H~77H(PC/AT機(jī))采用普通全嵌套優(yōu)先權(quán)方式,中斷優(yōu)先權(quán)從高到低順序?yàn)镮RQ0~I(xiàn)RQ2、IRQ8~I(xiàn)RQ15(級(jí)連從片)、IRQ3~I(xiàn)RQ7,且不能改變采用普通中斷結(jié)束EOI方式,需在中斷服務(wù)程序最后發(fā)送普通EOI命令一般采用普通屏蔽方式,通過(guò)寫IMR相應(yīng)位為0允許中斷,應(yīng)注意不要破壞原屏蔽狀態(tài)。617.5外部中斷服務(wù)程序編寫外部可屏蔽中斷服務(wù)程序,需注意:中斷服務(wù)結(jié)束時(shí)應(yīng)向8259發(fā)送中斷結(jié)束命令EOI(OCW2)一般只能采用存儲(chǔ)單元來(lái)傳遞參數(shù)不能使用DOS系統(tǒng)功能調(diào)用(DOS為單用戶單任務(wù)操作系統(tǒng),不能重入)中斷服務(wù)程序要盡量短小,以免影響系統(tǒng)的實(shí)時(shí)性627.5外部中斷服務(wù)程序(續(xù))編寫主程序,需注意:修改中斷向量控制CPU的中斷允許標(biāo)志設(shè)置8259A的中斷屏蔽寄存器63例題7.2可屏蔽中斷服務(wù)程序在PC機(jī)中:8259A的IRQ0(其向量號(hào)為08H)中斷請(qǐng)求來(lái)自定時(shí)器8253,每隔55ms產(chǎn)生一次定時(shí)中斷例中,修改后的08H號(hào)中斷服務(wù)程序?qū)@示一個(gè)字符串,10次中斷共顯示10個(gè)字符串用內(nèi)存單元(共享變量)在主程序與外部中斷服務(wù)程序之間傳遞參數(shù):中斷發(fā)生的次數(shù)顯示信息安排在共同的數(shù)據(jù)段中64數(shù)據(jù)段 intmsg db‘A8259AIR0Interrupt!’ db0dh,0ah,0 counter db0例7.265保存中斷向量 movax,35
08h int21h pushbx ;保存偏移地址 pushes ;保存段基地址例7.266設(shè)置中斷向量 cli pushds;保護(hù)ds movdx,offset
new08h;中斷入口地址 movax,seg
new08h movds,ax movax,25
08h int21h popds;恢復(fù)ds例7.267設(shè)置中斷寄存器 inal,21h ;讀IMR pushax andal,0feh ;允許IRQ0(接8253) out21h,al movcounter,0;設(shè)置中斷次數(shù)初值 sti ;開(kāi)中斷例7.268循環(huán)等待中斷 start1: cmpcounter,10 jbstart1 ;中斷10次退出例7.210次8253定時(shí)器中斷就發(fā)生在該循環(huán)當(dāng)中69主程序結(jié)束
cli popax out21h,al popdx popds movax,2508h int21h
sti movax,4c00h int21h例7.2A8259AInterrupt!A8259AInterrupt!A8259AInterrupt!A8259AInterrupt!A8259AInterrupt!A8259AInterrupt!A8259AInterrupt!A8259AInterrupt!A8259AInterrupt!A8259AInterrupt!70 new08h proc sti ;開(kāi)中斷 pushax ;保護(hù)寄存器 pushbx pushds movax,@data;@data表示數(shù)據(jù)段地址 movds,ax ;設(shè)置數(shù)據(jù)段DS例7.2進(jìn)入中斷服務(wù)程序71中斷處理 inccounter movsi,offsetintmsg ;顯示信息 calldpstri ;dpstri為顯示子程序 ;注意其中不能使用DOS調(diào)用例7.272退出中斷服務(wù)程序
moval,20h ;送中斷結(jié)束字
out20h,al popds ;恢復(fù)寄存器 popbx popax iret ;中斷返回 new08h endp例7.273顯示字符串子程序
dpstri proc ;顯示字符串子程序 pushax pushbx dps1: lodsb ;用si指針取一字符到al cmpal,0 ;判是否結(jié)束標(biāo)志 jzdps2例7.274顯示字符串子程序(續(xù))
movbx,0
;顯示1個(gè)字符 movah,0eh
;0eh為子功能號(hào)
int10h ;BIOS功能調(diào)用可重入 jmpdps1 dps2: popbx popax ret dpstri endp例7.2757.6駐留中斷服務(wù)程序內(nèi)存駐留TSR(TerminateandStayResident)程序應(yīng)用程序運(yùn)行后仍然保存在主存中,可以被其他程序調(diào)用利用DOS功能調(diào)用
31H代替4CH終止程序小型駐留程序常編寫成.COM程序,但駐留程序也可編成.EXE程序需要駐留內(nèi)存的程序段要書寫在其他代碼的前面76例題7.3報(bào)時(shí)中斷駐留服務(wù)程序在PC機(jī)中系統(tǒng)08H號(hào)中斷服務(wù)程序中又調(diào)用了INT1CH指令中斷,該中斷原來(lái)未安排任何服務(wù),是留給用戶的軟中斷接口,以便每55ms(tick)能執(zhí)行1次用戶的任務(wù)。每隔55ms(tick)調(diào)用這個(gè)報(bào)時(shí)中斷,中斷65543次就是時(shí)間過(guò)了1小時(shí)該例編寫駐留內(nèi)存的INT1CH中斷服務(wù)程序用于整點(diǎn)報(bào)時(shí),程序功能是每過(guò)1小時(shí)顯示1條信息執(zhí)行此程序后,該報(bào)時(shí)中斷服務(wù)程序?qū)Ⅰv留內(nèi)存注意:因65543=65536+7,假定用2個(gè)字來(lái)記錄中斷發(fā)生的次數(shù),則每經(jīng)過(guò)1小時(shí)有:高字=高字+1低字=低字+7低字能被7整除時(shí)表示時(shí)間為整點(diǎn)77
new1ch proc ;該中斷程序?qū)Ⅰv留內(nèi)存 sti ;開(kāi)中斷 pushsi ;保護(hù)寄存器 pushds
movsi,cs ;com程序數(shù)據(jù)和代碼共段
movds,si ;設(shè)置數(shù)據(jù)段DS addcountl,1 ;處理記錄tick的低字 adccounth,0;處理記錄tick的高字例7.3進(jìn)入中斷服務(wù)程序78中斷處理 cmpcountl,7;判低字為7否 jnzn1ch1
;不為7,整點(diǎn)未到 cmpcounth,1;高字為1否 jnzn1ch1
;不為1,整點(diǎn)未到 movcountl,0
;整點(diǎn)到,清0計(jì)數(shù) movcounth,0 movsi,offsetintmsg
;顯示字符串 calldpstri
;dpstri顯示子程序例7.365543=65536+7=高字1H/低字7H79退出中斷服務(wù)程序 n1ch1: popds ;恢復(fù)寄存器 popsi iret ;中斷返回;----------------------------------------------------
countl
dw0
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 福建師范大學(xué)《運(yùn)動(dòng)技能學(xué)習(xí)與控制》2021-2022學(xué)年第一學(xué)期期末試卷
- 福建師范大學(xué)《土壤地理學(xué)實(shí)驗(yàn)》2022-2023學(xué)年第一學(xué)期期末試卷
- 福建師范大學(xué)《數(shù)字信號(hào)處理應(yīng)用一》2022-2023學(xué)年第一學(xué)期期末試卷
- 福建師范大學(xué)《數(shù)學(xué)》2021-2022學(xué)年第一學(xué)期期末試卷
- 福建師范大學(xué)《基金管理學(xué)實(shí)驗(yàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 統(tǒng)編版八年級(jí)第一學(xué)期語(yǔ)文期中測(cè)試卷
- 電氣質(zhì)量驗(yàn)收規(guī)范考試題
- 教師教科研現(xiàn)狀與需求調(diào)查問(wèn)卷
- 7《請(qǐng)到我的家鄉(xiāng)來(lái)》第二課時(shí)(教學(xué)設(shè)計(jì))-部編版道德與法治三年級(jí)下冊(cè)
- (BZ1)中建西北院BIM標(biāo)準(zhǔn)
- 初級(jí)插花理論知識(shí)考核試題及答案
- 河南省洛陽(yáng)市《綜合能力測(cè)試》事業(yè)單位國(guó)考真題
- 法醫(yī)物證學(xué)第十二章血痕檢驗(yàn)1
- 智慧消防整體解決方案消防大數(shù)據(jù)一體化管理平臺(tái)解課件
- 國(guó)家自然科學(xué)基金申請(qǐng)經(jīng)驗(yàn)匯總課件
- 社會(huì)實(shí)踐鑒定表
- 2022版義務(wù)教育(化學(xué))課程標(biāo)準(zhǔn)(含2022年修訂部分)
- 公司吸煙管理規(guī)定范文
- 消毒記錄表(簡(jiǎn)單模板)
- 東北抗聯(lián)精神很實(shí)用-學(xué)習(xí)東北抗聯(lián)精神共24張課件
- 老舊小區(qū)改造施工組織詳細(xì)
評(píng)論
0/150
提交評(píng)論