匯編語(yǔ)言程序設(shè)計(jì)打字練習(xí)程序(共23頁(yè))_第1頁(yè)
匯編語(yǔ)言程序設(shè)計(jì)打字練習(xí)程序(共23頁(yè))_第2頁(yè)
匯編語(yǔ)言程序設(shè)計(jì)打字練習(xí)程序(共23頁(yè))_第3頁(yè)
匯編語(yǔ)言程序設(shè)計(jì)打字練習(xí)程序(共23頁(yè))_第4頁(yè)
匯編語(yǔ)言程序設(shè)計(jì)打字練習(xí)程序(共23頁(yè))_第5頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上 匯編語(yǔ)言課程設(shè)計(jì)報(bào)告( 2014 - 2015 年度第 1 學(xué)期)課題名稱: 打字計(jì)時(shí)練習(xí)程序?qū)I(yè)xxx學(xué)生姓名xxxx班級(jí)xxx學(xué)號(hào)xxxx指導(dǎo)教師xxx完成日期xxxxx 目錄1.設(shè)計(jì)目的與設(shè)計(jì)要求2.程序流程圖62.1主程序流程圖62.2時(shí)間計(jì)算流程圖72.3正確率計(jì)算流程圖83.設(shè)計(jì)關(guān)鍵問(wèn)題103.1輸入輸出103.1.1 輸出顯示信息103.1.2 輸入十個(gè)字符123.2 輸入字符串所用時(shí)間計(jì)算123.3 正確率判斷144.調(diào)試運(yùn)行結(jié)果分析15參考文獻(xiàn)21附錄二 打字計(jì)時(shí)練習(xí)程序24一.設(shè)計(jì)目的 本課程設(shè)計(jì)是在學(xué)完教學(xué)大綱規(guī)定的全部?jī)?nèi)容、完成所有實(shí)踐環(huán)節(jié)的

2、基礎(chǔ)上,旨在深化學(xué)生學(xué)習(xí)的匯編語(yǔ)言課程基本知識(shí),進(jìn)一步掌握匯編語(yǔ)言程序設(shè)計(jì)方法,提高分析問(wèn)題,解決問(wèn)題的綜合應(yīng)用能力。設(shè)計(jì)要求在緩沖區(qū)預(yù)放了一些字母,運(yùn)行時(shí),可按照屏幕上顯示的字母輸入練習(xí),每輸入完一行按回車鍵后,可顯示出練習(xí)輸入的時(shí)間。設(shè)計(jì)思路1. 系統(tǒng)總體分析在緩存區(qū)預(yù)放了一些字母,運(yùn)行時(shí)可按照屏幕上顯示的字母輸入練習(xí),每輸入完一行按回車鍵后,可顯示出練習(xí)輸入的時(shí)間。當(dāng)一個(gè)句子分析完后(回車鍵作為結(jié)束符),屏幕上以min:sec:msec的格式顯示出鍵入字符的時(shí)間。在每次打字之前,屏幕上先顯示一個(gè)例句,然后打字員按照例句,將句中字符通過(guò)鍵盤輸入。這個(gè)過(guò)程共進(jìn)行五次,當(dāng)鍵入一個(gè)enter鍵時(shí)

3、,推出打字計(jì)時(shí)練習(xí)程序。在鍵盤上聯(lián)系的打字例句及其他地址表,計(jì)時(shí)單位等預(yù)存在DATA數(shù)據(jù)段中。自編的中斷程序Kbint檢測(cè)按鍵時(shí)產(chǎn)生的中斷,并將按鍵掃描碼轉(zhuǎn)換為ASCII碼存入緩存區(qū)BUFFER(內(nèi)存中一個(gè)區(qū)域),這個(gè)工作和EOM09類型的鍵盤中斷例行程序所完成的工作大致相同,只是在解釋各個(gè)鍵時(shí)作了簡(jiǎn)化,即只解釋了可顯示字符(如英文小寫字母,數(shù)字及一些字符),其他特殊鍵(如組合鍵,雙態(tài)鍵,功能鍵),都未做解釋,只做字符碼0來(lái)處理。在主程序部分保存原有09類型的中斷向量,設(shè)置自編例行程序的中斷向量,設(shè)置中斷屏蔽位,然后在開斷。當(dāng)鍵盤中斷處理后,主程序安排指令讀取緩存區(qū)中的字符并顯示在屏幕上。在主

4、程序的末尾,利用DOS功能恢復(fù)原09類型的中斷向量,然后返回DOS。在顯示鍵入的字符時(shí),還應(yīng)判斷字符是否為回車符。說(shuō)明一個(gè)句子輸入完畢,此時(shí)調(diào)用顯示時(shí)間的子程序顯示打字時(shí)間,然后順序顯示一個(gè)例句。如果所存放的例句都已顯示完畢,則再次從第一個(gè)例句開始顯示,直至鍵入某個(gè)功能(如ESC鍵等)退出程序,結(jié)束打字練習(xí)。打字時(shí)間統(tǒng)計(jì)利用自編的計(jì)時(shí)器中斷處理程序Clint來(lái)完成。每輸入一個(gè)例句,計(jì)時(shí)一次。在此中斷例行程序中,定時(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,因?yàn)檩斎胍粋€(gè)句子無(wú)論如何不會(huì)達(dá)到小時(shí)級(jí),所

5、以hours計(jì)數(shù)值得調(diào)整判斷,實(shí)際上只起到退出計(jì)時(shí)器的作用。加入一個(gè)顯示菜單程序,使得原來(lái)的程序具有觀賞性;顯示時(shí)間的子程序disptime分別將各計(jì)時(shí)單位的二進(jìn)制數(shù)轉(zhuǎn)化為十進(jìn)制,并以min:sec:msec的形式出來(lái)。其中msec是由count中的計(jì)數(shù)值轉(zhuǎn)化成的。Count*1s/18.2=count*55ms 此式中,18.2是計(jì)算機(jī)系統(tǒng)中產(chǎn)生的一個(gè)中斷,每秒18.2次。 2 主模塊框圖 程序的核心模塊是打字計(jì)時(shí),通過(guò)顯示的例句進(jìn)行打字練習(xí),最后顯示打字時(shí)間,主題流程圖如下:a. 建立匯編源程序通過(guò) b.編譯為目標(biāo)文件d.連接執(zhí)行文件c.不通過(guò),重新修改(語(yǔ)句錯(cuò)誤) e.運(yùn)行 f.不正確,

6、用調(diào)試工具調(diào)試,重新修改(邏輯錯(cuò)誤) g.正確完成專心-專注-專業(yè)2程序流程圖2.1主程序流程圖、開始定義堆棧段、數(shù)據(jù)段顯示提示信息顯示addresssi例句讀取系統(tǒng)時(shí)間并保存輸入字符串,存在buff區(qū)mov si,0Si+2Si<5?再次讀取系統(tǒng)時(shí)間計(jì)算所用時(shí)間,調(diào)用時(shí)間函數(shù),并顯示調(diào)用正確率計(jì)算函數(shù)正確率為10?結(jié)束顯示正確率輸入的是1? 圖1 主程序流程圖主程序的流程圖如圖1所示:說(shuō)明:首先定義堆棧段,數(shù)據(jù)段,代碼段等,初始化。顯示提示信息提示打字練字的規(guī)則,說(shuō)明如何開始,如何退出等。顯示出字符串后,開始讀取系統(tǒng)時(shí)間并保存。然后輸入字符串存到指定的緩沖區(qū)。輸入結(jié)束后,再次讀取系統(tǒng)時(shí)

7、間,并由兩次所讀取的時(shí)間計(jì)算出輸入字符串所用的時(shí)間并顯示。調(diào)用正確率計(jì)算函數(shù),并顯示在屏幕上。看輸入字符串對(duì)應(yīng)位正確的個(gè)數(shù)是不是十個(gè),如果是十個(gè),則繼續(xù)往下,看輸入的是不是退出鍵1,如果是,則退出。如果不是,則繼續(xù)下一串字符的練習(xí)。如果輸入正確的個(gè)數(shù)不是十個(gè),則返回繼續(xù)該字符串的練習(xí),指導(dǎo)最后輸入的正確個(gè)數(shù)是十個(gè)。2.2時(shí)間計(jì)算流程圖計(jì)算時(shí)間的流程圖如圖3所示:說(shuō)明:第一次讀取系統(tǒng)時(shí)間后,分和秒分別存在了second和minutes里,第二次讀取系統(tǒng)時(shí)間后,比較DH里的內(nèi)容和second里的內(nèi)容,比較結(jié)果是second里的內(nèi)容比較小,則不用向分借位,直接進(jìn)行減法運(yùn)算,并把計(jì)算結(jié)果轉(zhuǎn)換成ASCI

8、I碼并在屏幕上顯示。如果比較的結(jié)果是second里的內(nèi)容是比較大,則進(jìn)行減法運(yùn)算時(shí),要向分借位,所以,將DH寄存器的內(nèi)容加上60,再與second里的內(nèi)容進(jìn)行減法運(yùn)算,最后把運(yùn)算結(jié)果轉(zhuǎn)化成ASCII碼,并顯示在屏幕上。DOS的2CH號(hào)調(diào)用讀取系統(tǒng)時(shí)間將分和秒分別存在second和minute中DOS的2CH號(hào)調(diào)用讀取系統(tǒng)時(shí)間SF=1CMP DH,secondDH寄存器內(nèi)容加60寄存器DH內(nèi)容second內(nèi)容計(jì)算結(jié)果轉(zhuǎn)化稱ASCII碼并輸出在屏幕上圖3 時(shí)間計(jì)算流程圖2.3正確率計(jì)算流程圖正確率顯示函數(shù)的流程圖如圖4所示:說(shuō)明:調(diào)用爭(zhēng)取率判斷子程序,首先保護(hù)現(xiàn)場(chǎng),BX指向字符串ADDRESSSI

9、首地址,BX+2,指向第一個(gè)要顯示的字母,DI指向輸入緩沖區(qū)的首地址,CX寄存器存入十,控制循環(huán)次數(shù)。比較BXHE DI里的內(nèi)容,即判斷顯示的和輸入的字母是否相同。如果相同,計(jì)數(shù)寄存器AL內(nèi)容則加一,BX加一,DI加一,繼續(xù)下次比較,直到十次循環(huán)結(jié)束。如果不相同,則計(jì)數(shù)寄存器AL內(nèi)容不變,BX加一,DI加一,繼續(xù)下一次循環(huán),知道十次循環(huán)結(jié)束。當(dāng)十次循環(huán)結(jié)束后,即字符串輸入結(jié)束后,寄存器AL里的內(nèi)容就是輸入正確的個(gè)數(shù),AL高四位是輸入正確數(shù)的十位,低四位是輸入正確數(shù)的個(gè)位,將十位和個(gè)位分別轉(zhuǎn)化成ASCII碼,并將其存入字符串中,調(diào)用DOS的9號(hào)功能輸出字符串,輸出的就是屏幕顯示的字符串和輸入的十

10、位字符串對(duì)應(yīng)位相同的個(gè)數(shù),然后恢復(fù)現(xiàn)場(chǎng)。每調(diào)用一次正確率判斷函數(shù),SI加二,即第一次調(diào)用該子程序屏幕上顯示的是第一組字符串,第二次調(diào)用,當(dāng)SI大于5時(shí),就退出程序。保護(hù)現(xiàn)場(chǎng)BX指向ADDRESSSID 首地址DI指向輸入緩沖區(qū)的首地址BX+2BX的內(nèi)容送入DLCMP DL,DIZF=1?AL+1BX+1,DI+1CX=0?AX高八位置零AX除以10商轉(zhuǎn)化稱ASCII碼并送入寄存器BH中余數(shù)轉(zhuǎn)化稱ASCII碼并送入寄存器BL中恢復(fù)現(xiàn)場(chǎng)返回圖4 正確率顯示函數(shù)的流程圖3.設(shè)計(jì)關(guān)鍵問(wèn)題在打字練習(xí)匯編語(yǔ)言程序設(shè)計(jì)中,主要有三個(gè)問(wèn)題,分別為輸入和輸出問(wèn)題、輸入字符串時(shí)間的計(jì)算、正確率的判斷。3.1輸入輸

11、出3.1.1 輸出顯示信息輸出字符串,主要是利用DOS的9號(hào)功能調(diào)用。當(dāng)開始打字練習(xí)時(shí),要輸出提示信息說(shuō)明打字練習(xí)時(shí)的規(guī)則,其程序?yàn)椋?message db 0ah,0dh, 'Welcome to WUHAN UUIVERSITY, Please type 10 letters, and you must input 10 right words, then press any key to practice the next one ' db 0ah,0dh, 'if you want to quit, press 1 ',0ah,0dh,'$

12、9; lea dx,message mov ah,9int 21h顯示信息輸出后,要顯示預(yù)先存在緩沖區(qū)的三組字符串,顯示字符串用DOS9號(hào)調(diào)用,其程序?yàn)椋?str1 db 0ah,0dh,'wuhanunive' db 0dh,0ah,'$' str2 db 0ah,0dh,'hubeichina' db 0ah,0dh,'$' str3 db 0ah,0dh,'qmpzwmoxid' db 0ah,0dh,'$' address dw str1,str2,str3mov dx,offset add

13、resssimov ah,9int 21h 只有當(dāng)輸入的字符串中的十個(gè)字符全部正確時(shí),則顯示進(jìn)入下一字符串的練習(xí)并輸出鼓勵(lì)語(yǔ),其程序?yàn)椋?et db 0dh,0ah,'Congratulations, Well done!',0ah,0dh,'$' mov dx,offset etmov ah,09hint 21h當(dāng)要顯示輸入字符串所用的時(shí)間以及顯示輸入字符串個(gè)數(shù)時(shí),可以采用單個(gè)字符的輸出,但是為了在屏幕上看起來(lái)直觀,就把要顯示的時(shí)間和正確個(gè)數(shù)的十位和個(gè)位分別存在緩沖區(qū),并把緩沖區(qū)的內(nèi)容采用9號(hào)調(diào)用輸出在屏幕上,其程序?yàn)椋海?) 顯示輸入字符所用的時(shí)間的程序 t

14、ime db 2 dup(?),'$'mov time0,ah;輸入字符串所用時(shí)間的十位送入time0mov time1,al ;輸入字符串所用時(shí)間的個(gè)位送入time1mov dx,offset time ;顯示time中的內(nèi)容mov ah,9int 21h(2) 顯示輸入字符串正確個(gè)數(shù)的程序?yàn)椋?num db 2 dup(?),'$'mov num0,bh ;輸入字符串正確個(gè)數(shù)的十位送入num0mov num1,bl ;輸入字符串正確個(gè)數(shù)的個(gè)位送入num1mov dx,offset num ;顯示num中的內(nèi)容mov ah,9int 21h3.1.2 輸入十個(gè)

15、字符當(dāng)屏幕顯示出要練習(xí)字符串時(shí),就要輸入十個(gè)字符存到指定的緩沖區(qū)中,使用DOS 1號(hào)功能調(diào)用,其功能是輸入單個(gè)字符,輸出參數(shù)是AL=輸入字符的ASCII碼,循環(huán)十次,將十個(gè)字符存入指定的緩沖區(qū)buff中,其程序?yàn)椋?buff db 15 dup(?)mov cx,10 ;cx=10,控制循環(huán)次數(shù) mov bx,0again: mov ah,1 ;輸入單個(gè)字符 int 21hmov buffbx,al ;將輸入的字符存到指定的緩沖區(qū)inc bxloop again3.2 輸入字符串所用時(shí)間計(jì)算對(duì)輸入字符串時(shí)間的計(jì)算,需要知道輸入字符串前的時(shí)間和輸入字符串后的時(shí)間,將兩者相減,即得輸入字符串所用的

16、時(shí)間。具體為:當(dāng)顯示第一串字符串后,調(diào)用DOS 的2CH號(hào)功能讀取系統(tǒng)時(shí)間,讀取完系統(tǒng)時(shí)間后,系統(tǒng)時(shí)間的時(shí)、分和秒分別存在寄存器CH、CL、DH中。并將CL和DH的內(nèi)容保存到minutes和second中,以便計(jì)算輸入字符串所用時(shí)間用;第一次讀取系統(tǒng)時(shí)間后,開始輸入10個(gè)字符,當(dāng)輸入字符結(jié)束后,再次讀取系統(tǒng)時(shí)間,首先第二次的分鐘數(shù)減去第一次的分鐘數(shù),如果結(jié)果大于零,則用第二次的秒數(shù)減去第一次的秒數(shù),所得的結(jié)果轉(zhuǎn)化稱ASCII碼顯示在屏幕上,即為輸入字符串所用的時(shí)間。如果第二次的分鐘數(shù)減去第一次的分鐘數(shù)的結(jié)果小于零,則第二次的秒數(shù)加上60后,再減去第一次的分鐘數(shù),所得結(jié)果妝化稱ASCII碼后顯示

17、在屏幕上,則為輸入字符串所用的時(shí)間。計(jì)算輸入字符串所用的時(shí)間,其程序?yàn)椋簍ime1 db 'the time you have spent is:','$'time2 db 'second','$'time db 2 dup(?)mov ah,2ch ;讀取系統(tǒng)時(shí)間,時(shí)分秒分別存在CH CL DHint 21hmov minute,cl ;保存第一次系統(tǒng)時(shí)間的分和秒mov second,dh mov ah,2ch ;讀取系統(tǒng)時(shí)間int 21hsub cl,minute ;計(jì)算輸入字符串所用時(shí)間mov minute,clcmp dh

18、,secondjb a2jmp gettimea2: add dh,60dec minutegettime:sub dh,secondmov second,dhlea dx,time1mov ah,09hint 21hcall timechange;調(diào)用timedchangemov time0,ah mov time1,almov dx,offset time ;顯示輸入10個(gè)字符所用時(shí)間mov ah,9int 21hlea dx,time2mov ah,09hint 21h3.3 正確率判斷正確率的判斷前提是,首先要有比較的對(duì)象,題目中給定的字符串,其次要有練習(xí)者輸入的字符串,并且要存到指定

19、的即緩沖區(qū),然后,用兩個(gè)寄存器分別指向要比較和被比較字符串的首地址,首先比較第一個(gè)字符是不是相等,如果相等,計(jì)數(shù)寄存器加一,兩指針寄存器各自加一,開始下一輪比較,知道十次比較結(jié)束,將計(jì)數(shù)寄存器的內(nèi)容轉(zhuǎn)化稱ASCII碼輸出,結(jié)果即為輸入字符的正確數(shù)。其程序如下所示:judge proc nearpush cx ;保護(hù)現(xiàn)場(chǎng)push dx xor al,allop: mov bx,offset addresssi ;bx指向addresssi的首地址add bx,2 mov di,offset buff ;di指向buff的首地址 mov cx,0bh lp2: mov dl,bx ;看bx和di的

20、內(nèi)容是否相同cmp dl,dijnz next1 inc al ;計(jì)數(shù)寄存器加一next1: inc bxinc di loop lp2cbwmov cl,10div clmov bl,ah ;保存余數(shù)mov dl,al ;將商轉(zhuǎn)化稱ASCII碼add dl,30hmov bh,dlmov dl,bl ;將余數(shù)轉(zhuǎn)化稱ASCII碼add dl,30hmov bl,dlxor al,alpop dx ;恢復(fù)現(xiàn)場(chǎng)pop cxretjudge endp4.調(diào)試運(yùn)行結(jié)果分析當(dāng)匯編連接運(yùn)行完程序后,屏幕顯示如圖5所示:其顯示的是提示信息以及第一串字符串wuhanunive,等待進(jìn)行打字練習(xí)者從鍵盤輸入10

21、個(gè)字符。圖4 編譯連接運(yùn)行結(jié)果當(dāng)打字練習(xí)者從鍵盤輸入10個(gè)字符后,第二次讀取系統(tǒng)時(shí)間后,計(jì)算出輸入10個(gè)字符所用時(shí)間并顯示,計(jì)算出正確率并顯示在屏幕上。當(dāng)輸入的10個(gè)字符為wuhanyuniv時(shí),輸入正確的個(gè)數(shù)應(yīng)該為5個(gè),輸入后,屏幕顯示結(jié)果如圖6所示,正確率為5,所用時(shí)間為4秒,結(jié)果正確。由于正確率不是10個(gè),所以下一組練習(xí)還應(yīng)為第一組字符串wuhanunive的練習(xí),即正確率顯示結(jié)束后所顯示的下一組字符練習(xí)仍為wuhanunive,圖5顯示的結(jié)果正式如此。圖5 輸入不完全真確的10個(gè)字符運(yùn)行結(jié)果當(dāng)輸入10個(gè)完全正確的字符后,顯示時(shí)間后,還顯示輸入正確的個(gè)數(shù)為10,并顯示出提示語(yǔ),提示練習(xí)者

22、可以進(jìn)行下一組字符串的聯(lián)系了,同時(shí)顯示出下一組練習(xí)字符為第二組字符串hubeichina,結(jié)果如圖6所示:圖6 輸入10個(gè)完全正確字符顯示結(jié)果第一組的10個(gè)字符完全輸入正確后,如果想退出練習(xí),則按1,退出練習(xí);若想繼續(xù)下一組練習(xí),則按任意鍵,屏幕上自動(dòng)直接顯示出第二組要練習(xí)的字符串hubeichina,開始第二組打字練習(xí),同上,第二組字符輸入完全正確后,按1 可以退出,按任意鍵進(jìn)行第三組打字練習(xí),就不再贅述。第二組打字練字屏幕顯示結(jié)果如圖7所示:圖7 第二組字符串練習(xí)5心得體會(huì)到這一刻為止,匯編課設(shè)就接近尾聲了,有興奮,也有惶恐,興奮的是任務(wù)終于完成了,同時(shí)也很擔(dān)心,自己還站在匯編語(yǔ)言的門口,

23、只是一個(gè)初學(xué)者。在課程設(shè)計(jì)的過(guò)程中,深刻地覺得匯編語(yǔ)言真的是很神奇,不過(guò)這也從側(cè)面說(shuō)明自己對(duì)匯編語(yǔ)言了解的不多。通過(guò)本次的匯編語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì),真的學(xué)到了很多東西。是對(duì)這學(xué)期所學(xué)的匯編語(yǔ)言程序設(shè)計(jì)知識(shí)的一個(gè)綜合和提升。在這次課程設(shè)計(jì)中,最重要的是編制匯編語(yǔ)言程序的調(diào)試。通過(guò)這次課程設(shè)計(jì),我對(duì)匯編語(yǔ)言的調(diào)試有了很深刻的了解,當(dāng)程序出錯(cuò)時(shí),主要是通過(guò)調(diào)試來(lái)找出程序中的錯(cuò)誤,當(dāng)然在調(diào)試過(guò)程中,遇到很多困難,主要是平時(shí)練習(xí)不夠,沒有注意培養(yǎng)匯編語(yǔ)言的調(diào)試練習(xí),在做實(shí)驗(yàn)時(shí),忽略了對(duì)程序的調(diào)試。微機(jī)的應(yīng)用已滲透到生活中的方方面面,利用微機(jī),以前難以實(shí)現(xiàn)的東西輕而易舉地成為現(xiàn)實(shí)。所以,作為工科學(xué)生,要了

24、解微機(jī)的內(nèi)部結(jié)構(gòu)、系統(tǒng)構(gòu)成、指令系統(tǒng)、輸入輸出接口、存儲(chǔ)器和接口的擴(kuò)展等等,這些對(duì)我們來(lái)說(shuō)非常重要。 匯編語(yǔ)言程序設(shè)計(jì)的方法和多模塊程序設(shè)計(jì)。作為最基本的編程語(yǔ)言之一,匯編語(yǔ)言的重要性勿庸置疑,因?yàn)樗軌蛲瓿稍S多其它語(yǔ)言所無(wú)法完成的功能。尤其在和硬件關(guān)系非常密切的程序或要提高運(yùn)算速度的程序,即使是 C 語(yǔ)言也會(huì)有些力不從心,而匯編語(yǔ)言則能夠很好揚(yáng)長(zhǎng)避短,最大限度地發(fā)揮硬件的性能。這次匯編語(yǔ)言程序設(shè)計(jì)歷時(shí)九天,在整整九天的日子里,可以說(shuō)是苦多于甜,但是可以學(xué)到很多很多的的東西,同時(shí)不僅可以鞏固了以前所學(xué)過(guò)的知識(shí),還學(xué)到了很多在書本上所沒有學(xué)到過(guò)的知識(shí)。還有我意識(shí)到畫程序方框圖是很有必要的。因?yàn)橥?/p>

25、過(guò)程序方框圖,在做設(shè)計(jì)的過(guò)程中,我們每一步要做什么,每一步要完成什么任務(wù)都有一個(gè)很清楚的思路,而且在程序測(cè)試的過(guò)程中也有利于查錯(cuò)。不僅如此,以前對(duì)于編程工具的使用還處于一知半解的狀態(tài)上,但是經(jīng)過(guò)一段上機(jī)的實(shí)踐,對(duì)于怎么去排錯(cuò)、查錯(cuò),怎么去看每一步的運(yùn)行結(jié)果,怎么去了解每個(gè)寄存器的內(nèi)容以確保程序的正確性的認(rèn)識(shí)上都有了很大程度的提高??傊@次課程設(shè)計(jì)讓我受益匪淺,使我更加深入地理解了匯編語(yǔ)言程序設(shè)計(jì)上講到的各種芯片的功能,以及中斷調(diào)用,同時(shí)加深了對(duì)于主要芯片的應(yīng)用的認(rèn)識(shí),同時(shí)也更加清楚了匯編程序的編寫過(guò)程和運(yùn)行過(guò)程。這不僅加深和鞏固了我們的課本知識(shí),而且增強(qiáng)了我們自己動(dòng)腦,自己動(dòng)手的能力。參考文

26、獻(xiàn)1 周佩玲,彭虎,傅忠謙編著匯編語(yǔ)言程序設(shè)計(jì)(基于16位機(jī))北京:電子工業(yè)出版社,20052 張雪蘭,譚毓安,李元章編著匯編語(yǔ)言程序設(shè)計(jì)(從DOS到Windows)清華大學(xué)出版社,20063 楊季文等編著80x86匯編語(yǔ)言程序設(shè)計(jì)教程清華大學(xué)出版社,19984馬力妮80x86匯編語(yǔ)言程序設(shè)計(jì)北京:機(jī)械工業(yè)出版社,2004 5曹加恒,蘇光奎,許先斌新一代匯編語(yǔ)言程序設(shè)計(jì)北京:高等教育出版社,2003 附錄附錄一 打字計(jì)時(shí)練習(xí)程序stack segment para stack 'stack' db 256 dup(0)stack endsdata segment message

27、 db 0ah,0dh, 'Welcome to WUHAN UUIVERSITY, Please type 10 letters, and you must input 10 right words, then press any key to practice the next one ' db 0ah,0dh, 'if you want to quit, press 1 ',0ah,0dh,'$' str db 0ah,0dh,'$' str1 db 0ah,0dh,'wuhanunive' db 0dh,0

28、ah,'$' str2 db 0ah,0dh,'hubeichina' db 0ah,0dh,'$' str3 db 0ah,0dh,'qmpzwmoxid' db 0ah,0dh,'$' address dw str1,str2,str3time1 db 'the time you have spent is:','$'time2 db 'second','$'number db 'the right number is:','

29、;$'buff db 15 dup(?)minute db (?)second db(?)time db 2 dup(?),'$'num db 2 dup(?),'$'et db 0dh,0ah,'Congratulations, Well done!' db 0ah,0dh,'$'data endscode segment assume cs:code,ds:data,ss:stackstart: mov ax,data mov ds,ax lea dx,message ;顯示提示信息 mov ah,9 int 21h

30、mov si,0lp1: mov dx,offset addresssi ;顯示給定字符串mov ah,9int 21h mov ah,2ch ;讀取系統(tǒng)時(shí)間int 21hmov minute,cl ;保存第一次系統(tǒng)時(shí)間的分和秒mov second,dh lea dx,str ;顯示回車換行mov ah,09hint 21h mov cx,10 ;cx=10,控制循環(huán)次數(shù) mov bx,0again: mov ah,1 ;輸入單個(gè)字符 int 21hmov buffbx,al ;將輸入的字符存到指定的緩沖區(qū)inc bxloop againlea dx,strmov ah,09hint 21h

31、mov ah,2ch ;讀取系統(tǒng)時(shí)間int 21hsub cl,minute ;計(jì)算輸入字符串所用時(shí)間mov minute,clcmp dh,secondjb a2jmp gettimea2: dec minuteadd dh,60gettime:sub dh,secondmov second,dhlea dx,time1mov ah,09hint 21hcall timechange;調(diào)用timechange子程序mov time0,ah ;保存輸入字符所用時(shí)間的十位送入mov time1,al ;保存輸入字符所用時(shí)間的個(gè)位mov dx,offset time ;顯示time中的內(nèi)容mov ah,9int 2

溫馨提示

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

評(píng)論

0/150

提交評(píng)論