資源描述:
《打字計(jì)時(shí)匯編注釋版》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、課程設(shè)計(jì)說(shuō)明書(shū)課程設(shè)計(jì)名稱(chēng):打字練習(xí)課程設(shè)計(jì)題目:匯編語(yǔ)言、微機(jī)原理及接口技術(shù)學(xué)院名稱(chēng):信息工程學(xué)院專(zhuān)業(yè):自動(dòng)化班級(jí):學(xué)號(hào):姓名:評(píng)分:教師:2011年12月10日由每位學(xué)生填寫(xiě)、由任教教師保存待查16正文:摘要在PC系統(tǒng)中,駐留的ROM中有8KB的BIOS。它實(shí)現(xiàn)對(duì)系統(tǒng)中種種常用設(shè)備的輸入輸出操作的管理。其中的16H中斷調(diào)用即為鍵盤(pán)輸入輸出中斷調(diào)用,實(shí)現(xiàn)從鍵盤(pán)輸入字符到AL寄存器、讀鍵盤(pán)緩沖區(qū)字符到AL寄存器、讀取特殊功能鍵的狀態(tài)等功能。本程序是一個(gè)在鍵盤(pán)上練習(xí)打字并能統(tǒng)計(jì)時(shí)間的程序,在緩沖區(qū)中預(yù)放了一些字母,運(yùn)行時(shí),可按照屏幕上顯示的字母輸入練習(xí),輸入完一段按回車(chē)鍵后,
2、可顯示出練習(xí)輸入的時(shí)間。通過(guò)它練習(xí)英文文章打字練習(xí),并能夠統(tǒng)計(jì)時(shí)間。程序運(yùn)行時(shí),使用自編的中斷向量處理程序。程序退出時(shí),恢復(fù)中斷向量。1、課程設(shè)計(jì)題目描述和要求1.1問(wèn)題提出及功能要求利用匯編語(yǔ)言設(shè)計(jì)程序?qū)崿F(xiàn)對(duì)一篇英文文章進(jìn)行打字練習(xí),并計(jì)算完成時(shí)間。1.2運(yùn)行環(huán)境Windows7操作系統(tǒng)、文本編輯器使用EDIT或NOTEPAD,匯編程序使用MASM.EXE,連接程序使用LINK.EXE,調(diào)試程序使用DEBUG.EXE。1.3本課題涉及的知識(shí)點(diǎn)定義數(shù)據(jù)段,設(shè)置主要參數(shù):設(shè)置9號(hào)中斷向量地址,9號(hào)中斷向量首址,1C向量地址;定義時(shí)間參數(shù)為秒、分、小時(shí)。在代碼段,調(diào)用中斷825
3、9、鍵盤(pán)中斷、時(shí)鐘中斷、并設(shè)置打字計(jì)時(shí)文件程序順序。整個(gè)程序使用序分化各子功能。2、算法設(shè)計(jì)162.1設(shè)計(jì)思路在鍵盤(pán)上練習(xí)的打字英文文章及其地址表、計(jì)時(shí)單元等預(yù)先放在DATA數(shù)據(jù)段中,自編的中斷程序kbint檢測(cè)按鍵時(shí)產(chǎn)生的中斷,并把按鍵的掃描碼轉(zhuǎn)換為ASCII碼存入緩存區(qū)buffer,這個(gè)工作和ROM09類(lèi)型的鍵盤(pán)中斷例行程序所完成的工作大致相同,只是在解釋各個(gè)鍵時(shí)作了簡(jiǎn)化,即只解釋了可顯示字符,如英文字母、數(shù)字及一些符號(hào);其他特殊鍵,如組合鍵、雙態(tài)鍵、功能鍵等都未作解釋?zhuān)蛔鳛樽址a0來(lái)處理。在主程序部分保存原09類(lèi)型的中斷向量,設(shè)置自編例行程序的中斷向量,設(shè)置中斷屏蔽
4、位,然后開(kāi)中斷。當(dāng)鍵盤(pán)中斷處理后,主程序中安排指令讀取緩沖區(qū)中的字符并顯示在屏幕上。在主程序的末尾,利用DOS功能恢復(fù)原09類(lèi)型的中斷向量,然后返回DOS。在顯示鍵入的字符時(shí),還應(yīng)判斷字符是否為回車(chē)(0DH)。如為回車(chē)符,說(shuō)明本文輸入完畢,此時(shí)調(diào)用顯示時(shí)間的子程序顯示出打字時(shí)間。如果所存放的例當(dāng)鍵入某一功能鍵(如Esc鍵、Shift鍵等)退出程序,結(jié)束打字練習(xí)。打字時(shí)間統(tǒng)計(jì)利用自定時(shí)器中斷處理程序clint來(lái)完成。在此中斷例行程序中,定時(shí)器中斷的次數(shù)記錄在計(jì)數(shù)單元count中,當(dāng)count計(jì)數(shù)值為18時(shí),sec計(jì)數(shù)單元加1,當(dāng)sec計(jì)數(shù)值達(dá)到60時(shí),min計(jì)數(shù)單元加1。顯示
5、時(shí)間的子程序disptime分別將各遍野單元的二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù),并以min:sec:msec的形式顯示出來(lái)。其中msec是由count記數(shù)值轉(zhuǎn)換成的:count×1秒/18.2=count×55ms2.2程序流程圖16顯示菜單信息獲取鍵盤(pán)信息保存原中斷向量09H到自設(shè)的單元中設(shè)置自編處理程序的中斷向量09H保存原中斷向量1CH到自設(shè)的單元中設(shè)置自編處理程序的中斷向量1CH設(shè)置允許鍵盤(pán)和定時(shí)器中斷設(shè)置顯示方式為80×25顯示提示信息在屏幕上顯示英文文章初使化變量count、sec、min、hours開(kāi)始中斷調(diào)用kbget檢測(cè)并等待鍵盤(pán)中斷的子程序kbflag=80h?(
6、鍵盤(pán)輸入的是控制鍵或功能鍵嗎)調(diào)用dispchar顯示該字符鍵入的字符為回車(chē)符0DHAL←換行符(0AH)調(diào)用dispchar顯示回車(chē)換行符字符調(diào)用disptime顯示打字時(shí)間顯示回車(chē)換行符字符一段英文文章練習(xí)完嗎?開(kāi)始恢復(fù)原中斷向量1CH、09H,返回操作系統(tǒng)結(jié)束NYNYY163、代碼設(shè)計(jì)3.1功能模塊說(shuō)明3.1.1定義數(shù)據(jù)段,設(shè)置主要參數(shù):緩沖區(qū):BUFFER,BUFPT1,BUFPT23.1.2代碼段調(diào)用中斷8259,鍵盤(pán)中斷,時(shí)鐘中斷,設(shè)置打字計(jì)時(shí)文件程序順序3.1.3使用子程序分化各子功能DISPTIMEPROCNEARBINDECPROCNEAR;將二進(jìn)制轉(zhuǎn)化為
7、十進(jìn)制顯示時(shí)間DECDIVPROCNEAR;轉(zhuǎn)化成字符顯示DISPCHARPROCNEARKBGETPROCNEAR;獲取鍵盤(pán)鍵入的信息KBINTPROCNEAR;查表查到相應(yīng)的字符RESET09PROC;重新設(shè)置09號(hào)中斷RESET1CPROC;重新設(shè)置1c功能RESETPROC;回復(fù)1C與093.2源程序STACKSEGMENTPARASTACK'STACK'DB256DUP(0)TOPLABELWORDSTACKENDSDATASEGMENTPARAPUBLIC'DATA'BUFFERDB16HDUP(0);