版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
計算機第七章第一頁,共八十八頁,編輯于2023年,星期五8.18088中斷系統(tǒng)8088的中斷系統(tǒng)采用向量中斷機制能夠處理256個中斷用中斷向量號0~255區(qū)別可屏蔽中斷還需要借助專用中斷控制器Intel8259A實現(xiàn)優(yōu)先權管理第二頁,共八十八頁,編輯于2023年,星期五8.1.18088的中斷類型非屏蔽中斷源中斷邏輯INTO指令單步中斷除法錯誤INTN指令CPUINTRNMI可屏蔽中斷源8259A中斷控制器IR0IR1IR2IR3IR4IR5IR6IR7外設中斷源
INTA內部中斷除法錯中斷指令中斷溢出中斷單步中斷外部中斷非屏蔽中斷可屏蔽中斷第三頁,共八十八頁,編輯于2023年,星期五1.內部中斷內部中斷是由于8088內部執(zhí)行程序出現(xiàn)異常引起的程序中斷利用內部中斷,微處理器為用戶提供了發(fā)現(xiàn)、調試并解決程序執(zhí)行時異常情況的有效途徑例如,ROM-BIOS和DOS系統(tǒng)利用內部中斷為程序員提供了各種功能調用內部中斷的中斷向量號已定第四頁,共八十八頁,編輯于2023年,星期五⑴除法錯中斷在執(zhí)行除法指令時,若除數(shù)為0或商超過了寄存器所能表達的范圍,則產(chǎn)生一個向量號為0的內部中斷,稱為除法錯中斷例如:movbl,0idivbl ;除數(shù)BL=0,產(chǎn)生除法錯中斷movax,200hmovbl,1divbl ;商=200H,不能用AL表達 ;產(chǎn)生除法錯中斷第五頁,共八十八頁,編輯于2023年,星期五⑵指令中斷在執(zhí)行中斷調用指令INTn時產(chǎn)生的一個向量號為n(0~255)的內部中斷,稱為指令中斷其中向量號為3的指令中斷比較特別(生成一個字節(jié)的指令代碼:11001100),常用于程序調試,被稱為斷點中斷例如:DEBUG.EXE調試程序的運行命令G設置的斷點,就是利用INT3指令實現(xiàn)的第六頁,共八十八頁,編輯于2023年,星期五⑶溢出中斷在執(zhí)行溢出中斷指令INTO時,若溢出標志OF為1,則產(chǎn)生一個向量號為4的內部中斷,被稱為溢出中斷例如:movax,2000haddax,7000h
;2000H+7000H=9000H,溢出:OF=1into ;因為OF=1,所以產(chǎn)生溢出中斷第七頁,共八十八頁,編輯于2023年,星期五⑷單步中斷若單步中斷TF為1,則在每條指令執(zhí)行結束后產(chǎn)生一個向量號為1的內部中斷,稱為單步中斷例如:DEBUG.EXE調試程序的單步命令T就利用單步中斷實現(xiàn)對程序的單步調試第八頁,共八十八頁,編輯于2023年,星期五2.外部中斷外部中斷是由于8088外部提出中斷請求引起的程序中斷利用外部中斷,微機系統(tǒng)可以實時響應外部設備的數(shù)據(jù)傳送請求,能夠及時處理外部意外或緊急事件外部中斷的原因是處理器外部隨機產(chǎn)生的,所以是真正的中斷(Interrupt)內部中斷的原因是處理器執(zhí)行程序出現(xiàn)異常,所以經(jīng)常被稱為異常(Exception)第九頁,共八十八頁,編輯于2023年,星期五⑴非屏蔽中斷通過非屏蔽中斷請求信號向微處理器提出的中斷請求,微處理器無法禁止,將在當前指令執(zhí)行結束予以響應,這個中斷被稱為非屏蔽中斷8088的非屏蔽中斷的向量號為2,非屏蔽中斷請求信號為NMI非屏蔽中斷主要用于處理系統(tǒng)的意外或故障。例如:電源調電前的數(shù)據(jù)保護存儲器讀寫錯誤的處理第十頁,共八十八頁,編輯于2023年,星期五⑵可屏蔽中斷外部通過可屏蔽中斷請求信號向微處理器提出的中斷,微處理器在允許可屏蔽中斷的條件下,在當前指令執(zhí)行結束予以響應,同時輸出可屏蔽中斷響應信號,這個中斷就是可屏蔽中斷8088的可屏蔽中斷請求和響應信號分別是INTR和INTA*;由IF標志控制可屏蔽中斷是否允許響應;向量號來自外部中斷控制器8088通常需要配合中斷控制器8259A共同處理可屏蔽中斷可屏蔽中斷主要用于主機與外設交換數(shù)據(jù)IF控制可屏蔽中斷的響應第十一頁,共八十八頁,編輯于2023年,星期五中斷標志IF的狀態(tài)IF=0:可屏蔽中斷不會被響應關中斷、禁止中斷、中斷屏蔽系統(tǒng)復位,使IF=0任何一個中斷被響應,使IF=0執(zhí)行指令CLI,使IF=0IF=1:可屏蔽中斷會被響應開中斷、允許中斷、中斷開放執(zhí)行指令STI,使IF=1執(zhí)行指令IRET恢復原IF狀態(tài)明確IF標志的狀態(tài)是關鍵第十二頁,共八十八頁,編輯于2023年,星期五8.1.28088的中斷響應過程NMIN軟件中斷INTRTF=1中斷響應周期讀中斷向量號下條指令現(xiàn)行指令IF=1NNNNYYYYY查詢中斷的順序,決定了各種中斷源的優(yōu)先權軟件中斷除法錯中斷指令中斷溢出中斷非屏蔽中斷可屏蔽中斷單步中斷高低第十三頁,共八十八頁,編輯于2023年,星期五8.1.28088的中斷響應過程(續(xù))Y還有NMITEMP=1標志寄存器入棧TEMP=TF,IF=TF=0CS:IP入棧獲取中斷向量執(zhí)行服務程序彈出CS:IP彈出標志寄存器返回被中斷程序(1)(2)(3)(4)(5)NNY(6)8088各種中斷源的優(yōu)先權,實際上是指被識別出來的先后多種中斷同時請求時,最先響應的則可能是單步中斷或NMI中斷第十四頁,共八十八頁,編輯于2023年,星期五8.1.38088的中斷向量表中斷向量:中斷服務程序的入口地址(首地址)邏輯地址含有段地址CS和偏移地址IP(32位)每個中斷向量的低字是偏移地址、高字是段地址,需占用4個字節(jié)8088微處理器從物理地址000H開始,依次安排各個中斷向量,向量號也從0開始256個中斷占用1KB區(qū)域,就形成中斷向量表向量號為N的中斷向量的物理地址=N×4第十五頁,共八十八頁,編輯于2023年,星期五8.2內部中斷服務程序編寫內部中斷服務程序與編寫子程序類似利用過程定義偽指令PROC/ENDP第1條指令通常為開中斷指令STI最后用中斷返回指令IRET通常采用寄存器傳遞參數(shù)主程序需要調用中斷服務程序調用前,需要設置中斷向量利用INTn指令調用中斷服務程序第十六頁,共八十八頁,編輯于2023年,星期五例8.1內部中斷服務程序編寫80H號中斷服務程序功能:顯示以“0”結尾字符串的功能利用顯示器功能調用INT10H字符串緩沖區(qū)首地址為入口參數(shù)DS:DX(段地址:偏移地址)傳遞參數(shù)第十七頁,共八十八頁,編輯于2023年,星期五數(shù)據(jù)段
intoff dw? intseg dw? intmsg db‘AInstructionInterrupt!’ db0dh,0ah,0例8.1以“0”結尾回車、換行第十八頁,共八十八頁,編輯于2023年,星期五保存中斷向量
movax,3580h int21h movintoff,bx ;保存偏移地址
movintseg,es ;保存段基地址例8.1獲取中斷向量(DOS功能調用INT21H)功能號:AH=35H入口參數(shù):AL=中斷向量號出口參數(shù):ES:BX=中斷向量(段地址:偏移地址)第十九頁,共八十八頁,編輯于2023年,星期五設置中斷向量pushdsmovdx,offsetnew80hmovax,segnew80hmovds,axmovax,2580hint21hpopds例8.1設置中斷向量(DOS功能調用INT21H)功能號:AH=25H入口參數(shù):AL=中斷向量號DS:DX=中斷向量(段地址:偏移地址)第二十頁,共八十八頁,編輯于2023年,星期五調用中斷服務程序;設置入口參數(shù): DS=段地址(已設置)
DX=偏移地址
movdx,offsetintmsg int80h ;調用80H中斷服務程序例8.1AInstructionInterrupt!第二十一頁,共八十八頁,編輯于2023年,星期五;80H號內部中斷服務程序:;顯示字符串(以“0”結尾);入口參數(shù):DS:DX=緩沖器首地址
new80h proc
sti ;開中斷
pushax ;保護寄存器
pushbx pushsi例8.1進入中斷服務程序AInstructionInterrupt!第二十二頁,共八十八頁,編輯于2023年,星期五顯示字符串
movsi,dxnew1: moval,[si] cmpal,0 jznew2 movbx,0 movah,0eh int10h incsi jmpnew1例8.1AInstructionInterrupt!第二十三頁,共八十八頁,編輯于2023年,星期五退出中斷服務程序
new2: popsi ;恢復寄存器
popbx popax
iret ;中斷返回
new80h endp例8.1AInstructionInterrupt!第二十四頁,共八十八頁,編輯于2023年,星期五主程序結束
movdx,intoff movax,intseg movds,ax movax,2580h int21h movax,4c00h int21h例8.1AInstructionInterrupt!第二十五頁,共八十八頁,編輯于2023年,星期五8.38259A中斷控制器Intel8259A是可編程中斷控制器PIC可用于管理Intel8080/8085、8086/8088、80286/80386的可屏蔽中斷8259A的基本功能一片8259A可以管理8級中斷,可擴展至64級每一級中斷都可單獨被屏蔽或允許在中斷響應周期,可提供相應的中斷向量號8259A設計有多種工作方式,可通過編程選擇第二十六頁,共八十八頁,編輯于2023年,星期五8.3.18259A的內部結構和引腳D7~D0INTAINT中斷請求寄存器中斷屏蔽寄存器數(shù)據(jù)總線緩沖器IR0IR7讀/寫控制邏輯級聯(lián)緩沖器比較器RDWRA0CSCAS0CSA1CAS2SP/EN優(yōu)先權判別電路中斷服務寄存器控制邏輯第二十七頁,共八十八頁,編輯于2023年,星期五1.中斷控制中斷請求寄存器IRR保存8條外界中斷請求信號IR0~IR7的請求狀態(tài)Di位為1表示IRi引腳有中斷請求;為0表示無請求中斷服務寄存器ISR保存正在被8259A服務著的中斷狀態(tài)Di位為1表示IRi中斷正在服務中;為0表示沒有被服務中斷屏蔽寄存器IMR保存對中斷請求信號IR的屏蔽狀態(tài)Di位為1表示IRi中斷被屏蔽(禁止);為0表示允許第二十八頁,共八十八頁,編輯于2023年,星期五2.與處理器接口
A0RD*WR*CS*功能
0100110000101010×110×××1寫入ICW1、OCW2和OCW3寫入ICW2~ICW4和OCW1讀出IRR、ISR和查詢字讀出IMR數(shù)據(jù)總線高阻狀態(tài)數(shù)據(jù)總線高阻狀態(tài)第二十九頁,共八十八頁,編輯于2023年,星期五3.中斷級連一個系統(tǒng)中,8259A可以級連,有一個主8259A,若干個(最多8個)從8259A級連時,主8259A的三條級連線CAS0~CAS2作為輸出線,連至每個從8259A的CAS0~CAS2每個從8259A的中斷請求信號INT,連至主8259A的一個中斷請求輸入端IR主8259A的INT線連至CPU的中斷請求輸入端SP*/EN*在非緩沖方式下,規(guī)定該8259A是主片(SP*=1)還是從片(SP*=0)動畫示例第三十頁,共八十八頁,編輯于2023年,星期五8.3.28259A的中斷過程CAS0~CAS2D0~D7SP/ENIR0~IR7CPU響應周期8259A工作波形INT第一個周期T1T2T3T4ALECLK
第二個周期T1T2T3T4第一個前保持為高電平
INTALOCK動畫第三十一頁,共八十八頁,編輯于2023年,星期五8.3.38259A的工作方式普通全嵌套方式特殊全嵌套方式自動循環(huán)方式特殊循環(huán)方式優(yōu)先權固定方式優(yōu)先權循環(huán)方式設置優(yōu)先權方式普通中斷結束方式特殊中斷結束方式自動中斷結束方式非自動中斷結束方式結束中斷處理方式屏蔽中斷源方式普通屏蔽方式特殊屏蔽方式中斷觸發(fā)方式邊沿觸發(fā)方式電平觸發(fā)方式數(shù)據(jù)線連接方式緩沖方式非緩沖方式第三十二頁,共八十八頁,編輯于2023年,星期五1.設置優(yōu)先權方式普通全嵌套方式8259A的中斷優(yōu)先權順序固定不變,從高到低依次為IR0、IR1、IR2、……IR7中斷請求后,8259A對當前請求中斷中優(yōu)先權最高的中斷IRi予以響應,將其向量號送上數(shù)據(jù)總線,對應ISR的Di位置位,至到中斷結束(ISR的Di位復位)在ISR的Di位置位期間,禁止再發(fā)生同級和低級優(yōu)先權的中斷,但允許高級優(yōu)先權中斷的嵌套特殊全嵌套方式優(yōu)先權自動循環(huán)方式優(yōu)先權特殊循環(huán)方式第三十三頁,共八十八頁,編輯于2023年,星期五2.結束中斷處理方式什么是8259A的中斷結束?8259A利用中斷服務寄存器ISR判斷:某位為1,表示正在進行中斷服務;該位為0,就是該中斷結束服務。這里說明如何使ISR某位為0,不反映CPU的工作狀態(tài)。第三十四頁,共八十八頁,編輯于2023年,星期五2.結束中斷處理方式自動中斷結束方式普通中斷結束方式配合全嵌套優(yōu)先權方式使用當CPU用輸出指令往8259A發(fā)出普通中斷結束EOI命令時,8259A就會把所有正在服務的中斷中優(yōu)先權最高的ISR位復位特殊中斷結束方式配合循環(huán)優(yōu)先權方式使用CPU在程序中向8259A發(fā)送一條特殊中斷結束命令,這個命令中指出了要清除哪個ISR位第三十五頁,共八十八頁,編輯于2023年,星期五3.屏蔽中斷源方式普通屏蔽方式將IMR的Di位置1,則對應的中斷IRi被屏蔽,該中斷請求不能從8259A送到CPU如果IMR的Di位置0,則允許IRi中斷產(chǎn)生特殊屏蔽方式將IMR的Di位置1,對應的中斷IRi被屏蔽的同時,使ISR的Di位置0第三十六頁,共八十八頁,編輯于2023年,星期五4.中斷觸發(fā)方式邊沿觸發(fā)方式8259A將中斷請求輸入端出現(xiàn)的上升沿作為中斷請求信號電平觸發(fā)方式中斷請求端出現(xiàn)的高電平是有效的中斷請求信號第三十七頁,共八十八頁,編輯于2023年,星期五5.數(shù)據(jù)線連接方式緩沖方式8259A的數(shù)據(jù)線需加緩沖器予以驅動8259A把SP*/EN*引腳作為輸出端,輸出允許信號,用以鎖存或開啟緩沖器非緩沖方式SP*/EN*引腳為輸入端若8259A級連,由其確定是主片或從片第三十八頁,共八十八頁,編輯于2023年,星期五8.3.48259A的編程初始化編程8259A開始工作前,必須進行初始化編程給8259A寫入初始化命令字ICW中斷操作編程在8259A工作期間可以寫入操作命令字OCW將選定的操作傳送給8259A,使之按新的要求工作還可以讀取8259A的信息,以便了解他的工作狀態(tài)第三十九頁,共八十八頁,編輯于2023年,星期五1.初始化命令字ICW初始化命令字ICW最多有4個8259A在開始工作前必須寫入必須按照ICW1~ICW4順序寫入ICW1和ICW2是必須送的ICW3和ICW4由工作方式?jīng)Q定流程D7D6D5D4D3D2D1D0第四十頁,共八十八頁,編輯于2023年,星期五ICW1×××1LTIM×SNGLIC4D7D6D5D4D3D2D1D0×——表示可以任意為1為0都可以(建議為0)1——只能為1,作為標志中斷觸發(fā)方式:LTIM=1,電平觸發(fā)方式LTIM=0,邊沿觸發(fā)方式規(guī)定單片或級連方式:SNGL=1,單片方式SNGL=0,級連方式是否寫入ICW4IC4=1,要寫入ICW4IC4=0,不寫入ICW4,即ICW4規(guī)定的位全為0第四十一頁,共八十八頁,編輯于2023年,星期五ICW2T7T6T5T4T3×××D7D6D5D4D3D2D1D0設置中斷向量號T7~T3為中斷向量號的高5位低3位由8259A自動確定:IR0為000、IR1為001、……、IR7為111第四十二頁,共八十八頁,編輯于2023年,星期五ICW3S7S6S5S4S3S2/ID2S1/ID1S0/ID0D7D6D5D4D3D2D1D0級連命令字主片8259A:Si=1對應IRi接有從片;否則IRi沒有連接從片從片8259A:ID0~ID2編碼說明從片INT引腳接到主片哪個IR引腳第四十三頁,共八十八頁,編輯于2023年,星期五ICW4000SFNMBUFM/SAEOIμPMD7D6D5D4D3D2D1D0嵌套方式:特殊全嵌套方式(SFNM=1)普通全嵌套方式(SFNM=0)數(shù)據(jù)線的緩沖方式:緩沖方式(BUF=1)非緩沖方式(BUF=0)主片/從片選擇:主片(M/S=1)從片(M/S=0)中斷結束方式:自動中斷結束(AEOI=1)非自動中斷結束(AEOI=0)微處理器類型:16位80x86(PM=1)8位8080/8085(PM=0)第四十四頁,共八十八頁,編輯于2023年,星期五2.操作命令字OCW8259A工作期間,可以隨時接受操作命令字OCWOCW共有3個:OCW1~OCW3寫入時沒有順序要求,需要哪個OCW就寫入那個OCWD7D6D5D4D3D2D1D0第四十五頁,共八十八頁,編輯于2023年,星期五OCW1M7M6M5M4M3M2M1M0D7D6D5D4D3D2D1D0屏蔽命令字內容寫入中斷屏蔽寄存器IMRDi=Mi對應IRi,為1禁止IRi中斷;為0允許IRi中斷。各位互相獨立。第四十六頁,共八十八頁,編輯于2023年,星期五OCW2RSLEOI00L2L1L0D7D6D5D4D3D2D1D0R、SL和EOI配合使用產(chǎn)生中斷結束EOI命令和改變優(yōu)先權順序L2~L0的3位編碼指定IR引腳第四十七頁,共八十八頁,編輯于2023年,星期五OCW30ESMMSMM01PRRRISD7D6D5D4D3D2D1D0ESMM、SMM設置中斷屏蔽方式P、RR和RIS規(guī)定隨后讀取的狀態(tài)字含義第四十八頁,共八十八頁,編輯于2023年,星期五3.讀取狀態(tài)字CPU可讀出IRR、ISR、IMR和查詢字A0為低,由OCW3中RR和RIS位設定讀取IRR或ISR,由OCW3中P位設定讀取查詢字而A0引腳為高電平時讀取的都是IMR查詢字反映8259A是否有中斷請求D7D6D5D4D3D2D1D0第四十九頁,共八十八頁,編輯于2023年,星期五查詢字I----W2W1W0D7D6D5D4D3D2D1D0中斷位I位為1,有外設請求中斷W2~W0的編碼當前中斷請求的最高優(yōu)先級第五十頁,共八十八頁,編輯于2023年,星期五4.命令字和狀態(tài)字的區(qū)別方法⑴利用讀寫信號區(qū)別寫入的控制寄存器和讀出的狀態(tài)寄存器⑵利用地址信號區(qū)別不同I/O地址的寄存器⑶由控制字中的標志位說明是哪個寄存器⑷由芯片內順序控制邏輯按一定順序識別不同的寄存器⑸由前面的控制字決定后續(xù)操作的寄存器接口電路中常用的方法第五十一頁,共八十八頁,編輯于2023年,星期五初始化主片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中斷控制器的初始化程序段第五十二頁,共八十八頁,編輯于2023年,星期五初始化從片8259A
moval,11h ;寫入ICW1 out0a0h,al jmpintr5intr5: moval,70h ;寫入ICW2 out0a1h,al jmpintr6intr6: moval,02h ;寫入ICW3 out0a1h,al jmpintr7intr7: moval,01h ;寫入ICW4 out0a1h,al中斷控制器的初始化程序段第五十三頁,共八十八頁,編輯于2023年,星期五8.48259A在IBMPC系列機上的應用CAS0~2CAS0~2+5V主8259A8228880286CPUINTRD0~D7SP/ENINTD0~D7日時鐘鍵盤串行口2串行口1并行口2軟盤并行口1A0INTR1CS—IRQ0—IRQ1IRQ2—IRQ3—IRQ4—IRQ5—IRQ6—IRQ7—A0—CS
從8259AD0~D7INTSP/EN實時鐘改向0AH中斷保留保留保留協(xié)處理器硬盤保留A0INTR2CS—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………INTARDWRINTAIORIOWINTARDWR第五十四頁,共八十八頁,編輯于2023年,星期五8.48259A在IBMPC系列機上的應用CAS0~2
從8259AD0~D7INTSP/EN實時鐘改向0AH中斷保留保留保留協(xié)處理器硬盤保留A0INTR2CS—IRQ8—IRQ9—IRQ10—IRQ11—IRQ12—IRQ13—IRQ14—IRQ15—A0—CS系統(tǒng)總線B4…D3………D4………D5………D6………D7………INTARDWR對比在IBMPC/XT機的應用第五十五頁,共八十八頁,編輯于2023年,星期五應用注意事項利用上升沿做為中斷請求IRQ的有效信號IRQ0~IRQ7的中斷向量號依次為08H~0FH,IRQ8~IRQ15依次為70H~77H采用普通全嵌套優(yōu)先權方式,中斷優(yōu)先權從高到低順序為IRQ0~IRQ2、IRQ8~IRQ15、IRQ3~IRQ7,且不能改變采用普通中斷結束EOI方式,需要在中斷服務程序最后發(fā)送普通EOI命令一般采用普通屏蔽方式,通過寫入IMR允許中斷,但注意不要破壞原屏蔽狀態(tài)第五十六頁,共八十八頁,編輯于2023年,星期五8.5外部中斷服務程序編寫外部可屏蔽中斷服務程序,需注意:發(fā)送中斷結束命令一般只能采用存儲單元傳遞參數(shù)不要使用DOS系統(tǒng)功能調用中斷服務程序盡量短小第五十七頁,共八十八頁,編輯于2023年,星期五8.5外部中斷服務程序(續(xù))編寫主程序,需注意:修改中斷向量控制CPU的中斷允許標志設置8259A的中斷屏蔽寄存器第五十八頁,共八十八頁,編輯于2023年,星期五例題8.2可屏蔽中斷服務程序8259A的IRQ0(向量號為08H)中斷請求來自定時器8253,每隔55ms產(chǎn)生一次本程序的08H號中斷服務程序,每次中斷顯示一串信息,顯示10次用內存單元(共享變量)在主程序與外部中斷服務程序之間傳遞參數(shù):中斷次數(shù)顯示信息也安排在共同的數(shù)據(jù)段中第五十九頁,共八十八頁,編輯于2023年,星期五數(shù)據(jù)段
intmsg db‘A8259AInterrupt!’ db0dh,0ah,0 counter db0例8.2第六十頁,共八十八頁,編輯于2023年,星期五保存中斷向量
movax,3508h int21h pushbx ;保存偏移地址
pushes ;保存段基地址例8.2第六十一頁,共八十八頁,編輯于2023年,星期五設置中斷向量
cli
pushds movdx,offsetnew08h movax,segnew08h movds,ax movax,2508h int21h popds例8.2第六十二頁,共八十八頁,編輯于2023年,星期五設置中斷寄存器
inal,21h pushax andal,0feh ;允許IRQ0 out21h,al movcounter,0 ;設置中斷次數(shù)初值
sti ;開中斷例8.2第六十三頁,共八十八頁,編輯于2023年,星期五循環(huán)等待中斷
start1: cmpcounter,10 jbstart1 ;中斷10次退出例8.2中斷就在主程序循環(huán)當中第六十四頁,共八十八頁,編輯于2023年,星期五
new08h proc
sti ;開中斷
pushax ;保護寄存器
pushbx pushds
movax,@data movds,ax ;設置數(shù)據(jù)段DS例8.2進入中斷服務程序第六十五頁,共八十八頁,編輯于2023年,星期五中斷處理
inccounter movsi,offsetintmsg ;顯示信息
calldpstri例8.2第六十六頁,共八十八頁,編輯于2023年,星期五顯示字符串
dpstri proc ;顯示字符串子程序
pushax pushbx dps1: lodsb cmpal,0 jzdps2例8.2第六十七頁,共八十八頁,編輯于2023年,星期五顯示字符串(續(xù))
movbx,0 movah,0eh int10h jmpdps1 dps2: popbx popax ret dpstri endp例8.2第六十八頁,共八十八頁,編輯于2023年,星期五退出中斷服務程序
moval,20h out20h,al popds ;恢復寄存器
popbx popax
iret ;中斷返回
new08h endp例8.2第六十九頁,共八十八頁,編輯于2023年,星期五主程序結束
cli
popax out21h,al popdx popds movax,2508h int21h
sti movax,4c00h int21h例8.2A8259AInterrupt!A8259AInterrupt!A8259AInterrupt!A8259AInterrupt!A8259AInterrupt!A8259AInterrupt!A8259AInterrupt!A8259AInterrupt!A8259AInterrupt!A8259AInterrupt!第七十頁,共八十八頁,編輯于2023年,星期五8.6駐留中斷服務程序駐留TSR(TerminateandStayResident)程序用戶程序運行后仍然保存在主存中,可以讓其他程序使用利用DOS功能調用31H代替4CH終止程序小型駐留程序常編寫成COM程序駐留程序也可以編寫成EXE程序需要駐留內存的程序段要寫在前面第七十一頁,共八十八頁,編輯于2023年,星期五例題8.3報時中斷駐留服務程序系統(tǒng)08H號中斷服務程序調用1CH中斷每隔55ms調用這個報時中斷,中斷65543次就是時間過了一個小時本例編寫一個駐留內存的1CH內部中斷服務程序實現(xiàn)每過一小時就顯示信息執(zhí)行此程序后,報時中斷服務程序將駐留內存第七十二頁,共八十八頁,編輯于2023年,星期五
new1ch proc
sti ;開中斷
pushsi ;保護寄存器
pushds
movsi,cs movds,si ;設置數(shù)據(jù)段DS addcountl,1 adccounth,0例8.3進入中斷服務程序第七十三頁,共八十八頁,編輯于2023年,星期五中斷處理
cmpcountl,hourl jnzn1ch1 cmpcounth,hourh jnzn1ch1 movcountl,0 movcounth,0 movsi,offsetintmsg calldpstri例8.3第七十四頁,共八十八頁,編輯于2023年,星期五退出中斷服務程序
n1ch1: popds ;恢復寄存器
popsi
iret ;中斷返回
countl dw0 counth dw0 intmsg db‘OneHourHasPassed!’ db0dh,0ah,0 new1ch endp例8.3OneHourHasPassed!第七十五頁,共八十八頁,編輯于2023年,星期五顯示字符串
dpstri proc ;顯示字符串子程序
pushax pushbx dps1: lodsb cmpal,0 jzdps2例8.3第七十六頁,共八十八頁,編輯于2023年,星期五顯示字符串(續(xù))
movbx,0 movah,0eh int10h jmpdps1 dps2: popbx popax ret dpstri endp例8.3第七十七頁,共八十八頁,編輯于2023年,星期五主程序開始
start: movax,cs movds,ax movdx,offsetnew1ch
cli movax,251ch int21h
sti movdx,offsettsrmsg movah,09h int21h例8.3第七十八頁,共八十八頁,編輯于2023年,星期五主程序結束
movdx,offsetstart adddx,15 movcl,4 shrdx,cl adddx,10h
movax,3100h ;程序駐留
int21h tsrmsg db‘INT1CHProgramInstalled!’ db0dh,0ah,'$'
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 細胞凋亡與骨關節(jié)炎
- 基于設計思維教學法的小學語文項目式學習理念與實踐模型
- 護理碩士研究生心理資本潛在剖面分析及與情緒幸福感的關系
- 國際志愿者日活動策劃
- 湖南省張家界市桑植縣2024-2025學年七年級上學期道德與法治期末試卷(含答案)
- 第十八章 平行四邊形 評估測試卷(含答案)2024-2025學年數(shù)學人教版八年級下冊
- 二零二五年度房產(chǎn)共同債權債務處理離婚協(xié)議3篇
- 貴州盛華職業(yè)學院《影視欄目包裝專題設計》2023-2024學年第一學期期末試卷
- 貴州黔南科技學院《設計原理》2023-2024學年第一學期期末試卷
- 新疆巴音郭楞蒙古自治州(2024年-2025年小學六年級語文)人教版課后作業(yè)(下學期)試卷及答案
- 英法核動力裝置
- GB/T 41837-2022溫泉服務溫泉水質要求
- YS/T 79-2006硬質合金焊接刀片
- 考研考博-英語-山東師范大學押題密卷附帶答案詳解篇
- 實用性閱讀與交流任務群設計思路與教學建議
- 中醫(yī)診療器具清洗消毒(醫(yī)院感染防控專家課堂培訓課件)
- 通風設施標準
- 藥廠生產(chǎn)車間現(xiàn)場管理-PPT課件
- 軸與孔標準公差表
- 防火門施工方案
- 人教PEP版2022-2023六年級英語上冊期末試卷及答案(含聽力材料)
評論
0/150
提交評論