![北郵微機原理中斷程序報告_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/22/1e76fbe6-444f-49a3-9024-4d112c4f5a73/1e76fbe6-444f-49a3-9024-4d112c4f5a731.gif)
![北郵微機原理中斷程序報告_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/22/1e76fbe6-444f-49a3-9024-4d112c4f5a73/1e76fbe6-444f-49a3-9024-4d112c4f5a732.gif)
![北郵微機原理中斷程序報告_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/22/1e76fbe6-444f-49a3-9024-4d112c4f5a73/1e76fbe6-444f-49a3-9024-4d112c4f5a733.gif)
![北郵微機原理中斷程序報告_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/22/1e76fbe6-444f-49a3-9024-4d112c4f5a73/1e76fbe6-444f-49a3-9024-4d112c4f5a734.gif)
![北郵微機原理中斷程序報告_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/22/1e76fbe6-444f-49a3-9024-4d112c4f5a73/1e76fbe6-444f-49a3-9024-4d112c4f5a735.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、北京郵電大學實驗報告題目:微機原理軟件實驗學院:信息與通信工程專業(yè):信息工程_中斷實驗報告一、 實驗目的 1、 初步掌握中斷程序的設計方法; 2、 初步掌握修改 DOS 系統(tǒng)中斷,以適應實際使用的方法。二:實驗要求 編一程序,在顯示器上顯示時、分、秒。1: 借用計數(shù)器8253的Timer0作為中斷源,通過8259A下向CPU發(fā)中斷,每10ms 產(chǎn)生一次中斷。2:在中斷服務程序中管理刷新時、分、秒。3:輸入文件名(如:CLK)后清屏顯示 Current time is XX:XX:XX(時分秒鍵盤輸入) 打回車,時、分、秒開始
2、計時,時鐘不停的刷新。4:當鍵入CTRL+C時,停止計時,返回系統(tǒng),且系統(tǒng)正常運行不死機。提示: 1、8253的初始化程序段可借用。2、口地址為40H、41H、42H、43H,控制字為36H=00110110B3、時間常數(shù)TC=11932:1.1932MHz/11932=100Hz,輸出方波頻率為100Hz,其周期為1000/100=10ms三:設計思路這個實驗需要用到中斷控制器8259A和計數(shù)器8253。我們先初始化8253的工作方式,利用工作方式3來計數(shù)時間,讓其分頻后產(chǎn)生100hz的方波,每100個周期即為1s,將這個方波作為中斷源,通過8259A每10ms向CPU發(fā)出一次中斷
3、。然后我們將子程序Timer0的地址(CS以及IP)設置為中斷向量,每次中斷即執(zhí)行這個子程序,在這個之程序中編寫相應代碼,看時間是否到1S,沒到則跳出中斷,等待下一次(1ms之后)中斷到來,到1S則讓時間+1并且重置計數(shù)值,再加上相應的時間顯示程序,這樣即可實現(xiàn)時間的自動增加與顯示,可以當做一個計時器來用,這即是這個工程的主體部分。除此之外,還需要一部分程序來實現(xiàn)鍵盤輸入相應時間,這里要注意時間的每一位都有取值方面的要求,這里就要通過一系列的CMP/JMP指令的組合來達到正確輸入的效果,將順序輸入的時間存儲起來,配合Timer0子程序即可輸出當前設置的時間并且實現(xiàn)時間刷新。當然,如果選擇不輸入
4、時間直接回車的話,程序可以從0開始計時,可以當成一個秒表。還有一些細節(jié)的設計如在計時過程中輸入S可以重新設置時間,Ctrl+C可以退出這些也是利用CMP/JMP組合來實現(xiàn)。最后整個程序可以實現(xiàn)以下功能:可以設置開始時間然后自動計時,也可以當做秒表來使用,可以正常退出。開始四:實驗流程 關中斷,保存源中斷向量Timer0地址設為中斷向量初始化8253,8259A開中斷提示輸入時間提示錯誤格式規(guī)范? 否 是顯示時間,計時,檢測鍵盤輸入輸入S? 是 否輸入回車? 是秒表計時 否Ctrl+c? 否 是結束中斷流程: 開始 統(tǒng)計進入中斷次數(shù)已經(jīng)100次 否 是計數(shù)器清0,時間+1有進位? 否是進位調(diào)整結
5、束五:實驗結果執(zhí)行程序,輸入格式不對時有錯誤提示:直接按回車,清屏后進入秒表計時模式:按下S后重新設置時間為12:34:10后開始計時:計時時按回車可以保存當前時間:利用ctrl+c退出:六:實驗總結這次綜合實驗是很有難度的,它不僅需要對匯編語言有一定層次的了解,還需要對8259A與8253這兩個硬件的工作方式很熟悉。通過不斷的查找資料,參考學習,我終于完成了這次實驗,在這個過程中我經(jīng)歷了許多也學習到了許多。首先得到提升的是我的debug能力,編的越多能力也就越強。除此之外,我對課本上學習到的微機原理有了更直觀與深層次的了解,這對我使用計算機以及今后的學習都是非常有幫助的,最后,感謝這次實驗給
6、我?guī)淼膶氋F的經(jīng)歷。附錄(源代碼與子程序清單)datasegmentcount100 db 100;100個10ms=1s,此處起計數(shù)作用msg1 db 'Please enter the current time(XX:XX:XX)!(Press ENTER to use default time)$'msg2 db 'Input Error,please use the correct format!$'msg3 db 'Now, the time is:',0ah,'(Press Ctrl+C to EXIT.)',0ah,
7、'(Press Enter to use as a Stopwatch.)',0ah,'(Press S or s to set current time again.)(XX:XX:XX)$'msg4 db 0ah,'Program EXIT.$'tenhourdb '0' ;小時十位數(shù)hourdb '0',':' ;小時個位數(shù)tenmindb '0' ;分鐘十位數(shù)minutedb '0',':' ;分鐘個位數(shù)tensecdb '0'
8、 ;秒十位數(shù)seconddb '0' ;秒個位數(shù)dataendsstacksegment stack 'stack'db 256 dup(0)stackendscodesegmentassume cs:code,ds:data,es:datastart:mov ax,seg datamov es,axmov ds,axcli ;置中斷標志IF=0mov al,8 ;保存源中斷向量,8中斷為定時器mov ah,35h ;取中斷向量,al為中斷類型,ES:BX為中斷向量int 21hpush espush bxmov ax,0mov es,ax ; es置零,這是準
9、備中斷向量的寫入mov di,20hmov ax,offset Timer0 ;中斷子程序timer的偏移量stosw ;字符串填充,將AX的內(nèi)容;(timer偏移量)存入di所指向的單元, ;di的增減取決于DF,默認段基址總是ESmov ax,csstosw ;timer端基址mov al,36hout 43h,al ;設置8253控制字為36Hmov bx,11932 ;分頻系數(shù)為11932,分頻結果1.1932MHz/11932=100Hz,10ms變化一次mov al,bl ;分兩次設置分頻系數(shù)out 40h,almov al,bhout 40h,almov al,0fch ;主PI
10、C端口設置為0fchout 21h,alsti ;開中斷,允許外部中斷mov ax,seg datamov es,axmov ds,axmov dx,offset msg1 ;打印提示信息1mov ah,09hint 21hmov dl,0ah ;回車mov ah,02hint 21hsettime:mov si,offset tenhour ;設定時間mov ah,01hint 21hcmp al,0dhjz forever1cmp al,'0'jc error2 ;如果輸入不合法,報錯cmp al,'3'jnc error2mov si,alinc sicm
11、p al,'2'jz ershimov ah,01h ;如果小時高位為1,低位可以設置09int 21hcmp al,0dhjz forever1cmp al,'0'jc error2cmp al,'9'+1jnc error2mov si,alinc sijmp fenershi:mov ah,01h ;如果小時高位為2,低位可以設置04int 21hcmp al,0dhjz forever1cmp al,'0'jc error2cmp al,'4'jnc error2mov si,alinc sijmp fen
12、fen:mov ah,01h ;分高位可設置05int 21hcmp al,0dhjz forever1cmp al,':'jnz error1mov si,alinc simov ah,01hint 21hcmp al,0dhjz forever1cmp al,'0'jc error1cmp al,'6'jnc error1mov si,alinc sizcy4:mov ah,01h ;分低位09int 21hcmp al,0dhjz forever1cmp al,'0'jc error1cmp al,'9'+1
13、jnc error1mov si,alinc sijmp zcysettime2:jmp settime ;用來跳轉(zhuǎn)接力error2:jmp error1forever1:jmp next2zcy:mov ah,01h ;秒高位可設置05int 21hcmp al,0dhjz forever1cmp al,':'jnz error1mov si,alinc simov ah,01hint 21hcmp al,0dhjz forever1cmp al,'0'jc error1cmp al,'6'jnc error1mov si,alinc simo
14、v ah,01h ;秒低位可設置09int 21hcmp al,0dhjz forever1cmp al,'0'jc error1cmp al,'9'+1jnc error1mov si,alinc sijmp next2error1: mov dl,0ah ;用來報錯:設置時間不合法mov ah,02hint 21hmov dx,offset msg2 ;打印提示信息2mov ah,09hint 21hmov dl,0ahmov ah,02hint 21hjmp settimesettime3: jmp settime2 ;跳轉(zhuǎn)接力next2: MOV AX,
15、0003H ;做時鐘顯示初始化INT 10H ;清屏顯示mov dl,0ahmov ah,02hint 21hmov dx,offset msg3 ;打印提示信息3mov ah,09hint 21hmov dl,0ahmov ah,02hint 21hforever:mov bx,offset tenhour ;這個程序段循環(huán)執(zhí)行mov cx,8cmp tenhour,'2' ;如果超過24點,置為0點jnz dispclkcmp hour,'4'jnz dispclkmov tenhour,'0'mov hour,'0'disp
16、clk:mov dl,bx ;用來顯示當前時間call dispcharinc bxloop dispclk ;調(diào)用顯示子程序,顯示初始狀態(tài)時間, ;比如”11:11:11"mov dl,0dh ;輸出一個換行call dispcharxor al,al ;讀鍵盤緩沖區(qū)mov ah,0bhint 21hcmp al,0FFHjnz next3mov ah,08h ;取其字符int 21hcmp al,03h ;Ctrl+C退出jz stopcmp al,'s' ;S/s設定時間jz settime3cmp al,'S'jz settime3cmp al
17、,0dhjnz next3mov dl,0ah ;回車則使用秒表功能mov ah,02hint 21hjmp forevernext3:mov al,secondnext:cmp al,second ;判斷second是否發(fā)生變化je next ;如果沒有,循環(huán)比較jmp forever ;如果有變化,刷新輸出stop:mov dx,offset msg4 ;打印提示信息4mov ah,09hint 21hmov dl,0ahmov ah,02hint 21hpop dx ;恢復中斷向量pop dsmov al,8mov ah,25h ;25H 設置中斷向量int 21hmov ah,4chi
18、nt 21hTimer0 proc far ;中斷程序timerpush axdec count100 ;計數(shù)100次jnz timerx ;如果計數(shù)小于100,跳出中斷mov count100,100 ;否則重置count100<=100;1s已經(jīng)到達inc second ;加一秒cmp second,'9' ;判斷大小,用于進位,以下原理相同jle timerxmov second,'0'inc tenseccmp tensec,'6'jl timerxmov tensec,'0'inc minutecmp minute,'9'jle timerxmov m
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 季節(jié)性主題活動設置方案計劃
- 錨桿轉(zhuǎn)載機組、掘錨機、錨桿鉆車擴建技術改造建設項目可行性研究報告寫作模板-拿地備案
- 十年回顧:2010年以來那些重大的網(wǎng)絡安全事件盤點
- 2025-2030全球車用拉力缸行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球生物過程深層流過濾行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球模擬拉線延長位置探頭行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球LPWAN物聯(lián)網(wǎng)模塊行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國電動汽車轉(zhuǎn)子鐵芯行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國翻新電池行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球汽車MIMO智能天線行業(yè)調(diào)研及趨勢分析報告
- 2024年公安機關理論考試題庫附答案【考試直接用】
- 課題申報參考:共同富裕進程中基本生活保障的內(nèi)涵及標準研究
- 2025中國聯(lián)通北京市分公司春季校園招聘高頻重點提升(共500題)附帶答案詳解
- 康復醫(yī)學科患者隱私保護制度
- 環(huán)保工程信息化施工方案
- 紅色中國風2025蛇年介紹
- 2024年安徽省高考地理試卷真題(含答案逐題解析)
- 高中學校開學典禮方案
- 2024年度中國郵政集團公司縣分公司工作總結
- DL∕T 1844-2018 濕式靜電除塵器用導電玻璃鋼陽極檢驗規(guī)范
- JTG D62-2004 公路鋼筋混凝土及預應力混凝土橋涵設計規(guī)范
評論
0/150
提交評論