




已閱讀5頁,還剩43頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
7.2 內部中斷服務程序,編寫內部中斷服務程序與編寫子程序類似 利用過程定義偽指令PROC/ENDP 第1條指令通常為開中斷指令STI 最后用中斷返回指令IRET 通常采用寄存器傳遞參數(shù) 主程序需要調用中斷服務程序 調用前,需要設置中斷向量 利用INT n指令調用中斷服務程序,例7.1 內部中斷服務程序,編寫80H號中斷服務程序 功能:顯示以“0”結尾字符串的功能 利用顯示器功能調用INT 10H 字符串緩沖區(qū)首地址為入口參數(shù) DS:DX(段地址:偏移地址)傳遞參數(shù),數(shù)據(jù)段,intoff dw ? intseg dw ? intmsg db A Instruction Interrupt ! db 0dh,0ah,0,例7.1,以“0”結尾,回車、換行,保存中斷向量,mov ax,3580h int 21h mov intoff,bx ;保存偏移地址 mov intseg,es ;保存段基地址,例7.1,獲取中斷向量(DOS功能調用INT 21H) 功能號:AH35H 入口參數(shù):AL中斷向量號 出口參數(shù):ES:BX中斷向量(段地址:偏移地址),設置中斷向量,push ds mov dx,offset new80h mov ax,seg new80h mov ds,ax mov ax,2580h int 21h pop ds,例7.1,設置中斷向量(DOS功能調用INT 21H) 功能號:AH25H 入口參數(shù):AL中斷向量號 DS:DX中斷向量(段地址:偏移地址),調用中斷服務程序,;設置入口參數(shù): DS段地址(已設置) DX偏移地址 mov dx,offset intmsg int 80h ;調用80H中斷服務程序,例7.1,A Instruction Interrupt !,;80H號內部中斷服務程序: ;顯示字符串(以“0”結尾) ;入口參數(shù):DS:DX緩沖器首地址 new80h proc sti ;開中斷 push ax ;保護寄存器 push bx push si,例7.1,進入中斷服務程序,A Instruction Interrupt !,顯示字符串,mov si,dx new1: mov al,si cmp al,0 jz new2 mov bx,0 mov ah,0eh int 10h inc si jmp new1,例7.1,A Instruction Interrupt !,退出中斷服務程序,new2: pop si ;恢復寄存器 pop bx pop ax iret ;中斷返回 new80h endp,例7.1,A Instruction Interrupt !,主程序結束,mov dx,intoff mov ax,intseg mov ds,ax mov ax,2580h int 21h mov ax,4c00h int 21h,例7.1,A Instruction Interrupt !,7.3 8259A中斷控制器,Intel 8259A是可編程中斷控制器PIC 可用于管理Intel 8080/8085、8086/8088、80286/80386的可屏蔽中斷 8259A的基本功能 一片8259A可以管理8級中斷,可擴展至64級 每一級中斷都可單獨被屏蔽或允許 在中斷響應周期,可提供相應的中斷向量號 8259A設計有多種工作方式,可通過編程選擇,初始化主片8259A,mov al,11h ;寫入ICW1 out 20h,al jmp intr1 intr1: mov al,08h ;寫入ICW2 out 21h,al jmp intr2 intr2: mov al,04h ;寫入ICW3 out 21h,al jmp intr3 intr3: mov al,1h ;寫入ICW4 out 21h,al,中斷控制器的初始化程序段,初始化從片8259A,mov al,11h ;寫入ICW1 out 0a0h,al jmp intr5 intr5: mov al,70h ;寫入ICW2 out 0a1h,al jmp intr6 intr6: mov al,02h ;寫入ICW3 out 0a1h,al jmp intr7 intr7: mov al, 01h ;寫入ICW4 out 0a1h,al,中斷控制器的初始化程序段,2. 操作命令字OCW,8259A工作期間,可以隨時接受操作命令字OCW OCW共有3個:OCW1OCW3 寫入時沒有順序要求,需要哪個OCW就寫入那個OCW,OCW1,屏蔽命令字 內容寫入中斷屏蔽寄存器IMR DiMi對應IRi,為1禁止IRi中斷; 為0允許IRi中斷。各位互相獨立。,OCW2,R、SL和EOI配合使用 產(chǎn)生中斷結束EOI命令和改變優(yōu)先權順序,L2L0的3位編碼 指定IR引腳,7.5 外部中斷服務程序,編寫外部可屏蔽中斷服務程序,需注意: 發(fā)送中斷結束命令 一般只能采用存儲單元傳遞參數(shù) 不要使用DOS系統(tǒng)功能調用 中斷服務程序盡量短小,7.5 外部中斷服務程序(續(xù)),編寫主程序,需注意: 修改中斷向量 控制CPU的中斷允許標志 設置8259A的中斷屏蔽寄存器,例題7.2 可屏蔽中斷服務程序,8259A的IRQ0(向量號為08H)中斷請求來自定時器8253,每隔55ms產(chǎn)生一次 本程序的08H號中斷服務程序,每次中斷顯示一串信息,顯示10次 用內存單元(共享變量)在主程序與外部中斷服務程序之間傳遞參數(shù):中斷次數(shù) 顯示信息也安排在共同的數(shù)據(jù)段中,數(shù)據(jù)段,intmsg db A 8259A Interrupt ! db 0dh,0ah,0 counter db 0,例7.2,保存中斷向量,mov ax,3508h int 21h push bx ;保存偏移地址 push es ;保存段基地址,例7.2,設置中斷向量,cli push ds mov dx,offset new08h mov ax,seg new08h mov ds,ax mov ax,2508h int 21h pop ds,例7.2,設置中斷寄存器,in al,21h push ax and al,0feh ;允許IRQ0 out 21h,al mov counter,0 ;設置中斷次數(shù)初值 sti ;開中斷,例7.2,循環(huán)等待中斷,start1: cmp counter,10 jb start1 ;中斷10次退出,例7.2,中斷就在主程序循環(huán)當中,new08h proc sti ;開中斷 push ax ;保護寄存器 push bx push ds mov ax,data mov ds,ax ;設置數(shù)據(jù)段DS,例7.2,進入中斷服務程序,中斷處理,inc counter mov si,offset intmsg ;顯示信息 call dpstri,例7.2,顯示字符串,dpstri proc ;顯示字符串子程序 push ax push bx dps1: lodsb cmp al,0 jz dps2,例7.2,顯示字符串(續(xù)),mov bx,0 mov ah,0eh int 10h jmp dps1 dps2: pop bx pop ax ret dpstri endp,例7.2,退出中斷服務程序,mov al,20h out 20h,al pop ds ;恢復寄存器 pop bx pop ax iret ;中斷返回 new08h endp,例7.2,主程序結束,cli pop ax out 21h,al pop dx pop ds mov ax,2508h int 21h sti mov ax,4c00h int 21h,例7.2,A 8259A Interrupt ! A 8259A Interrupt ! A 8259A Interrupt ! A 8259A Interrupt ! A 8259A Interrupt ! A 8259A Interrupt ! A 8259A Interrupt ! A 8259A Interrupt ! A 8259A Interrupt ! A 8259A Interrupt !,7.6 駐留中斷服務程序,駐留TSR(Terminate and Stay Resident)程序 用戶程序運行后仍然保存在主存中,可以讓其他程序使用 利用DOS功能調用31H代替4CH終止程序 小型駐留程序常編寫成COM程序 駐留程序也可以編寫成EXE程序 需要駐留內存的程序段要寫在前面,例題7.3 報時中斷駐留服務程序,系統(tǒng)08H號中斷服務程序調用1CH中斷 每隔55ms調用這個報時中斷,中斷65543次就是時間過了一個小時 本例編寫一個駐留內存的1CH內部中斷服務程序 實現(xiàn)每過一小時就顯示信息 執(zhí)行此程序后,報時中斷服務程序將駐留內存,new1ch proc sti ;開中斷 push si ;保護寄存器 push ds mov si,cs mov ds,si ;設置數(shù)據(jù)段DS add countl,1 adc counth,0,例7.3,進入中斷服務程序,中斷處理,cmp countl,hourl jnz n1ch1 cmp counth,hourh jnz n1ch1 mov countl,0 mov counth,0 mov si,offset intmsg call dpstri,例7.3,退出中斷服務程序,n1ch1: pop ds ;恢復寄存器 pop si iret ;中斷返回 countl dw 0 counth dw 0 intmsg db One Hour Has Passed ! db 0dh,0ah,0 new1ch endp,例7.3,One Hour Has Passed !,顯示字符串,dpstri proc ;顯示字符串子程序 push ax push bx dps1: lodsb cmp al,0 jz dps2,例7.3,顯示字符串(續(xù)),mov bx,0 mov ah,0eh int 10h jmp dps1 dps2: pop bx pop ax ret dpstri endp,例7.3,主程序開始,start: mov ax,cs mov ds,ax mov dx,offset new1ch cli mov ax,251ch int 21h sti mov dx,offset tsrmsg mov ah,09h int 21h,例7.3,主程序結束,mov dx,offset start add dx,15 mov cl,4 shr dx,cl add dx,10h mov ax,3100h ;程序駐留 int 21h tsrmsg db INT 1CH Program Installed ! db 0dh,0ah,$ end start,例7.3,INT 1CH Program Installed !,第7章教學要求,1. 熟悉8088的中斷類型、中斷響應過程、中斷向量表 2. 掌握內部中斷服務程序的編寫 3. 理解8259A的內部結構、寄存器作用、中斷過程 4. 掌握8259A的普通全嵌套優(yōu)先權、普通中斷結束、邊沿觸發(fā)方式,第7章教學要求(續(xù)),5. 了解的8259A的ICW和OCW,注意命令字和狀態(tài)字的區(qū)別方法 6. 了解8259A在IBM PC系列機上的應用情況 7. 掌握外部中斷服務程序的編寫 習題7(第189頁) 7.4 7.6 9.9 9.11 9.13,實驗2 中斷實驗,不用實驗臺,實現(xiàn)例題程序 例7.1 內
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 商城店面租賃合同協(xié)議
- 品牌保潔合同協(xié)議
- 悉尼租房中介合同協(xié)議
- 2025試用期內勞動合同書模板
- 櫥柜廢料處理合同協(xié)議
- 正規(guī)底商租賃合同協(xié)議
- 和睦攤位轉讓協(xié)議書模板
- 2025年新版事業(yè)單位勞動合同
- 2025眼鏡加盟合同模板
- 2025攪拌車租賃合同
- 中藥代茶飲白義萍課件
- 2024年河北普通高等學校對口招生考試數(shù)學試題
- 認知與實踐:AI技術在高校圖書館應用現(xiàn)狀調研分析
- 護理行政查房內容
- 精神科患者自縊應急演練
- 視屏號認證授權書
- 《用戶體驗人員技術能力等級評價》編制說明
- 《打印機培訓資料》課件
- 涉密項目管理流程培訓
- 鄉(xiāng)村文化傳承與發(fā)展路徑研究
- 班委工作職責一覽表
評論
0/150
提交評論