版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課程設(shè)計(jì)</b></p><p> 2010 ~ 2011學(xué)年第二學(xué)期</p><p> 設(shè)計(jì)題目 打字練習(xí)程序 </p><p> 院(系) 計(jì)算機(jī)科學(xué)與信息工程 </p><p> 專(zhuān) 業(yè)
2、 計(jì)算機(jī)科學(xué)與技術(shù) </p><p> 班 級(jí) 學(xué)號(hào) </p><p> 學(xué)生姓名 </p><p> 設(shè)計(jì)時(shí)間 2011年 6 月 20 日——2011 年 6 月 24日 </p><p>
3、指導(dǎo)教師 </p><p> 提交日期 2011年6月24日 </p><p><b> 課程設(shè)計(jì)任務(wù)書(shū)</b></p><p> 指導(dǎo)教師(簽名): 教研室主任(簽名): </p><p> 2
4、011年 6 月 20 日 2011年 6 月 20 日</p><p><b> 目錄</b></p><p> 2010 ~ 2011學(xué)年第二學(xué)期··············
5、183;··························1</p><p> 1.概述·····
6、183;····································
7、·················5</p><p> 1.1基本功能··············
8、83;···································5</p
9、><p> 1.2擴(kuò)展功能································
10、3;·················6</p><p> 2.詳細(xì)設(shè)計(jì)說(shuō)明··············
11、····································
12、3;7</p><p> 2.1分析原“typetest.asm”程序結(jié)構(gòu)····························8&
13、lt;/p><p> 2.1已經(jīng)實(shí)現(xiàn)的功能(修改的、新編寫(xiě)的)說(shuō)明····················9</p><p> 3. 對(duì)該“打字練習(xí)程序”的進(jìn)一步設(shè)想··&
14、#183;···························10</p><p> 3.1 ····
15、····································
16、3;················11</p><p> 3.2···············
17、3;····································
18、183;·····12</p><p> 3.3··························
19、183;·······························12</p><p> 4. 課程
20、設(shè)計(jì)總結(jié)····································
21、··············13</p><p> 5. 軟件使用說(shuō)明·················
22、·································13</p><p>
23、; 6.附錄(參考文獻(xiàn),原代碼)··································
24、;·····14</p><p> 6.1參考文獻(xiàn)··························&
25、#183;·························14</p><p> 6.2 源代碼·····
26、83;····································&
27、#183;··········15</p><p><b> 概述</b></p><p> 本課程設(shè)計(jì)是《80X86匯編語(yǔ)言程序設(shè)計(jì)》課程的后繼教學(xué)環(huán)節(jié), 通過(guò)對(duì)一個(gè)較大型的、綜合性的應(yīng)用程序進(jìn)行閱讀、修改、添加功能等工作, 使學(xué)生對(duì)匯編語(yǔ)言程序設(shè)計(jì)有更進(jìn)一步的認(rèn)
28、識(shí), 提高閱讀理解復(fù)雜程序的能力和程序設(shè)計(jì)能力基本功能</p><p><b> 1.1基本功能</b></p><p> 設(shè)置輸入界面, 用戶輸入密碼后才能進(jìn)入主菜單</p><p> 修改主菜單, 在主菜單上顯示當(dāng)天日期。</p><p> 修改主菜單, 增加可供用戶選擇難度級(jí)別的選項(xiàng)。</p>
29、<p> 為用戶打分,正確輸入字母使用時(shí)間越少,得分越高。</p><p> 修改程序, 在屏幕右上角顯示用戶得分、已輸入字母數(shù)、正確數(shù)。</p><p> 將程序中的“置光標(biāo)位置”程序段落用宏調(diào)用完成, 添加“置光標(biāo)位置”宏定義。</p><p><b> 1.2拓展功能</b></p><p>
30、 1. 設(shè)置限定時(shí)間,到達(dá)該時(shí)間,用戶尚未得到要求的分?jǐn)?shù)時(shí),游戲停止。</p><p> 2. 到達(dá)限定時(shí)間,用戶得分達(dá)到預(yù)設(shè)的值時(shí), 自動(dòng)提高難度等級(jí), 屏幕變色。</p><p> 3. 修改程序,底行的笑臉字母消失后,不再在該列下落字母(提示:設(shè)置數(shù)組記錄笑臉字母的存在與否)。笑臉字母全部消失后, 游戲停止, 顯示告別畫(huà)面,顯示用戶成績(jī)。其他任務(wù):</p><
31、p><b> 詳細(xì)設(shè)計(jì)說(shuō)明</b></p><p> 分析原“typetest.asm”程序結(jié)構(gòu)</p><p> 2.1.1.首先在typetest.asm中定義了四個(gè)宏調(diào)用的程序</p><p><b> ?。?)方框宏定義</b></p><p><b> ?。?)清屏宏
32、定義</b></p><p> ?。?)菜單顯示宏定義</p><p> (4)設(shè)置光標(biāo)位置宏定義</p><p> 2.1.2 data數(shù)據(jù)段的定義:包括的所有的顯示字幕的定義。</p><p> 2.1.3 各宏定義函數(shù)的調(diào)用以及對(duì)各個(gè)子函數(shù)的調(diào)用。</p><p> 2.1.4 程序的主要流程
33、圖</p><p><b> 返回</b></p><p><b> 不正確</b></p><p><b> 密碼正確</b></p><p><b> 確定后進(jìn)入</b></p><p> 已經(jīng)實(shí)現(xiàn)的功能(修改的、新編
34、寫(xiě)的)說(shuō)明</p><p> 2.2.1本程序已實(shí)現(xiàn)了基本的功能:</p><p> 設(shè)置輸入界面, 用戶輸入密碼后才能進(jìn)入主菜單;</p><p> 修改主菜單, 在主菜單上顯示當(dāng)天日期;</p><p> 修改主菜單, 增加可供用戶選擇難度級(jí)別的選項(xiàng);</p><p> 為用戶打分,正確輸入字母使用時(shí)間越
35、少,得分越高;</p><p> 修改程序, 在屏幕右上角顯示用戶得分、已輸入字母數(shù)、正確數(shù);</p><p> 將程序中的“置光標(biāo)位置”程序段落用宏調(diào)用完成, 添加“置光標(biāo)位置”宏定義;</p><p> 2.2.2本程序的擴(kuò)展功能:</p><p> 修改了主界面的背景顏色以及字體的顏色,對(duì)一些主要的提示信息進(jìn)行了一些優(yōu)化。<
36、;/p><p> ?。?) 增加了一鍵顯示用戶得分記錄的功能,只要用戶在主界面上輸入“C”,就可以顯示出來(lái)用戶的得分記錄</p><p> 對(duì)“打字練習(xí)程序”的進(jìn)一步設(shè)想</p><p> 可以讓每次出現(xiàn)的字母都變得有邏輯性,就像打漢字的時(shí)候的那種邏輯性,還可以增加英語(yǔ)之類(lèi)的打字練習(xí)。</p><p> 可以改變每一個(gè)字母在掉落的時(shí)候的顏色
37、。讓每一個(gè)字母的不同時(shí)刻的顏色都由電腦隨機(jī)產(chǎn)生。</p><p> 在打字練習(xí)的過(guò)程中還可以有一些適當(dāng)?shù)穆曇魜?lái)配合著練習(xí)的進(jìn)行,這樣的話效果和用戶的體驗(yàn)都會(huì)有更進(jìn)一步的提高的。</p><p><b> 課程設(shè)計(jì)總結(jié)</b></p><p> 通過(guò)這次課程設(shè)計(jì)讓我跟具體的了解了匯編語(yǔ)言的用途以及他的特點(diǎn),這樣有利于在今后的實(shí)踐中更好的去應(yīng)
38、用匯編語(yǔ)言解決問(wèn)題,同時(shí)通過(guò)這次的課程設(shè)計(jì)也體現(xiàn)出了我的在匯編方面的一些基礎(chǔ)知識(shí)的不足。由于對(duì)匯編語(yǔ)言的一些基本知識(shí)的掌握不足,程序中還存在或多或少的缺陷和不足,有一些的基本功能在邏輯上還存在一些的小問(wèn)題,但是不會(huì)影響基本的使用。</p><p><b> 軟件使用說(shuō)明</b></p><p> 由于系統(tǒng)版本不同的緣故,在程序匯編鏈接的時(shí)候會(huì)停滯一部,但只要在敲一
39、下回車(chē)在進(jìn)入一次就好了。很多時(shí)候在進(jìn)入時(shí)輸入密碼后需要按回車(chē)才能跳轉(zhuǎn)到主界面。</p><p> 附錄(參考文獻(xiàn),原代碼)</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 楊文顯,宓雙,胡建人.新編匯編語(yǔ)言程序設(shè)計(jì),清華大學(xué)出版社,2010</p><p> [2] 朱玉龍,任文覽等.匯編語(yǔ)
40、言程序設(shè)計(jì),清華大學(xué)出版社,2003</p><p> [3] [美]Kip R.Irvine. 電子工業(yè)出版社,2004</p><p><b> 原代碼</b></p><p> ; Assembly program for test your type skills </p><p> ; Write
41、d by in 06/24/2003</p><p> ; Modified by Mi shuang in 06/06/2005</p><p> ; ------------------------------------------------</p><p> include ylib.h</p><p>
42、 Init_boarder macro row,col,char,dhdl,count;</p><p><b> Localll</b></p><p> mov cx, count </p><p> mov dh, row</p><p> mov dl, col</p><p>
43、; ll: movah, 02h</p><p> mov bh, 00h</p><p><b> int 10h</b></p><p><b> push cx</b></p><p> mov ah, 0ah</p><p> mov al, char
44、</p><p> mov bh, 00h</p><p> mov cx, 01h</p><p><b> int 10h</b></p><p><b> pop cx</b></p><p><b> inc dhdl</b></
45、p><p><b> loop ll </b></p><p><b> endm</b></p><p> ; ---------------------------------------------------</p><p> clear_screen macro top, left,
46、bottom, right,col;清屏宏定義</p><p> mov ah, 06h </p><p> mov al, 00h</p><p> mov bh, col</p><p> mov ch, top</p><p> mov cl, left</p&g
47、t;<p> mov dh, bottom</p><p> mov dl, right</p><p><b> int 10h</b></p><p> mov ah, 02h</p><p> mov bh, 00h</p><p> mov dh, 0
48、0h</p><p> mov dl, 00h</p><p><b> int 10h</b></p><p><b> endm</b></p><p> ;----------------------------------------------------------</
49、p><p> SETCUSOR MACRO PAGE,ROW,COLUMN ;設(shè)置光標(biāo)位置</p><p> MOV AH,02H</p><p> MOV BH,PAGE</p><p> MOV DL,COLUMN</p><p> MOV DH,ROW</p><p
50、><b> INT 10H</b></p><p><b> ENDM</b></p><p> ; ----------------------------------------------------</p><p> menumacrorow, col, text; 菜單顯示宏定義 <
51、;/p><p> mov ah, 02h</p><p> mov bh, 024h</p><p> mov dh, row</p><p> mov dl, col</p><p><b> int 10h</b></p><p> mov ah,
52、09h</p><p> lea dx, text</p><p><b> int 21h</b></p><p><b> endm</b></p><p> ; ======================================================</p
53、><p> Data segment</p><p> kaishi db 0ah,0dh, " welcome to play the game !$" </p><p><b> year dw ?</b></p><p> month db ?<
54、;/p><p><b> day db ?</b></p><p> date db 0ah,0dh, "Date:$"</p><p> mes0 db 0ah,0dh, "(1)Press Enter key to continue.......$"</p><p&g
55、t; mes1 db 0ah,0dh, "(2)When a letter is dropping,please hit it!$"</p><p> mes2 db 0ah,0dh, "(3)Press space key to pause!$"</p><p> mes3 db 0ah,0dh, "(4)Pres
56、s ESC key to return main interface!$"</p><p> mes4 db 0ah,0dh, "(5)Press letter 'E' to exit!$"</p><p> mes5 DB 'please enter your password :$'</p>&
57、lt;p> mes6 db 0ah,0dh,"1: < fast >$"</p><p> mes7 db 0ah,0dh,"2: < veryfast>$"</p><p> mes8 db 0ah,0dh,"3: < slow >$"</p&g
58、t;<p> mess8db 0ah,0dh,"4: < veryslow>$"</p><p> mes9 db 'please choose the speed you want:$'</p><p> mes10 db "The game is over!$"</p>
59、<p> mes15 db "Do you want to continue ? Yes(1)/No(0):$"</p><p> mes11 db "your time:$"</p><p> mes12 db "right keys:$"</p><p> mes13
60、 db "Your score:$"</p><p> mes14 db "you have input:$"</p><p> mes20 db "hi guy good job!$"</p><p> mes21 db 0ah,0dh,"(6)press 'c
61、39;to check your records!$"</p><p> mes22 db "these records:$"</p><p> col db 00h,24h,0fdh,0dh ;顏色</p><p> numb1 dw ? ;已輸入字母的個(gè)數(shù)</p><p&
62、gt; numb dw ? ;輸入正確字母的個(gè)數(shù)</p><p> score dw ? ;每輪游戲的分?jǐn)?shù)</p><p> TIME DW ?</p><p> sum dw ? ;所有字母下落的行數(shù)和</p><p> sum1 dw ? </p>
63、<p> game_time dw ? ;記錄游戲的次數(shù)</p><p> scores dw 4 dup(?) ;記錄游戲分?jǐn)?shù)</p><p> password db "111111"</p><p> password1 db 6 dup(?)</p><p&
64、gt; GRADE DW ?</p><p> Speed dw1000H,300h,5000h,8000h</p><p> yanchi dw 0f00h,3fffh,1fffh</p><p> Letters db "jwmilzoeucgpravskntxhdyqfb"</p>&
65、lt;p> db "iytpkwnxlsvxrmofzhgaebudjq"</p><p> db "nwimzoexrphysfqtvdcgljukda"</p><p> Present_position db 1</p><p> db 0</p><p><
66、;b> Data ends</b></p><p> ; =========================================================</p><p> codesegment</p><p> assumecs: code, ds: data</p><p><b&g
67、t; start:</b></p><p> mov ax, data</p><p><b> mov ds,ax</b></p><p><b> mov es,ax</b></p><p><b> new:</b></p><p
68、> clear_screen 0,0,24,79,0f4h</p><p> SETcusor 0,10,30</p><p> LEA DX,MES5</p><p> MOV AH,09H</p><p><b> INT 21H</b></p><p> ;--------
69、--------------------------------------------------------------------------------------</p><p> SETCUSOR 0,11,61</p><p> lea bx,password1</p><p><b> mov cx,6</b></p
70、><p><b> input:</b></p><p> mov ah,07h</p><p><b> int 21h</b></p><p> mov [bx],al</p><p><b> inc bx</b></p>&l
71、t;p> mov ah,02h</p><p> mov dl,'*'</p><p><b> int 21h</b></p><p> ;---------------------------------------------------------------------------------------
72、-</p><p> loop input</p><p><b> contiun:</b></p><p> mov ah,07h</p><p><b> int 21h</b></p><p> cmp al,0dh</p><p>
73、 jne contiun</p><p><b> mov cx,6</b></p><p> lea si,password</p><p> lea di,password1</p><p><b> check:</b></p><p> mov al,[s
74、i]</p><p> cmp al,[di]</p><p><b> jne new</b></p><p><b> inc si</b></p><p><b> inc di</b></p><p> loop check
75、;密碼的輸入及判斷是否正確</p><p> ;--------------------------------------------------------------------------------------</p><p><b> start1:</b></p><p> clear_screen 0d,0d,24d,7
76、9d,07h</p><p> mov grade,0</p><p> mov numb,0</p><p> mov numb1,0</p><p> mov sum,0</p><p> mov score,0</p><p> mov cx,1000h
77、;隱藏光標(biāo)</p><p> mov ah,01h</p><p> int 10h</p><p> clear_screen 0d,0d,24d,79d,1eh ;清屏</p><p> Init_boarder 0d, 0d, '*', dl, 80d</p><p
78、> Init_boarder 24d,0d, '*', dl, 80d</p><p> Init_boarder 0d, 0d, '*', dh, 25d</p><p> Init_boarder 0d, 79d, '*', dh, 25d ;初始化邊框</p><p> menu 3d,2
79、0d,kaishi; ;顯示菜單</p><p> menu 7d,15d, date</p><p> push dx ;顯示當(dāng)天的時(shí)間</p><p> mov ah,2ah</p><p><b> int 21h</b></p><p>
80、mov year,cx</p><p> mov month,dh</p><p> mov day,dl</p><p> mov dx,-1</p><p> mov ax,year</p><p> call writedec</p><p><b> m
81、ov ah,0</b></p><p> mov al,month</p><p> call writedec</p><p> mov dx,-1</p><p> mov al,day</p><p> call writedec</p><p><
82、b> pop dx</b></p><p> menu 09d, 15d, mes0 </p><p> menu 11d, 15d, mes1</p><p> menu 13d, 15d, mes2</p><p> menu 15d, 15d, mes3</p><p> men
83、u 17d, 15d, mes4</p><p> menu 29d, 15d, mes21</p><p> ;-----------------------------------------------------------------------------------------</p><p> mov ah,02h ;設(shè)置光標(biāo)位置
84、</p><p> mov bh, 00h</p><p> mov dh, 22d</p><p> mov dl, 33d</p><p><b> int 10h</b></p><p><b> keyin:</b></p><p&g
85、t; mov ah, 07h ;從鍵盤(pán)輸入命令字符,無(wú)回顯</p><p><b> int 21h</b></p><p> cmp al, 0dh</p><p> je begin</p><p> cmp al, 'E'</p>&l
86、t;p><b> je exit</b></p><p> cmp al,'c' ;輸入‘c'查詢(xún)分?jǐn)?shù)記錄</p><p> je search</p><p><b> jmp keyin</b></p><p><b> s
87、earch :</b></p><p><b> push dx</b></p><p> clear_screen 0,0,24,79,1eh</p><p> menu 5d,20d,mes22</p><p><b> mov cx,4</b></p><
88、;p> lea si,scores</p><p><b> next33:</b></p><p> mov ah,02h</p><p> mov dl," "</p><p><b> int 21h</b></p><p><
89、b> mov dx,-1</b></p><p> mov ax,[si]</p><p> call writedec</p><p><b> add si,2</b></p><p> loop next33</p><p><b> pop dx&l
90、t;/b></p><p><b> exit:</b></p><p> mov ax, 4c00h</p><p><b> int 21h</b></p><p> ;--------------------------------------------------------
91、------------------------------</p><p><b> begin:</b></p><p> clear_screen 0,0,24,79,0f6h</p><p> menu 6d,28d,mes6</p><p> menu 9d,28d,mes7</p>&l
92、t;p> menu 13d,28d,mes8</p><p> menu 15d,28d,mess8</p><p> SETcusor 0,17,28</p><p> lea dx,mes9</p><p> call readdec</p><p> cmp ax,2 ;選擇游戲的
93、等級(jí)</p><p><b> je done</b></p><p><b> cmp ax,1</b></p><p><b> je done</b></p><p><b> cmp ax,3</b></p><p>
94、;<b> je done</b></p><p><b> cmp ax,4</b></p><p> ;jne begin</p><p><b> jmp done</b></p><p> higher: ;難度增加時(shí)升級(jí)</p>&
95、lt;p><b> push bx</b></p><p> MOV BX,game_time</p><p><b> DEC BX</b></p><p><b> SHL BX,1</b></p><p> mov si,score</p>
96、<p> mov scores[bx],si </p><p> mov numb,0</p><p> mov numb1,0</p><p> mov score,0</p><p><b> mov sum,0</b></p><p> mov sum1,0</p
97、><p> mov bx,grade</p><p> clear_screen 00d, 00d, 24d, 79d,col[bx]</p><p><b> pop bx</b></p><p><b> inc grade</b></p><p> cmp gra
98、de,3</p><p><b> ja ok1</b></p><p><b> jmp ten</b></p><p><b> ok1:</b></p><p><b> jmp ok2</b></p><p> ;
99、------------------------------------------------------------------------------------------</p><p><b> done:</b></p><p> MOV GRADE,AX</p><p> clear_screen 00d, 00d, 24
100、d, 79d,1eh ;清屏</p><p><b> ten:</b></p><p> Init_boarder 00d, 00d, '*', dl, 80d</p><p> Init_boarder 24d, 00d, '*', dl, 80d</p><p> In
101、it_boarder 00d, 00d, '*', dh, 25d</p><p> Init_boarder 00d, 79d, '*', dh, 25d ;初始化邊框</p><p> clear_screen 02d, 02d, 23d, 78d,1eh; 清屏(邊框還存在)</p><p> Init_board
102、er 23d, 01d, 01h, dl, 78d; 在倒數(shù)第二行顯示一行笑臉</p><p> SETCUSOR 0,01,8 </p><p> lea dx,mes14</p><p> mov ax,numb1</p><p> call writedec</p><p> SETC
103、USOR 0,01,35</p><p> lea dx,mes12</p><p> mov ax,numb</p><p> call writedec</p><p> SETCUSOR 0,01,55</p><p> lea dx,mes13</p><p>
104、mov ax,score</p><p> call writedec ;顯示已輸擊字母數(shù),正確的字母數(shù)和分?jǐn)?shù)</p><p> ;----------------------------------------------------------------------------------------</p><p> mov ah, 02
105、h</p><p> mov bh, 00h</p><p> mov dh, 02h</p><p> mov dl, 02h</p><p> int 10h ;將光標(biāo)設(shè)置在第一行第一列</p><p> mov cx, 78 </p><p> lea si,
106、 letters</p><p> nextletter:mov ah, 02h; 顯示字母</p><p> mov dl,[si]</p><p><b> int 21h</b></p><p><b> inc si</b></p><p> lo
107、op nextletter</p><p> ;-----------------------------------------------------------------------------------------</p><p> start_game:;游戲開(kāi)始</p><p> mov time,0</p><
108、;p> mov ah, 2ch</p><p> int 21h;取系統(tǒng)時(shí)間,返回一個(gè)0—99的數(shù),在dl里</p><p><b> inc dl</b></p><p><b> cmp dl,78</b></p><p><b> jna sg1&l
109、t;/b></p><p><b> sub dl,78</b></p><p><b> sg1:</b></p><p> mov present_position, dl</p><p> lea di, letters</p><p> add di,
110、 word ptr present_position ;di指向即將掉落的字母</p><p><b> dec di</b></p><p> mov dl, present_position</p><p> mov ah, 02h</p><p> mov bh, 00h</p><
111、p> mov dh, 02h</p><p> int 10h ;將光標(biāo)設(shè)置在第一行和當(dāng)前列的位置</p><p> mov cx, 20d;總共有20行是空的</p><p> ;----------------------------------------------------------------------------
112、-------------</p><p><b> nextrow: </b></p><p><b> push cx</b></p><p> MOV BX,GRADE</p><p><b> DEC BX</b></p><p><
113、;b> SHL BX,1</b></p><p> mov cx,speed[bx]</p><p> wait_for_key:</p><p><b> push cx</b></p><p> mov cx,yanchi[bx]; 延遲 </p><p>
114、 delay:loop delay</p><p><b> push dx</b></p><p> mov ah, 06h ; 從鍵盤(pán)輸入字符</p><p> mov dl, 0ffh</p><p><b> int 21h</b></p><p>
115、;<b> pop dx</b></p><p> jz pass;zf=1表示沒(méi)有輸入字符,zf=0表示有字符輸入</p><p> cmp al, 1bh ; 如果鍵入ESC,則返回主菜單</p><p> je to_start</p><p> cmp al, " &quo
116、t;; 如果鍵入SPACE,則游戲暫停</p><p><b> jne pass0</b></p><p> jmp pause</p><p><b> ok2:</b></p><p><b> jmp ok3</b></p><p
117、><b> midstep:</b></p><p> jmp nextrow</p><p> ;------------------------------------------------------------------------------------------</p><p><b> pause:
118、 </b></p><p> push dx; 暫停處理</p><p> mov ah, 06h</p><p> mov dl, 0ffh</p><p><b> int 21h</b></p><p><b> pop dx</b><
119、;/p><p> cmp al, " "</p><p> jne pause</p><p><b> je pass</b></p><p><b> jmp pass0</b></p><p><b> to_start
120、:</b></p><p> jmp start1</p><p> ;----------------------------------------------------------------------------------------</p><p><b> pass0: </b></p><
121、;p><b> inc numb1</b></p><p><b> push dx</b></p><p><b> push ax</b></p><p> SETCUSOR 0,01,8</p><p> lea dx,mes14</p>&
122、lt;p> mov ax,numb1</p><p> call writedec</p><p><b> pop ax</b></p><p><b> pop dx</b></p><p> SETCUSOR 0,dh,dl</p><p> cmp
123、al,[di] ; 輸入字母正確!則字母消失</p><p> je disappear</p><p><b> jmp pass</b></p><p><b> high1:</b></p><p> jmp higher</p><p><
124、b> kk3:</b></p><p> jmp to_start</p><p> ;--------------------------------------------------------------------------------------</p><p><b> pass:</b></p&
125、gt;<p><b> pop cx</b></p><p> LOOP wait_for_key</p><p><b> down:</b></p><p><b> inc time </b></p><p><b> inc su
126、m</b></p><p> mov ah, 0ah ; 在當(dāng)前光標(biāo)位置寫(xiě)空格</p><p> mov al, " "</p><p> mov bh, 00h</p><p> mov cx, 01h</p><p> int 10h</p>&
127、lt;p><b> inc dh</b></p><p> mov ah, 02h; 改變光標(biāo)位置</p><p> mov bh, 00h</p><p><b> int 10h</b></p><p> mov ah, 0ah; 在當(dāng)前光標(biāo)位置寫(xiě)字母&l
128、t;/p><p> mov al, [di]</p><p> mov bh, 00h</p><p> mov cx, 01h</p><p> int 10h</p><p><b> pop cx</b></p><p> loop midstep
129、;下一行</p><p> ;-------------------------------------------------------------------------------------------</p><p> letter_over:</p><p> mov ah,0ah</p><p> mov al
130、, " "</p><p> mov bh, 00h</p><p> mov cx, 01h</p><p> int 10h</p><p> inc dh ;將光標(biāo)設(shè)置在最后一行</p><p> mov ah, 02h</p><p>
131、 mov bh, 00h</p><p> int 10h</p><p> mov ah, 0ah ;最后行的笑臉消失</p><p> mov al, " "</p><p> mov bh, 00h</p><p> mov cx, 01h</p>
132、<p><b> int 10h</b></p><p> jmp next_letter</p><p> jmp disappear</p><p> jmp disappear</p><p><b> ok3:</b></p><p><b
133、> jmp ok4</b></p><p><b> kk2:</b></p><p><b> jmp kk3</b></p><p> disappear: ; 擊中字母后輸出空</p><p><b> pop cx</b></
134、p><p><b> pop cx</b></p><p> mov ah,0ah</p><p> mov al," "</p><p> mov bh,00h</p><p> mov cx,01h</p><p><b>
135、; int 10h</b></p><p><b> inc numb</b></p><p><b> push bx</b></p><p><b> push dx</b></p><p><b> push ax</b>&l
136、t;/p><p><b> push di</b></p><p> SETCUSOR 0,01,35</p><p> lea dx,mes12</p><p> mov ax,numb</p><p> call writedec ;重新顯示正確字母數(shù)</p>&
137、lt;p> SETCUSOR 0,01,55</p><p> mov si,numb</p><p> mov bx,time</p><p><b> neg bx</b></p><p><b> add bx,21</b></p><p> add
138、sum1,bx</p><p><b> pop bx</b></p><p> add si,sum1</p><p> mov score,si</p><p> lea dx,mes13</p><p> mov ax,score</p><p> cal
139、l writedec;計(jì)算分?jǐn)?shù)并輸出</p><p><b> pop di</b></p><p><b> pop ax</b></p><p><b> pop dx</b></p><p><b> pop bx</b></
140、p><p> jmp next_letter</p><p> ok4:jmp ok</p><p><b> kk11:</b></p><p> jmp kk2;</p><p> next_letter:mov ah, 02h;將光標(biāo)重新設(shè)回</p>&l
141、t;p> mov bh, 00h</p><p> mov dh, 02h</p><p> mov dl, present_position</p><p><b> int 10h</b></p><p><b> jmp high4</b></p>&
142、lt;p> high3:jmp high1</p><p><b> high4:</b></p><p> mov al, [di] ; 出現(xiàn)下一個(gè)新字母的算法</p><p> add al, 7</p><p> cmp al, 7ah</p><p>
143、 jna next_letter1</p><p> sub al, 26</p><p> next_letter1: </p><p> mov ah, 0ah ;顯示al里的內(nèi)容</p><p> mov bh, 00h</p><p> mov cx, 01h</p>
144、<p> int 10h</p><p> mov [di], al ;將新字母寫(xiě)進(jìn)letters</p><p> cmp sum,100</p><p><b> jna done5</b></p><p> inc game_time</p><p&g
145、t; cmp score,80</p><p><b> ja high3 </b></p><p><b> jmp over</b></p><p><b> kk1:</b></p><p><b> jmp kk11</b></p&
146、gt;<p> over: ;游戲結(jié)束</p><p><b> push bx</b></p><p> ;----------------------------------------------------------------------------</p><p> MOV BX,game_t
147、ime</p><p><b> DEC BX</b></p><p><b> SHL BX,1</b></p><p> mov si,score</p><p> mov scores[bx],si </p><p><b> pop bx</
148、b></p><p> clear_screen 0,0,24,79,1eh</p><p> SETCUSOR 0,10,2</p><p> lea dx,mes10 ;是否繼續(xù)游戲</p><p> mov ah,09h</p><p><b> int 21h&
149、lt;/b></p><p> SETCUSOR 0,11,2</p><p> lea dx,mes15</p><p> call readdec</p><p> cmp ax,1 ;</p><p><b> je kk1</b></p><p>
150、 jmp next11</p><p><b> done5:</b></p><p> jmp start_game</p><p><b> ok:</b></p><p> clear_screen 0,0,24,79,0deh; 等級(jí)達(dá)到最高級(jí)時(shí)顯示“GOOD JOB!”&
151、lt;/p><p> SETCUSOR 0,10,35</p><p> lea dx,mes20</p><p> mov ah,09h</p><p><b> int 21h</b></p><p> ;----------------------------------------
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 微機(jī)原理課程設(shè)計(jì)----打字練習(xí)程序
- vb課程設(shè)計(jì)--打字練習(xí)應(yīng)用程序
- vb課程設(shè)計(jì)報(bào)告---打字程序設(shè)計(jì)報(bào)告
- vb課程設(shè)計(jì)報(bào)告---打字程序設(shè)計(jì)報(bào)告
- VB課程設(shè)計(jì)報(bào)告---打字程序設(shè)計(jì)報(bào)告.doc
- 統(tǒng)計(jì)打字練習(xí)對(duì)錯(cuò)率的程序設(shè)計(jì)課程設(shè)計(jì)
- c語(yǔ)言課程設(shè)計(jì)源程序
- 微機(jī)原理課程設(shè)計(jì)---打字練習(xí)
- 微機(jī)原理課程設(shè)計(jì)--打字計(jì)時(shí)練習(xí)
- vb打字游戲課程設(shè)計(jì)報(bào)告
- c課程設(shè)計(jì)報(bào)告-打字游戲
- vb課程設(shè)計(jì)報(bào)告---打字游戲
- java課程設(shè)計(jì)-- 打字速度測(cè)試程序
- 重疊保留法源程序設(shè)計(jì)課程設(shè)計(jì)
- c語(yǔ)言課程設(shè)計(jì)(成績(jī)管理系統(tǒng))源程序
- 匯編語(yǔ)言課程設(shè)計(jì)報(bào)告---打字游戲
- 匯編課程設(shè)計(jì)打字游戲
- 微機(jī)課程設(shè)計(jì)--指法練習(xí)程序
- 課程設(shè)計(jì)報(bào)告-利用哈希技術(shù)統(tǒng)計(jì)c源程序關(guān)鍵字出現(xiàn)頻度
- 南昌大學(xué)-單片機(jī)課程設(shè)計(jì)-設(shè)計(jì)圖-源程序
評(píng)論
0/150
提交評(píng)論