《微機原理與接口技術》課程設計說明書鐘表顯示匯編語言程序設計
《《微機原理與接口技術》課程設計說明書鐘表顯示匯編語言程序設計》由會員分享,可在線閱讀,更多相關《《微機原理與接口技術》課程設計說明書鐘表顯示匯編語言程序設計(16頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、武漢理工大學《微機原理與接口技術》課程設計說明書 鐘表顯示匯編語言程序設計 1 設計目的與要求 1.1設計目的: (1)理解掌各個中斷的使用方法,通過對一些較大程序的編寫,加深對匯編語言的認識,尤其是對中斷的理解。 (2)掌握一定的匯編語言知識,培養(yǎng)自己的動手操作能力,同時培養(yǎng)學生應用計算機解決實際問題的能力。 (3)學習程序設計的基本思路和方法。 1.2 設計要求: 設計匯編語言程序,實現(xiàn)系統(tǒng)時間顯示功能,具體功能要求如下: (1)設計一個界面顯示系統(tǒng)方框。 (2)單擊“T”鍵顯示本機系統(tǒng)的時間。 (3)單擊“ESC"鍵退出程序。 1.3 程序內容 第一
2、部分:定義顯示界面。 第二部分:調用系統(tǒng)時間,并將調用的用二進制表示的時間數(shù)轉換成ASCII碼,并 將時間數(shù)存入內存區(qū)。 第三部分:將存在系統(tǒng)內存區(qū)的時間數(shù)用顯示字符串的形式顯示出來。 第四部分:獲取鍵盤的按鍵值,以ESC鍵退出系統(tǒng)返回DOS。 2 總體方案論證 這次的任務,一共設計了兩種方案。 方案一主要是調用2CH號DOS中斷讀系統(tǒng)時間,把各相關寄存器中的內容轉換為十進制ASCII碼輸出,分別將小時數(shù)、分鐘數(shù)、秒數(shù)存入顯示緩沖區(qū),調用DOS字符串顯示功能將時間顯示出來,然后定位光標的開始位置,結合著將時間顯示在我們預先定義好的位置上。 方案二同樣調用2CH號DOS中斷讀系統(tǒng)
3、時間,只是方案二簡單點,沒有把小時數(shù)、分鐘數(shù)、秒數(shù)分開,直接將系統(tǒng)當下的時間存入了顯示緩沖區(qū),調用DOS字符串顯示功能將時間顯示出來,然后定位光標的開始位置,結合著將時間顯示在我們預先定義好的位置上。 經(jīng)過對比,我覺得方案一好點們雖然復雜一些,但是大體的思路很清楚。 總體思路就是調用2CH號DOS中斷讀系統(tǒng)時間,把各相關寄存器中的內容轉換為十進制ASCII碼輸出,分別將小時數(shù)、分鐘數(shù)、秒數(shù)存入顯示緩沖區(qū),調用DOS字符串顯示功能將時間顯示出來,然后定位光標的開始位置,結合著將時間顯示在我們預先定義好的位置上。由于獲取了的系統(tǒng)時間不會自動刷新,所以我們要設計成循環(huán)的方式來不斷獲取系統(tǒng)
4、的時間,這樣就形成了會跳動的電子鐘了。程序一旦進入運行,就會顯示一個精美的方框,顯示按鍵提示,按T就將不間斷地在顯示屏顯示時間,要想程序停止運行,可同時在鍵盤按下ESC鍵退出。在本程序中,時鐘的精確度為秒。其中DOS調用功能中,編號為2CH的功能是取時間,出口參數(shù):CX:DX=時間。程序中會有四個子程序: 子程序BIN100UT 功能:把二進制數(shù)轉換為十進制ASCII碼輸出; 子程序STDOUT 功能:標準輸出一個字符; 子程序CLRSCR 功能:清屏; 子程序SETCURS 功能:設置光標位置。 2.1 子程序BIN10OUT 子程序BIN100UT的功能就是把二進制數(shù)轉換為十
5、進制ASCII碼輸出。 基本原理:首先要完成二進制到十進制數(shù)的轉換,一般采用“除10取余”法來完成,其大致過程如下:將待轉換的數(shù)(在AX中)除以10,得到第一個商和余數(shù),此第一個余數(shù)就是所求的十進制數(shù)的個位;再用第一個商除以10,得到第二個商和余數(shù),此第二個余數(shù)就是所求十進制數(shù)的十位;……;重復這一過程直至商為0,此時的余數(shù)就是所求十進制數(shù)的最高位。 在內存中分配一緩沖區(qū),用來存放以上分離出來的十進制數(shù)的每一位,然后再逐個轉換成ASCII碼,轉換成ASCII碼的過程很簡單,就是給每個十進制位加上30H即可;最后送顯示器輸出。從轉換的過程可以看出,先分離出來的是十進制數(shù)的低位,要后顯示;后分
6、離出來的是十進制數(shù)的高位,應該先顯示。因此在編程時,我們可以利用堆棧操作中“先進后出、后進先出”的特性,當分離出各十進制位時依次入棧,要逐個轉換成ASCII碼送顯示時依次出棧。 子程序BIN100UT流程圖如圖2-1所示。
7、 圖2-1 子程序BIN100UT流程圖 2.2子程序STDOUT 子程序STDOUT的功能是顯示輸出。 在編寫這一段程序時,我用到了INT 21 02H號中斷,INT 21的功能是系統(tǒng)功能調用,入口參數(shù):AH=調用號。編號02H的功能就是顯示輸出,入口參數(shù):DL=輸出字符。一旦了解了這一功能,顯示輸出子程序便可解決,程序如下所示。 程序:STDOUT PROC PUSH DX
8、MOV DL,AL MOV AH,2 INT 21H POP DX RET STDOUT ENDP 子程序STDOUT流程圖如圖2-2所示。 圖2-2 子程序STDOUT流程圖 2.3子程序CLRSCR 子程序CLRSCR的功能是清屏。 在子程序CLRSCR中,我用到了顯示器驅動程序(INT 10H)中AH=6的功能。AH=6的功能是當前頁上滾,入口參數(shù):AL=行數(shù),(從窗口底部
9、算起,空白的行數(shù));AL=0為整個窗口空白;(CH,CL)=滾動區(qū)域的左上角行、列;(DH,DL)=滾動區(qū)域的右下角的行、列;BH=空白頁的屬性。 以上是對INT 10 AH=6中斷的簡述,在本課題中用到清屏程序是為了使屏幕顯示更加美觀,同時改變BH的數(shù)值,便可改變字體顏色,程序中即讓AX=0600H,左上角的行列號為(CH,CL)=(0,0),右下角的行列號為DX=184FH。 其實在這里也可以用到AH=7的功能,它們的功能都是初始化屏幕或滾屏,AH=6為向上滾屏,AH=7為向下滾屏,其它功能一樣。 子程序CLRSCR流程圖如圖2-3所示。
10、 圖2-3 子程序CLRSCR流程圖 2.4子程序SETCURS 子程序SETCURS 的功能是設置光標位置。 在子程序SETCURS中,我用到了顯示器驅動程序(INT 10H)中AH=2的功能。AH=2的功能是設置光標位置,入口參數(shù):(DH,DL)=行、列;BH=頁號(圖形模式為0)。 為了使顯示的時間在DOS屏幕中的中間顯示,DX設置為0A24H,即DH=0AH,DL=24H,就是在0AH行,24H列。如果想改變時間顯示的位置,只要改變DX的數(shù)值就可以達到目的。由于在第零頁中定位,可用SUB BH,BH來完成此操作。 子程序SETCURS流程圖如
11、圖2-4所示。 圖2-4 子程序SETCURS流程圖 綜上所述,為系統(tǒng)顯示時鐘的幾個重要子程序,缺一不可,但實現(xiàn)這些功能其實還有很多其它中斷可以完成,在這里不一一介紹。 課程題目中設計通過點擊‘ESC’鍵退出程序,在這里簡單介紹一下,首先要用到INT 21 0BH號中斷,改中斷的功能是檢查標準輸入狀態(tài),出口參數(shù)AL=00無鍵入,AL=FF有鍵入。同時還要用到INT 21 08H號中斷,該中斷的功能是鍵盤輸入字符(無回應顯示),出口參數(shù):AL=輸出字符。在此設計中要求點擊‘ESC’鍵退出,先
12、在ASCII碼表中查詢ESC的ASCII值,查表得1BH,即AL=1BH。退出程序(EXIT)用的是INT 21 4CH號中斷,該中斷的功能是終止當前程序并返回調用程序,入口參數(shù):AL=退出碼。通過以上的幾個功能調用就可以實現(xiàn)點擊‘ESC’鍵退出程序的功能。 3 主程序流程圖 主程序流程圖如圖3-1所示。 圖3-1 主程序流程圖 主程序將幾個子程序有效的結合在一起,其中要注意的是最后一
13、步(點擊‘ESC’退出),因為如果設計不好循環(huán),會影響系統(tǒng)提取時間,導致時間停止不走動,綜上所述,便基本完成了設計要求。 4 調試過程 (1)編譯→匯編源文件,命名為徐聯(lián)杏.asm。 (2)asm將生成一個OBJ文件,如果有程序有錯誤,則提示不能生成OBJ文件,那么就要檢查源程序中的錯誤,并改正。 (3)點擊連接,然后點擊運行,即可顯示結果。結果如圖4-1所示。
14、 圖4-1 程序運行結果 (4)如果要退出程序,點擊‘ESC’鍵即可。 分析:調試屏幕上顯示的提示語與系統(tǒng)時間的位置都可通過前面介紹的內容來改變,點擊‘ESC’鍵退出也可改變,同時字體顏色也可選為自己喜歡的顏色。 5 編程時遇到的問題及解決方法 在課程設計中遇到的最大的困難是如何產生中斷,用什么形式的中斷實現(xiàn)功能,對中斷向量表的裝載還比較模糊,對中斷的初始化、具體設置、中斷返回還不是很清楚,程序設計一度陷入停滯狀態(tài),不知如何是好。我們又重新翻閱了周佩玲主編的《微機原理與接口技術》及網(wǎng)上的很多關于中斷的介紹與例題,重點研究了中斷過程,通過對這一內容的學習,我們終于對中斷有了詳細的認識,
15、在設計程序時也容易了很多,最后在設計退出程序的時候也遇到了一點困難,設計的程序可以點擊ESC鍵退出,但時間卻不走動了,但通過對程序的修改與調試,最后加入循環(huán)后便解決了這一問題。 6 心得體會 這次課程設計歷時兩周,從中發(fā)現(xiàn)了自己很多問題,看見自己的知識有很多漏洞,雖然做過微機原理實驗,但實際經(jīng)驗還是很缺乏。說到設計,很多人都有恐懼感,但我一聽見設計就很高興,當看到自己設計的東西在軟件上仿真成功的時候,就有一種成就感。 在這次的設計中,我感覺有同學們的幫助很重要,這次設計的時間雖然有些倉促,但是我們的熱情依然很高,在大量資料和老師的幫助下選定了方案,之前想的可能是用硬件來實現(xiàn),但后來聽老師
16、一講,知道原來是用純軟件來實現(xiàn),一開始一點頭緒都沒有,但查了一些資料后,心里就有些底了。其實在編程中,我們借鑒了很多現(xiàn)成的子程序,比如二進制數(shù)的轉換,這些子程序的設計是固定的,因此可以直接從指導資料中調用,至于設置光標的子程序,只需要修改幾個參數(shù)就可以,這大大方便了我們的設計,為我們節(jié)省了很多的時間。 平常上課都只是聽老師講講,覺的很多東西很簡單,但真正做起來,真的發(fā)現(xiàn)了很多問題,后來通過自己查資料和摸索解決了一些問題。剛開始的時候,做起來也比較得心應手,但是程序的原理與結構必須明白,這并不是為了應付答辯,而是如果只知道原理,那么萬一編程的時候有一點錯誤,就沒有辦法完成任務。 通過這次課程
17、設計,使我對系統(tǒng)時鐘顯示的程序有了更深一步的了解,對它的各個模塊都有所研究,把死板的課本知識變得生動有趣,激發(fā)了學習的積極性,加深了對理論知識的理解,以前對匯編語言的認識比較模糊,現(xiàn)在通過自己做實驗,基本了解了它的使用,培養(yǎng)了自己的實踐動手能力。 對于課程設計我總結了五點:首先它是一個對知識回顧的過程,而我們在復習中還能學到新的知識;第二是開拓了我們的思路,為了使我們的設計更簡單更完善,我們大家都開動了腦筋,在不斷的嘗試中獲得最終方案;第三是給了我們實踐的機會,我就是因為缺少實踐經(jīng)驗,以為在課堂上學的東西就可以解決問題,致使之后在編程中預到了很多困難;第四是給了我們創(chuàng)新的機會,老師讓我們大膽
18、的去創(chuàng)新,去嘗試,使我們有動力有信心去完成自己的想法;第五是使我感覺到了學無止境,真的是一山還比一山高,好的方案層出不窮,這使我在以后的學習中不會再只限于課本,要多查資料,多學習,才能完善自己。 通過這次設計,我想說,我真的付出很多,確實很辛苦,但我很開心 最后我認為大學應該多做一些這樣的課題,我相信我們會越做越好。 參考文獻 [1] 周佩玲,彭虎,傅忠謙.微機原理與接口技術.北京:電子工業(yè)出版社,2006 [2] 雷麗文,朱曉華,蔡征宇,繆均達.微機原理與接口技術.北京:電子工業(yè)出版社,1998 [3] 李文英,劉星,宋蘊新,李勤.微機原理與接口技術
19、.北京:清華大學出版社,2001 [4] 楊吉祥.微型計算機原理.西安:電子科技大學出版社,2001 [5] 仇玉章等.32位微型計算機原理與接口技術.北京:清華大學出版社,2000 附錄 系統(tǒng)時鐘顯示源程序: STACK SEGMENT STACK DW 200 DUP (?) STACK ENDS DATA SEGMENT SPACE DB 1000 DUP ( ) PATT
20、ERN DB 6 DUP ( ),02AH,26 DUP (02AH),02AH,6 DUP ( ) DB 6 DUP ( ),023H,26 DUP (20H),023H,6 DUP ( ) DB 6 DUP ( ),02AH,26 DUP (02AH),02AH,6 DUP ( ) DBUFFER DB 8 DUP (:),12 DUP ( ) DBUFFER1 DB 20 DUP ( ) STR
21、 DB 0DH,0AH, PLEASE INPUT TIME(T) OR QUIT(ESC): $ DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START : MOV AX,0001H ;設置顯示方式為40*25彩色文本方式 INT 10H MOV AX,DATA MOV DS,AX MOV ES,
22、AX MOV BP,OFFSET SPACE MOV DX,0B00H MOV CX,1000 MOV BX,0040H MOV AX,1300H INT 10H MOV BP,OFFSET PATTERN ;顯示矩形條 MOV DX,0B00H
23、 MOV CX,120 MOV BX,004EH MOV AX,1301H INT 10H LEA DX,STR ;顯示提示信息 MOV AH,9 INT 21H MOV AH,1 ;從鍵盤輸入單個字符 INT
24、 21H LOP: CALL SETCURS ;主程序,設置光標位置,輸出時間 MOV AH,2CH ;調用系統(tǒng)時間 INT 21H PUSH DX ;DX中的時間秒和百分秒入棧 MOV DL,CH MOV DH,0 CALL BIN10OUT
25、 ;調用二進制轉十進制輸出時間小時 MOV DL,: MOV AH,2 INT 21H MOV DL,CL MOV DH,0 CALL BIN10OUT ;輸出時間分鐘 MOV DL,: MOV AH,2 INT 21H POP DX ;秒和百分秒出棧 MOV DL,DH
26、MOV DH,0 CALL BIN10OUT ;輸出時間秒 ESC: MOV AH,0BH ;若輸入ESC,則退出程序 INT 21H CMP AL,0FFH JNZ LOP ;循環(huán)輸出每個當前時間 MOV AH,8 INT 21H CMP AL,1BH JE EXIT JMP
27、 ESC EXIT: MOV AH,4CH INT 21H CLRSCR PROC ;清屏子程序 PUSH AX PUSH BX MOV AX,0600H ;AL=0整個窗口空白 MOV BH,0FH SUB CX,CX
28、;左上角行號,列號 MOV DX,184FH ;右下角行號,列號 INT 10H POP BX POP AX RET CLRSCR ENDP SETCURS PROC ;設置光標位置 PUSH AX PUSH BX PUSH DX MOV AH,02H
29、 ;調用BIOS2號中斷 SUB BH,BH ;在第0頁中定位 MOV DX,0C0EH INT 10H POP DX POP BX POP AX RET SETCURS ENDP BIN10OUT PROC ;二進制轉十進制ASCUII碼輸出子程序
30、 PUSH DI PUSH DX PUSH CX PUSH AX MOV CX,0 LEA DI,DBUFFER1 ;去緩沖區(qū)首地址 BIN1: PUSH CX MOV AX,DX MOV DX,0 MOV CX,10 DIV CX ;AX內容除以DX內容,商在
31、AX,余數(shù)在DX XCHG AX,DX ;交換AX,DX的內容 ADD AL,30H ;余數(shù)加30H,入棧準備輸出 MOV [DI],AL INC DI POP CX INC CX ;累加每調用一次要輸出的位數(shù) CMP DX,0
32、 ;商和0比較 JNZ BIN1 ;不等于0轉BIN1 CMP CX,1 ;累加器和1比較 JNZ BIN2 ;不等于1轉BIN2 MOV AH,2 ;等于1位,先在改位前輸出0 M
33、OV DL,0 INT 21H BIN2: DEC DI ;等于0輸出十進制數(shù)的各位 MOV AL,[DI] CALL STDOUT LOOP BIN2 POP AX ;恢復現(xiàn)場 POP CX POP DX POP DI RET BIN10OUT ENDP STDOUT PR
34、OC ;標準輸出子程序 PUSH DX MOV DL,AL MOV AH,2 INT 21H POP DX RET STDOUT ENDP CODE ENDS END START 本科生微機課程設計成績評定表 姓 名 徐聯(lián)杏 性 別 女 專業(yè)、班級 自動化0707 課程設計題目: 鐘
35、表顯示 課程設計答辯或質疑記錄: 成績評定依據(jù): 序號 評定項目 評分成績 1 選題合理、目的明確(10分) 2 設計方案正確,具有可行性、創(chuàng)新性(20分) 3 設計結果(例如:硬件成果、軟件程序)(20分) 4 態(tài)度認真、學習刻苦、遵守紀律(15分) 5 設計報告的規(guī)范化、參考文獻充分(不少于5篇)(10分) 6 答辯(25分) 總分 最終評定成績(以優(yōu)、良、中、及格、不及格評定) 指導教師簽字: 年 月 日 16
- 溫馨提示:
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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。