資源描述:
《中斷服務(wù)程序的編寫》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、7.2內(nèi)部中斷服務(wù)程序編寫內(nèi)部中斷服務(wù)程序與編寫子程序類似利用過程定義偽指令PROC/ENDP第1條指令通常為開中斷指令STI最后用中斷返回指令I(lǐng)RET通常采用寄存器傳遞參數(shù)主程序需要調(diào)用中斷服務(wù)程序調(diào)用前,需要設(shè)置中斷向量利用INTn指令調(diào)用中斷服務(wù)程序例7.1內(nèi)部中斷服務(wù)程序編寫80H號中斷服務(wù)程序功能:顯示以“0”結(jié)尾字符串的功能利用顯示器功能調(diào)用INT10H字符串緩沖區(qū)首地址為入口參數(shù)DS:DX(段地址:偏移地址)傳遞參數(shù)數(shù)據(jù)段intoffdw?intsegdw?intmsgdb‘AInstructionInterrupt!’db0dh,0a
2、h,0例7.1以“0”結(jié)尾回車、換行保存中斷向量movax,3580hint21hmovintoff,bx;保存偏移地址movintseg,es;保存段基地址例7.1獲取中斷向量(DOS功能調(diào)用INT21H)功能號:AH=35H入口參數(shù):AL=中斷向量號出口參數(shù):ES:BX=中斷向量(段地址:偏移地址)設(shè)置中斷向量pushdsmovdx,offsetnew80hmovax,segnew80hmovds,axmovax,2580hint21hpopds例7.1設(shè)置中斷向量(DOS功能調(diào)用INT21H)功能號:AH=25H入口參數(shù):AL=中斷向量號DS:
3、DX=中斷向量(段地址:偏移地址)調(diào)用中斷服務(wù)程序;設(shè)置入口參數(shù):DS=段地址(已設(shè)置)DX=偏移地址movdx,offsetintmsgint80h;調(diào)用80H中斷服務(wù)程序例7.1AInstructionInterrupt!;80H號內(nèi)部中斷服務(wù)程序:;顯示字符串(以“0”結(jié)尾);入口參數(shù):DS:DX=緩沖器首地址new80hprocsti;開中斷pushax;保護寄存器pushbxpushsi例7.1進入中斷服務(wù)程序AInstructionInterrupt!顯示字符串movsi,dxnew1:moval,[si]cmpal,0jznew2mov
4、bx,0movah,0ehint10hincsijmpnew1例7.1AInstructionInterrupt!退出中斷服務(wù)程序new2:popsi;恢復(fù)寄存器popbxpopaxiret;中斷返回new80hendp例7.1AInstructionInterrupt!主程序結(jié)束movdx,intoffmovax,intsegmovds,axmovax,2580hint21hmovax,4c00hint21h例7.1AInstructionInterrupt!7.38259A中斷控制器Intel8259A是可編程中斷控制器PIC可用于管理Intel
5、8080/8085、8086/8088、80286/80386的可屏蔽中斷8259A的基本功能一片8259A可以管理8級中斷,可擴展至64級每一級中斷都可單獨被屏蔽或允許在中斷響應(yīng)周期,可提供相應(yīng)的中斷向量號8259A設(shè)計有多種工作方式,可通過編程選擇初始化主片8259Amoval,11h;寫入ICW1out20h,aljmpintr1intr1:moval,08h;寫入ICW2out21h,aljmpintr2intr2:moval,04h;寫入ICW3out21h,aljmpintr3intr3:moval,1h;寫入ICW4out21h,al中
6、斷控制器的初始化程序段初始化從片8259Amoval,11h;寫入ICW1out0a0h,aljmpintr5intr5:moval,70h;寫入ICW2out0a1h,aljmpintr6intr6:moval,02h;寫入ICW3out0a1h,aljmpintr7intr7:moval,01h;寫入ICW4out0a1h,al中斷控制器的初始化程序段2.操作命令字OCW8259A工作期間,可以隨時接受操作命令字OCWOCW共有3個:OCW1~OCW3寫入時沒有順序要求,需要哪個OCW就寫入那個OCWD7D6D5D4D3D2D1D0OCW1M7M
7、6M5M4M3M2M1M0D7D6D5D4D3D2D1D0屏蔽命令字內(nèi)容寫入中斷屏蔽寄存器IMRDi=Mi對應(yīng)IRi,為1禁止IRi中斷;為0允許IRi中斷。各位互相獨立。OCW2RSLEOI00L2L1L0D7D6D5D4D3D2D1D0R、SL和EOI配合使用產(chǎn)生中斷結(jié)束EOI命令和改變優(yōu)先權(quán)順序L2~L0的3位編碼指定IR引腳7.5外部中斷服務(wù)程序編寫外部可屏蔽中斷服務(wù)程序,需注意:發(fā)送中斷結(jié)束命令一般只能采用存儲單元傳遞參數(shù)不要使用DOS系統(tǒng)功能調(diào)用中斷服務(wù)程序盡量短小7.5外部中斷服務(wù)程序(續(xù))編寫主程序,需注意:修改中斷向量控制CPU的中
8、斷允許標志設(shè)置8259A的中斷屏蔽寄存器例題7.2可屏蔽中斷服務(wù)程序8259A的IRQ0(向量號為08H)中