微機原理課程設計打字計時練習_第1頁
微機原理課程設計打字計時練習_第2頁
微機原理課程設計打字計時練習_第3頁
微機原理課程設計打字計時練習_第4頁
微機原理課程設計打字計時練習_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、課程設計任務書學生姓名: 專業(yè)班級: 電氣0805班 指導教師: 工作單位: 自動化學院 題 目: 打字計時練習 初始條件:掌握匯編語言程序設計方法,所設計的程序運行后可通過鍵盤控制,滿足系統(tǒng)功能,并實現(xiàn)該系統(tǒng)設計方案。在dos,windows,匯編軟件環(huán)境下運行。要求完成的主要任務: (包括課程設計工作量及其技術(shù)要求,以及說明書撰寫等具體要求)1. 程序運行后,鍵盤輸入不同進行不同處理:a) enter表示開始,esc表示退出,space表示重新開始,打字過程中的按enter表示暫停并顯示時間,再按enter表結(jié)束暫停b)統(tǒng)計打字的正確率,在打字練習時,如果輸入正確,則字符為綠色,輸入錯誤則

2、為紅色。2. 課程設計說明書應包括:a)設計任務及要求b)方案比較及認證c)程序設計基本思想,程序流程圖,部分源程序及注解d)調(diào)試記錄及結(jié)果分析e)參考資料f)附錄:全部源程序清單g)總結(jié)時間安排:2011年元月07日-元月09日 選題、查閱資料和方案設計2011年元月10日-元月14日 編程2011年元月15日-元月16日 調(diào)試程序,改進與提高2011年元月17日 撰寫課程設計報告(有調(diào)試過程及結(jié)果的截屏)2011年元月18日 答辯和交課程設計報告指導教師簽名: 2011 年 元 月 6 日系主任(或責任教師)簽名: 年 月 日摘 要在ibm-pc系統(tǒng)中,駐留的rom中有8kb的bios。它

3、實現(xiàn)對系統(tǒng)中種種常用設備的輸入輸出操作的管理。其中的16h中斷調(diào)用即為鍵盤輸入輸出中斷調(diào)用,實現(xiàn)從鍵盤輸入字符到al寄存器、讀鍵盤緩沖區(qū)字符到al寄存器、讀取特殊功能鍵的狀態(tài)等功能。微機原理及接口技術(shù)是計算機和自動化電氣等專業(yè)重要的基礎專業(yè)課程之一,不但有較高的理論水平,而且還要求能夠?qū)⒗碚搼糜趯嵺`,提高動手能力。本次課程設計的主要目的是提高實踐能力,包括機器語言的使用,與8086配套的芯片的端口編程手段,rom及bios所能提供的內(nèi)部程序的功能和調(diào)用方法,以及中斷處理程序和設備驅(qū)動程序的設計方法。本程序是一個在鍵盤上練習打字并能統(tǒng)計時間的程序,在緩沖區(qū)中預放了一些字母,運行時,可按照屏幕上

4、顯示的字母輸入練習,每輸入完一行按回車鍵后,可顯示出練習輸入的時間。通過它練習英文打字練習,并能夠統(tǒng)計時間。程序運行時,使用自編的中斷向量處理程序。 目 錄1 方案比較及認證12 打字計時練習程序設計過程 2 21 程序設計基本思想 222 程序流程圖32. 3 部分原程序及注解 43 調(diào)用記錄及結(jié)果分析 64 總結(jié)體會8參考文獻9附錄:打字計時練習程序10打字計時練習設計一個打字計時練習的程序,在緩沖區(qū)中預放了一些字母,運行時,可按照屏幕上顯示的字母輸入練習,每輸入完一行按回車鍵后,可顯示出練習輸入的時間.1 方案比較及認證方案一:采用調(diào)用時間中斷向量來記錄打字練習的時間,在輸入enter鍵

5、時,顯示完成當前句子所用的時間。在顯示鍵入的字符時,還應判斷是否為回車符,說明一個句子輸入完畢,此時調(diào)用顯示時間子程序顯示出打字時間,然后順序顯示下一個語句。如果所放的例句都已顯示完畢,則再次從第一個例句開始顯示,直到鍵入某一功能鍵退出程序,結(jié)束打字練習。方案二:在計時的基礎上,采用光標定位程序來實現(xiàn)緩沖區(qū)數(shù)據(jù)和輸出數(shù)據(jù)的比較,從而在顯示打字時間的同時顯示的正確率。在顯示鍵入的字符時,先判斷是否是相應的功能鍵,如是則完成相應的功能,不是功能鍵,則和上一行相應位置的字符比較,采用不同的子程序分別統(tǒng)計正確個數(shù),和總打字數(shù),并用不同的顏色顯示輸入正確的字符和不正確的字符。綜合考慮,第二種方案功能比較

6、完善,故采用第二種方案進行設計。2 打字計時練習程序設計過程2.1程序設計基本思想在鍵盤上練習的打字例句及其地址表等預先放在data數(shù)據(jù)段中。在宏定義部分定義光標定位程序movto,字符輸出程序ouput等,以便在程序運行時,能夠準備定位光標到指定位置,以便進行比較,同時能夠便捷地將打字例句顯示在鍵面上。程序運行時,鍵面上出現(xiàn)提示,按anykey開始打字,按esc退出。輸入esc則出現(xiàn)提示,按space重新開始,按esc退出界面。如輸入space則將字符統(tǒng)計和計時都清零并重新開始計時,光標定位至打字入口。如輸入esc則退出打字界面。如開始打字,則調(diào)用output將緩沖區(qū)的打字例句輸出到界面上,

7、然后將光標定位到打字部位,然取輸入的字符和enter過行比較,如是enter,則打字暫停,并顯示當前打字所用的時間,再按enter則繼續(xù)打字。否則和上一行的相應位置的字過行比較,如果正確,則字符設為綠色;錯誤,則顯示字符為紅色,并用相應的變量記錄打字的正確個數(shù)和輸入的總字符數(shù),并顯示在界面上。設置一行為47個字符,滿47個后自動換行。如果所存放的例句都已練習完畢,則相當于輸入esc,界面上出現(xiàn)提示,按anykey開始打字,按esc退出。開始判斷是否是esc鍵顯示預設的句子讀取鍵入字符,存有輸入字符數(shù)的寄存器加1判斷鍵入字符是否與輸出序列一致存有正確數(shù)的寄存器加1判斷本段字符是否 輸入完畢結(jié)束n

8、yny2.2程序流程圖2.3部分源程序及注解光標定位子程序:print macro p1,p2 ;輸出“*”到光標位置顯示字符及其屬性push axpush bxpush cxmov ah, 09hmov al, p1mov bh, 0 ;bh=顯示頁mov bl, p2mov cx, 1 ; cx=字符重復總次數(shù)int 10hpop cxpop bxpop axendm在程序中,此宏定義程序用來清屏。計時子程序time procpush axpush dxmain:mov ah, 2int 1ah ;讀實時鐘cmp dh, secontjne getjmp nextget:開始dh=0?秒c

9、ount3count3+1分count4count4+1count30count3=60?count4=60?時count5count55+1count40結(jié)束nyyynn mov secont,dhinc count3mov ax, count3cmp ax, 60jne next mov count3, 0inc count4mov ax, count4cmp ax, 60jne nextmov count4, 0inc count5next:pop dxpop axrettimeendp3調(diào)試記錄及結(jié)果分析在微機原理實驗平臺開發(fā)環(huán)境中編輯程序,經(jīng)匯編,連接,和調(diào)試后,結(jié)果如下按照提示,按

10、下enter后,出現(xiàn)如下界面練習打字過程顯示如下圖所示按下esc后的界面如下總結(jié)體會到這一刻為止,微機課設就接近尾聲了,有興奮,也有惶恐,興奮任務終于完成了,同時也很擔心,自己還站在匯編語言的門口,只是一個初學者。在課程設計的過程中,深刻地覺得匯編語言真的是很神奇,不過這也從側(cè)面說明自己對匯編語言了解的不多。我一直覺得微機原理與接口技術(shù)是一門佶屈聱牙的課程,然而通過兩周的翻閱資料和摸索,我發(fā)現(xiàn)它并不是那么難,任何一個計算機系統(tǒng)都是一個復雜的整體,學習計算機原理是要涉及到整體的每一部分。只要弄清楚各部分原理,就能較好的理解計算機的工作原理,從而通過編程來達到自己的目的。 由于身體原因,這門課的理

11、論課我只上了一半,所以剛開始著手課程設計的時候,我什么也看不懂,經(jīng)過很多次的嘗試,終于能夠看懂程序,并對程序的功能進行改進??粗约旱脑O想一點一點的變成匯編語言并運行出來時,心里真的很高興,同時也更加投入到程序的編輯和完善。但是自己掌握的東西畢竟有限,最后還是不能完全實現(xiàn)自己的設想,所以,在以后的生活中,我們要加強對匯編語言的學習。總之,這次課程設計讓人受益匪淺,使我我更加深入地理解了微機原理課程上講到的各種芯片的功能,以及中斷調(diào)用,同時加深了對于主要芯片的應用的認識,同時也更加清楚了匯編程序的編寫過程和運行過程。這不僅加深和鞏固了我們的課本知識,而且增強了我們自己動腦,自己動手的能力。參考文

12、獻1樓順天.微機原理與接口技術(shù)m. 北京:科學出版社,20062周明德.微機原理與接口技術(shù). 北京:人民郵電出版社,20093馬維華.微機原理與接口技術(shù). 北京:科學出版社,20054馬瑞芳.王會燃等.微機原理與接口技術(shù)要點與解題. 西安:西安交通大學出版社,20065牟琦.聶建平等.微機原理與接口技術(shù). 北京:清華大學出版社,2006附錄:打字計時練習程序lf equ 0ahcr equ 0dh ;宏定義部分print macro p1,p2 ;輸出“*”光標位置顯示字符及其屬性 bh=顯示頁,bl=屬性,al=字符,cx=字符重復總次數(shù)push axpush bxpush cxmov ah

13、, 09hmov al, p1mov bh, 0 mov bl, p2mov cx, 1int 10hpop cxpop bxpop axendmmovto macro p1,p2 ;移動光標到指定位置push axpush dxmov ah, 2mov dh, p1 ;行mov dl, p2 ;列int 10hpop dxpop axendmoutput macro msg,p1,p2,p3 ;輸出字符串local differ, exitofpush axpush bxpush cxpush dxpush dimov dh, p2mov dl, p3mov bh, 0 mov bl, p1

14、 mov di, 0differ:mov ah, 02hint 10hmov cl, msg dicmp cl, $je exitof mov ah, 9 mov al, msg di mov cx, 1 int 10h inc di inc dl jmp differexitof: pop di pop dx pop cx pop bx pop ax endm data segment ;顯示窗口內(nèi)容msg1 db press any key to start!$ msg2 db press esc to end! $ msg3 db the passed time:$ msg4 db th

15、e rate of correct:$ msg5 db press backspace torestart!$ msg6 db press esc to out! $msg7 db abcdefg hijklmn opqrst uvwxyz now you see,i can$msg8 db every oncein a while i awaken to reality that00$msg9 db i am all i have got.it is far more mpressive.$msg10 db when the others discover your good.believe

16、 it o$secont db 0 count0 dw 0 ;為了記錄正確的字符數(shù)count1 dw 0 ;字符總個數(shù)count2 dw 0 ;為了到行尾時自動翻行的控制count3 dw 0;秒count4 dw 0;分count5 dw 0;時count6 db 2data endsstack segment dw 100 dup(?)stack endscode segment assume cs:code, ss:stack, ds:data;*start proc far push ds mov ax, 0 push ax mov ax, data mov ds, ax mov es

17、, ax call shuchu_tishi ;輸出提示信息lz:mov ah, 1 ;帶回顯的鍵盤輸入int 21hmov bl, al ;al=輸入的字符cmp al,1bh ;判斷是否要退出打字練習程序 je tzd_1 mov dh,2 mov dl,1jmp loop1tzd_1: ;跳轉(zhuǎn)點到“exit”jmp tzd_2 loop1:movto dh,dl print ,0 inc dl cmp dl,69 jb loop1 開始打字練習*dazirukou:mov dl, 1 ;顯示正確率*dazi1:push dx mov dh, 1mov dl, 1output msg7,1

18、0,dh,dladd dh,3output msg8,10,dh,dladd dh,3output msg9,10,dh,dladd dh,3output msg10,10,dh,dlmov ah, 0int 1ah ;讀時鐘practise: mov dh, 22mov dl, 0output msg4, 9, dh, dlmov dh, 22mov dl,25movto dh, dlmov ax, count0call bindecmov ah, 2mov dl, /int 21hmov ax, count1 call bindecpop dxjmp press;*press: call

19、time ;調(diào)用時間 movto dh, dlmov ah, 01h ;讀緩沖區(qū)字符int 16hjne key ;測試有無鍵盤按下jmp presskey:mov ah, 00int 16hcmp al,cr ;如果是回車就暫停并顯示當前時間je pausejmp isescpause: ;輸入是回車就結(jié)束暫停 call next4push dxmov ah, 06hmov dl, 0ffhint 21hpop dxcmp al, crjne pause mov dx,count2 inc dl mov dh,count6 movto dh,dlisesc: cmp al, 1bh je t

20、zd_2 jmp isequaltzd_dazi2:jmp dazi1tzd_2: jmp skip1tzd_dazi1: ;跳轉(zhuǎn)點,到“打字”jmp tzd_dazi2isequal: mov bl, alcmp al, 19hjb wrongcmp al, 7fhja wronginc count2inc count1 ;是上面的字符,則count1加1sub dh, 1movto dh, dlmov ah, 8 ;讀得光標處字符送到al中int 10hcmp al, blje equalmov al, blmov bl, 12jmp unequalwrong:tzd_dazi0:jmp

21、tzd_dazi1equal:inc count0mov al, blmov bl, 10unequal:add dh ,1movto dh, dlmov ah, 9mov cx, 1int 10hinc dlmov ax, count2cmp al, 47jb tzd_dazi0mov ah, count6cmp ah, 9ja skip1sub ax, 47mov count2, axadd count6,3add dh,3mov dl,1movto dh,dlreflesh: ;滿一行后自動刷新(47個字符)mov ah, 7int 21hpractise1: jmp loop1prac

22、tise0:jmp practiseskip1: mov dh, 16 mov dl, 28 output msg5, 10, dh, dl add dh, 2 output msg6, 10, dh, dl jmp restartpractice:jmp lzrestart: mov ah, 00 int 16h ;從鍵盤讀字符 cmp al, 20hmov secont, 0 mov count0, 0 mov count1, 0 mov count2, 0 mov count3, 0 mov count4, 0 mov count5, 0 mov count6, 2 je practice cmp al, 1bh je exitnone:nop jmp restartexit: mov ah, 0mov al, 3int 10h mov ah, 4ch int 21h retstart endp;輸出提示信息*shuchu_tishi proc add dh, 15 add dl, 5 output msg1, 5, dh, dl add dh, 2 add dl, 2 out

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論