匯編語(yǔ)言打字練習(xí)程序課程設(shè)計(jì)報(bào)告18頁(yè)_第1頁(yè)
匯編語(yǔ)言打字練習(xí)程序課程設(shè)計(jì)報(bào)告18頁(yè)_第2頁(yè)
匯編語(yǔ)言打字練習(xí)程序課程設(shè)計(jì)報(bào)告18頁(yè)_第3頁(yè)
匯編語(yǔ)言打字練習(xí)程序課程設(shè)計(jì)報(bào)告18頁(yè)_第4頁(yè)
匯編語(yǔ)言打字練習(xí)程序課程設(shè)計(jì)報(bào)告18頁(yè)_第5頁(yè)
已閱讀5頁(yè),還剩13頁(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、課課程程設(shè)設(shè)計(jì)計(jì)說(shuō)說(shuō)明明書書題目: 打字練習(xí) 院 系: 專業(yè)班級(jí): 學(xué) 號(hào): 學(xué)生姓名: 指導(dǎo)教師: 2010 年 12 月 31 日 安徽理工大學(xué)課程設(shè)計(jì)(論文)任務(wù)書安徽理工大學(xué)課程設(shè)計(jì)(論文)任務(wù)書計(jì)算機(jī)科學(xué)與工程學(xué)院計(jì)算機(jī)科學(xué)與工程學(xué)院 硬件硬件 教研室教研室學(xué)學(xué) 號(hào)號(hào) 學(xué)生姓名學(xué)生姓名 專業(yè)(班級(jí))專業(yè)(班級(jí)) 設(shè)設(shè)計(jì)計(jì)題題目目題目一:判斷閏年題目二: 簡(jiǎn)單計(jì)算器題目三: 代碼轉(zhuǎn)換程序題目四:字符圖形程序題目五: 學(xué)生成績(jī)管理題目六: 打字練習(xí) 設(shè)設(shè)計(jì)計(jì)技技術(shù)術(shù)參參數(shù)數(shù)1 熟悉匯編指令、宏匯編語(yǔ)言的編程方法 2 BIOS 中斷調(diào)用、系統(tǒng)功能中斷調(diào)用方法 3 磁盤文件、及文件內(nèi)容操作設(shè)

2、設(shè)計(jì)計(jì)要要求求寫一個(gè)程序,運(yùn)行可執(zhí)行程序后,出現(xiàn)主界面,按回車鍵出現(xiàn)由 26 個(gè)字母組成的亂序行,這時(shí)其中任一字母落下,在鍵盤上敲入該字母,如果輸入正確,字母消失;按回車鍵進(jìn)入打字練習(xí);按 ESC 鍵返回主界面;按空格鍵暫停;按E退出。 工工作作量量1. 完成所選題目的軟件設(shè)計(jì);2.課程設(shè)計(jì)說(shuō)明書 1000 字(不包括程序源代碼)左右。工工作作計(jì)計(jì)劃劃第 1 次熟悉軟件環(huán)境。第 2 次繪制程序流程圖。第 3 次用編寫程序。第 4 次用調(diào)試運(yùn)行程序。第 5 次編寫課程設(shè)計(jì)說(shuō)明書參參考考資資料料1溫冬蟬,沈美明.IBM PC 匯編語(yǔ)言程序設(shè)計(jì).第 2 版.北京:清華大學(xué)出版社,2002.32 王爽

3、.匯編語(yǔ)言.北京:清華大學(xué)出版社,2003.93 李敬兆.8086/8088 和基于 ARM 核匯編語(yǔ)言程序設(shè)計(jì).第二版.合肥:中國(guó)科學(xué)技術(shù)大學(xué)出版社,2008.9指導(dǎo)教師簽字指導(dǎo)教師簽字教研室主任簽字教研室主任簽字 20102010 年年 1212 月月 1717 日日安徽理工大學(xué)課程設(shè)計(jì)(論文)成績(jī)?cè)u(píng)定表安徽理工大學(xué)課程設(shè)計(jì)(論文)成績(jī)?cè)u(píng)定表指導(dǎo)教師評(píng)語(yǔ):成績(jī): 指導(dǎo)教師: 年 月 日摘要 匯編語(yǔ)言是計(jì)算機(jī)能夠給用戶使用的最高效快捷的語(yǔ)言,也是唯一能對(duì)計(jì)算機(jī)所有硬件進(jìn)行操縱的語(yǔ)言。鑒于匯編語(yǔ)言的用途廣泛以及重要性,我花費(fèi)的大量的時(shí)間完成此次課程時(shí)機(jī),打字練習(xí)。打字練習(xí)是計(jì)算機(jī)常用的小應(yīng)用程

4、序,可以給想練習(xí)打字的人提供一個(gè)好的練習(xí)空間。本文的核心部分是對(duì)于詳細(xì)設(shè)計(jì)的講解與分析,而這當(dāng)中的側(cè)重點(diǎn)又在于設(shè)計(jì)思想的再現(xiàn)。關(guān)鍵詞:關(guān)鍵詞:功能模塊,核心代碼,隨機(jī)字符,模塊調(diào)用,功能分析I目錄 1 設(shè)計(jì)目的.12 概要設(shè)計(jì).22.1 系統(tǒng)總體分析.22.2 主模塊框圖及說(shuō)明.23 詳細(xì)設(shè)計(jì).43.1 主模塊及子模塊說(shuō)明.43.2 各模塊詳細(xì)設(shè)計(jì).43.2.1 主界面模塊.43.2.2 隨機(jī)字母產(chǎn)生模塊.63.2.3 字母落下模塊.73.2.4 暫停模塊.93.2.5 返回主界面模塊.94程序調(diào)試.104.1 運(yùn)行界面分析.104.2 調(diào)試過(guò)程及分析.115 心得體會(huì).125.1 設(shè)計(jì)體會(huì).

5、125.2 系統(tǒng)改進(jìn).12參考文獻(xiàn).13安徽理工大學(xué)課程設(shè)計(jì)(論文)-1-1 設(shè)計(jì)目的設(shè)計(jì)目的這次課設(shè)的任務(wù)是寫一個(gè)程序,運(yùn)行可執(zhí)行程序后,出現(xiàn)主界面,按回車鍵出現(xiàn)由26 個(gè)字母組成的亂序行,這時(shí)其中任一字母落下,在鍵盤上敲入該字母,如果輸入正確,字母消失;按回車鍵進(jìn)入打字練習(xí);按 ESC 鍵返回主界面;按空格鍵暫停;按E退出。通過(guò)課程設(shè)計(jì),主要達(dá)到以下目的:1. 增進(jìn)對(duì)匯編語(yǔ)言的認(rèn)識(shí),加強(qiáng)用匯編語(yǔ)言編程的能力;2. 掌握匯編語(yǔ)言的中斷調(diào)用功能的應(yīng)用,可以用匯編語(yǔ)言調(diào)用各種中斷調(diào)用功能,并由此實(shí)現(xiàn)對(duì)硬件的控制等;3. 了解和掌握匯編語(yǔ)言程序設(shè)計(jì)過(guò)程、方法及實(shí)現(xiàn),為以后微機(jī)原理課程的學(xué)習(xí)打下良好

6、基礎(chǔ);4. 通過(guò)課程設(shè)計(jì)可以使我們更加了解書上的知識(shí),了解書上的語(yǔ)句并且能夠應(yīng)用自己的程序中;5. 掌握屏幕輸出顯示的設(shè)計(jì)方法。安徽理工大學(xué)課程設(shè)計(jì)(論文)-2-2 概要設(shè)計(jì)概要設(shè)計(jì)2.1 系統(tǒng)總體分析根據(jù)題目要求可以看到有以下幾部分來(lái)實(shí)現(xiàn)打字練習(xí):1.由 26 字母亂序組成一行顯示行。2.字母自動(dòng)落下。3.從鍵盤輸入的字母與落下字母相同則該字母消失,并且下一個(gè)字母自動(dòng)接著落下。4.按下“Ese”鍵則程序返回到主界面。5.按空格鍵游戲暫停。6.在主界面按“E”則程序退出。打字練習(xí)的主要功能由以上六部分組成,每一部分之間的聯(lián)系都是比較緊密的。對(duì)于以上及部分,最主要的部分就是第二三兩個(gè)部分,這是打

7、字練習(xí)的重點(diǎn),需要詳細(xì)設(shè)計(jì)其所需要的功能。2.2 主模塊框圖及說(shuō)明程序的核心模塊是打字,各個(gè)模塊功能的實(shí)現(xiàn)主要是通過(guò)鍵盤輸入指令來(lái)融合的,主要流程是先到主界面,然后選擇你想要進(jìn)行的指令 ENTER 進(jìn)入打字界面開始打字,E 退出程序,空格在打字練習(xí)時(shí)執(zhí)行暫停的功能,ESC 是從打字界面返回到主界面。核心模塊的流程大體如下面的流程圖圖 2-1:安徽理工大學(xué)課程設(shè)計(jì)(論文)-3-E 其他鍵 ENTER ENTER 是否是是否 是 是 圖 2-1 程序設(shè)計(jì)流程圖結(jié)束隨即字母落下當(dāng)前字母消失暫停判斷輸入按鍵鍵入字符是否與下落一致從鍵盤輸入字符是否是空格開始輸入空格是否是ESC安徽理工大學(xué)課程設(shè)計(jì)(論文

8、)-4-3 詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)3.1 主模塊及子模塊說(shuō)明 主界面是程序的初始入口,也是其他功能模塊的接入點(diǎn)。主模塊是打字模塊,也是核心模塊,主要通過(guò)各個(gè)鍵盤符來(lái)控制各個(gè)子模塊之間的協(xié)調(diào)。子模塊分為判斷輸入字符判斷模塊(這當(dāng)中包含兩個(gè)小的子模塊:主界面輸入字符判斷和打字模塊輸入字符判斷) 、暫停模塊、退出模塊(這當(dāng)中包含兩個(gè)小的子模塊:打字界面返回主界面模塊和主界面退出程序模塊)3.2 各模塊詳細(xì)設(shè)計(jì) 3.2.1 主界面模塊當(dāng)程序運(yùn)行后,我們首先要進(jìn)行選擇,是要繼續(xù)進(jìn)行即進(jìn)入打字練習(xí)程序還是終止練習(xí)退出程序。所以,在這里我們需要設(shè)置一個(gè)程序,該程序要判斷鍵盤鍵入的字符,我們不妨規(guī)定 ESC 鍵和

9、ENTER 鍵分別為終止程序的控制鍵和進(jìn)入打字練習(xí)程序的控制鍵,即當(dāng)檢驗(yàn)到鍵盤輸入 ESC 后,退出程序;當(dāng)鍵盤輸入為 ENTER 時(shí)進(jìn)入打字練習(xí)程序。單元程序如下:menu db *,0dh,0ah db Welcome to word type exercise,0dh,0ah db press Enter key to continue.,0dh,0ah db when a letter is dropping,please hit it!,0dh,0ah db press space key to pause!,0dh,0ah db press ESC key to return ma

10、in interface!,0dh,0ah db press letter E to exit!,0dh,0ah db *$以上設(shè)置主界面的顯示方式。clear_screen 00d,00d,24d,79d Init_write 00d,00d,0ah,dl,80d,nextsign1 Init_write 24d,00d,0ah,dl,80d,nextsign2 Init_write 00d,00d,0ah,dh,25d,nextsign3 Init_write 00d,79d,0ah,dh,25d,nextsign4 menu 05d,15d,ZK ;菜單信息的宏調(diào)用 menu 07h,1

11、5d,no menu 09d,15d,meg安徽理工大學(xué)課程設(shè)計(jì)(論文)-5- menu 11d,15d,meg1 menu 13d,15d,meg2 menu 15d,15d,meg3 menu 17d,15d,meg4 put: mov ah,02h ;設(shè)置光標(biāo)位置 mov bh,00h mov dh,22d mov dl,33d int 10h mov ah,01h ;從鍵盤輸入任意字符 int 21h cmp al,0dh je speed3 cmp al,45h je exit以上代碼是清屏,并調(diào)用宏實(shí)現(xiàn)主界面的顯示,并在主界面中設(shè)置了菜單顯示后的光標(biāo)位置,以方便使用者的操作。 in

12、_cycle: add cx,01h cmp cx,1000 jne in_cycle push dx mov ah,06h ;從鍵盤輸入字符 mov dl,0ffh int 21h pop dx jz pass cmp al,1bh ;如果鍵入ESC,則返回主菜單 je to_start1 cmp al, ;如果鍵入SPACE,則游戲暫停 je pause cmp al,di ;輸入字母正確!則字母消失 je disappearto_start1: ;返回主菜單安徽理工大學(xué)課程設(shè)計(jì)(論文)-6- jmp start上述程序段中用到了中斷INT21,利用中斷的有關(guān)規(guī)定,先將01H存入到AH當(dāng)中

13、,則AL中即為由鍵盤鍵入的字符。在此,先通過(guò)CMP指令來(lái)判斷輸入的字符是否是ENTER鍵(ENTER鍵的ASCII碼為十六進(jìn)制的0DH,程序開頭部分的宏定義已經(jīng)令CR為0DH) ,如果是的話,程序?qū)⑻D(zhuǎn)到程序disappear,disappear是定義的又一個(gè)程序,該程序即為打字練習(xí)程序的核心部分。如果不是ENTER的話,將執(zhí)行下一條指令,即判斷鍵盤鍵入的是否為E鍵,此功能由CMPAL,1BH來(lái)實(shí)現(xiàn),其中1BH是E鍵的ACSII碼的十六進(jìn)制的表示。如果是E鍵的話,程序?qū)⑻D(zhuǎn)到TZD_1子程序,再通過(guò)TZD_1程序來(lái)判斷是否要退出打字練習(xí)程序。如果鍵盤鍵入的既不是ENTER也不是E鍵的話,程序?qū)?/p>

14、繼續(xù)等待鍵盤的輸入,直到輸入的按鍵為ENTER和E當(dāng)中的一個(gè)為止。3.2.2 隨機(jī)字母產(chǎn)生模塊當(dāng)用戶選擇繼續(xù)運(yùn)行程序且進(jìn)入打字練習(xí)界面時(shí),則程序需要首先為用戶輸出一列隨機(jī)的字符序列,這時(shí)程序就需要自動(dòng)的調(diào)用產(chǎn)生隨機(jī)字符序列的程序。程序段如下:letters db jwmilzoeucgpravskntxhdyqfb db iytpkwnxlsvxrmofzhgaebudjq db nwimzoexrphysfqtvdcgljukdaletters_bak db jwmilzoeucgpravskntxhdyqfb db iytpkwnxlsvxrmofzhgaebudjq db nwimzoe

15、xrphysfqtvdcgljukdaletter_counter db 0begin: clear_screen 01d,01d,23d,78d ;清屏宏調(diào)用 clear_screen 01d,01d,23d,78d Init_write 23d,01d,01h,dl,78d,nextsign5 mov ah,02h mov bh,00h mov dh,01h mov dl,01h int 10h mov cx,00h lea si,letters上述的程序段中,begin 實(shí)現(xiàn)了輸出的字符的隨機(jī)顯示,當(dāng)然這個(gè)隨機(jī)是我們要事先通過(guò)自己隨機(jī)定義一段由 26 個(gè)字母隨機(jī)組成的序列,然后由 beg

16、in 來(lái)調(diào)用,從而間安徽理工大學(xué)課程設(shè)計(jì)(論文)-7-接來(lái)實(shí)現(xiàn)隨即字母的產(chǎn)生。Begin 段利用了 INT10,其功能是設(shè)置屏幕顯示方式,靈活的利用 INT10 豐富的指令功能,可以巧妙的設(shè)計(jì)出想要的程序來(lái)。INT10 中斷規(guī)定,DH和 DL 共同控制著字符輸出的位置,其中 DH 為字符輸出的行標(biāo),DL 為字符輸出的列標(biāo),通過(guò)改變 DH 和 DL 的值,可以改變字符在命令符輸出屏幕上的位置;如果 AH=09H 時(shí),則 AL=字符,BL 則是控制著輸出的字符屬性或顏色;計(jì)數(shù)器 CX 中存放的則是重復(fù)輸出字符的個(gè)數(shù)。本程序中令 CX 中存放 78,也就是說(shuō) loop 循環(huán)程序?qū)⒀h(huán) 78 次,程序

17、的輸出為 78 個(gè)字符,當(dāng) loop 循環(huán)程序運(yùn)行結(jié)束之后,程序?qū)?zhí)行下一條指令,調(diào)用DAZIRUKOU 子程序。使得程序繼續(xù)運(yùn)行,讓用戶按照程序自動(dòng)產(chǎn)生的字符串來(lái)進(jìn)行打字練習(xí)。3.2.3 字母落下模塊程序自動(dòng)進(jìn)入打字功能,自動(dòng)落下字符,等待鍵盤輸入字符以此來(lái)判斷輸入者想什么,如果鍵盤輸入與預(yù)期的相符合則程序自動(dòng)執(zhí)行相關(guān)功能。如果輸入字符與落下字符相同,程序執(zhí)行當(dāng)前字母消失和產(chǎn)生下一落下字母的功能,字母落下功能的實(shí)現(xiàn)是通過(guò)逐行替換的方法實(shí)現(xiàn)的,字母在當(dāng)前行出現(xiàn)會(huì)有一個(gè)延遲時(shí)間,當(dāng)過(guò)了這個(gè)延遲時(shí)間時(shí),程序執(zhí)行當(dāng)前位置清空操作,并在下一行顯示上一行的字母。代碼如下:hit: mov ah,02h

18、mov bh,00h mov dh,01h mov dl,present_position int 10h mov al,di ; 出現(xiàn)下一個(gè)新字母的數(shù)法 add al,7 cmp al,7ah ja convey_letter mov ah,0ah mov bh,00h mov cx,01h int 10h mov di,al add letter_counter,01h jmp nextcycleconvey_letter: sub al,7ah安徽理工大學(xué)課程設(shè)計(jì)(論文)-8- add al,61h mov ah,0ah mov bh,00h mov cx,01h int 10h mov

19、 di,al add letter_counter,01h jmp nextcycle clear_screen 01,01,23,78 mov ah,02h mov bh,00h mov dh,11d mov dl,20d int 10h inc dh inc dh mov ah,02h mov bh,00h int 10hdisappear: ;擊中字母后輸出空格 pop cx pop cx mov ah,0ah mov al, mov bh,00h mov cx,01h int 10h jmp hit 3.2.4 暫停模塊如果輸入空格,則程序執(zhí)行暫停功能,暫停功能的實(shí)現(xiàn)是通過(guò)以下方法實(shí)現(xiàn)

20、的,當(dāng)從鍵盤輸入空格時(shí),程序收到暫停信號(hào),執(zhí)行跳轉(zhuǎn),跳轉(zhuǎn)到一個(gè)死循環(huán)模塊,就是無(wú)限顯示當(dāng)前屏幕,不做其他任何操作,直到鍵盤再次輸入空格時(shí),程序收到暫停結(jié)束指令,跳轉(zhuǎn)回到主程序模塊,繼續(xù)執(zhí)行主模塊的功能。代碼如下:安徽理工大學(xué)課程設(shè)計(jì)(論文)-9-pause: push dx ;暫停處理 mov ah,06h mov dl,0ffh int 21h pop dx cmp al, jne pause jmp passpass: pop cx inc cx cmp cx,speed je print jmp out_cycle3.2.5 返回主界面模塊如果鍵盤輸入 ESC,程序結(jié)束當(dāng)前運(yùn)行,返回到程

21、序的主界面,然后等待主界面當(dāng)中鍵盤的輸入,這又跳回到主界面模塊。相關(guān)代碼包含在主界面功能代碼段當(dāng)中。 安徽理工大學(xué)課程設(shè)計(jì)(論文)-10-4程序調(diào)試程序調(diào)試4.1 運(yùn)行界面分析程序運(yùn)行后的主界面如圖 4-1,主界面第一行是歡迎語(yǔ),第二行是作者,然后往下是操作說(shuō)明,為使用者說(shuō)明該程序的使用方法。背景設(shè)置為藍(lán)色,字體為白色。圖 4-1 程序主界面 當(dāng)用戶按下 ENTER 鍵時(shí),程序自動(dòng)跳入到圖 4-2 的界面,字母隨機(jī)落下,用戶便可以開始打字練習(xí)了。練習(xí)只要按照說(shuō)明來(lái)做就可以了。安徽理工大學(xué)課程設(shè)計(jì)(論文)-11-圖 4-2 打字界面4.2 調(diào)試過(guò)程及分析程序在運(yùn)行之后提示語(yǔ)不在一行,檢查程序發(fā)現(xiàn)

22、控制提示語(yǔ)位置的 DL,DH 有問(wèn)題,將一開始的 sub dl,19 改為 add dl,02H,此時(shí)再次運(yùn)行之后可以看到提示語(yǔ)在適當(dāng)?shù)奈恢?,滿足要求。 一開始寫程序時(shí),代碼寫得特別多,當(dāng)程序主體完成后,便對(duì)程序做了優(yōu)化,主要是對(duì)代碼量的縮減,主要縮減了一段為隨機(jī)字母分配空間的代碼,一開始在定義的時(shí)候別給內(nèi)存空間賦值為 0,而后又在功能段的時(shí)候?qū)υ搩?nèi)存空間賦 0 值,這樣一來(lái)便重復(fù)了,所以后來(lái)就把功能段的那段代碼去掉了,代碼量一下少了許多。安徽理工大學(xué)課程設(shè)計(jì)(論文)-12-5 心得體會(huì)心得體會(huì)5.1 設(shè)計(jì)體會(huì)通過(guò)這次課程設(shè)計(jì),我受益匪淺。感覺(jué)到了學(xué)習(xí)匯編語(yǔ)言的重要性以及趣味性,我發(fā)現(xiàn)了對(duì)于匯編語(yǔ)言的了解還很淺顯,感到很慚愧。在此次編程過(guò)程中,出現(xiàn)了很多平時(shí)沒(méi)有注意到的問(wèn)題,

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論