微機原理課設(shè)_第1頁
微機原理課設(shè)_第2頁
微機原理課設(shè)_第3頁
微機原理課設(shè)_第4頁
微機原理課設(shè)_第5頁
已閱讀5頁,還剩61頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、武漢理工大學微機原理與接口技術(shù)課程設(shè)計說明書目錄摘要I1設(shè)計任務(wù)及其分析11.1設(shè)計任務(wù)11.2設(shè)計任務(wù)分析12.方案論證與比較12.1程序編寫方式12.2字母隨機產(chǎn)生的方式23.系統(tǒng)原理闡述24.軟件設(shè)計說明34.1主程序流程圖34.4游戲界面64.4.1游戲前的提示界面64.4.2游戲界面的初始化74.5字母下落控制84.5.1字母隨機選取84.5.2字母下落延時94.5.3游戲輸入響應(yīng)104.5.4字母下落程序段114.6隨機字母補充HIT134.7游戲暫停函數(shù)PAUSEE144.8字母消失程序段144.8.1字母消失總流程圖144.8.2字母高亮顏色選擇Color_Select函數(shù)15

2、4.8.3發(fā)聲程序Sound2函數(shù)164.8.4字母消失函數(shù)Disappear函數(shù)174.9游戲結(jié)束結(jié)果顯示函數(shù)DISP184.10難度選擇函數(shù)195.程序調(diào)試與運行記錄205.1主界面畫面205.2主界面輸入的錯誤提示215.3游戲運行的畫面225.4難度選擇界面23參考資料25附錄26摘要指法練習程序完成了鍵盤指法練習功能,通過匯編語言的編程實現(xiàn)字母的隨機產(chǎn)生、落下、消失、以及發(fā)聲功能,并且完成了通過鍵盤來控制游戲的開始、暫停、結(jié)束等功能,完成了人機交互界面的編程。除此以外,整個程序采用模塊化設(shè)計,增強了可讀性。通過這一次課程設(shè)計,更加深刻理解了匯編的基礎(chǔ)知識和編寫調(diào)試程序的基本方法。關(guān)鍵

3、詞: 指法練習,匯編,模塊化I1設(shè)計任務(wù)及其分析1.1設(shè)計任務(wù)1.從屏幕上方以一定的時間間隔隨機落下可顯示字符,字符的出現(xiàn)位置亦是隨機的;2.在多個字符下落的過程中可輸入任意鍵,若鍵入與其中的任意一個字符相匹配的鍵,則該字符高亮顯示并發(fā)出蜂鳴聲,同時計分;3.按ESC 鍵結(jié)束練習并顯示命中率;4.按Q 鍵退出。1.2設(shè)計任務(wù)分析根據(jù)任務(wù)的要求可以分析得出在程序應(yīng)有的各個功能模塊:1、字母的隨機出現(xiàn)與顯示;2、字母自動下落顯示;3、鍵盤輸入正確時字母消失;4、字母消失時的字符高亮;5、字母消失時的蜂鳴發(fā)聲;6、命中率計算程序與計分程序。同時在還應(yīng)滿足:1、游戲時按Q 鍵退出;2、在任何情況下按E

4、SC鍵后退,當顯示界面為主界面時,退出程序。本程序在要求的基礎(chǔ)擬添加以下功能:1、游戲難度選擇;2、錯誤輸入提示;3、字符高亮的顏色變化;4、得分的實時顯示。2.方案論證與比較2.1程序編寫方式方式1:僅利用簡單的系統(tǒng)符號指令完成程序優(yōu)點:指令簡單,易于理解缺點:過多的轉(zhuǎn)跳會導(dǎo)致程序可讀性降低方式2:利用宏定義和函數(shù)定義的模塊化程序設(shè)計優(yōu)點:程序?qū)崿F(xiàn)模塊化,可讀性高缺點:指令難度偏大根據(jù)要求的以及預(yù)想的功能實現(xiàn),程序需要實現(xiàn)的功能模塊達到10個之多,用方式1編程必然使程序雜亂不易讀,所以決定選擇方式2來進行編程。2.2字母隨機產(chǎn)生的方式方式1:讀取系統(tǒng)時間的秒位作為選擇基數(shù)優(yōu)點:結(jié)果近似隨機缺

5、點:秒位時間過長,有可能導(dǎo)致隨機失敗方式2:讀取系統(tǒng)時間的1/100秒位作為選擇基數(shù)優(yōu)點:相對打字游戲來說,變化速度上滿足要求缺點:不是完全隨機因為在8086系統(tǒng)中,沒有產(chǎn)生隨機數(shù)的函數(shù)可供調(diào)用,所以只能利用BIOS中斷或者DOS中斷來產(chǎn)生隨機數(shù)作為選擇基數(shù)。而系統(tǒng)時間秒位相對指法練習程序來說速度過慢,因此選擇方式2。3.系統(tǒng)原理闡述從設(shè)計任務(wù)與要求可以得知編寫此程序的基本原理,編寫一個主程序和若干個子程序來完成任務(wù)所要求的功能,與此同時,程序盡量模塊化,功能化,讓程序看起來更加簡潔明了。整個程序的流程是:首先調(diào)用初始化子程序,對系統(tǒng)參數(shù)和界面進行初始化,然后調(diào)用輸入功能選擇程序,以此對功能進

6、行選擇,根據(jù)用戶的選擇來調(diào)用不同的子程序;同時應(yīng)該能產(chǎn)生隨機數(shù)使字母能夠隨機產(chǎn)生;最后在游戲結(jié)束時調(diào)用分數(shù)顯示子程序。具體的子程序在程序功能說明中詳細講到,此處不再贅述。4.軟件設(shè)計說明4.1主程序流程圖圖1.主程序原理圖主程序的流程圖如圖1所示。程序運行時,首先利用Menu,Init_game和Clean三個實現(xiàn)宏定義過的函數(shù)進行初始化。其中Init_game的功能是循環(huán)輸出,用于初始化界面,Menu的功能是在界面上輸出字符串,用于界面信息的顯示,Clean的功能是清理屏幕。初始化完畢后,進入人機交互的階段,此時用戶需要輸入各功能對應(yīng)的數(shù)字進行供選擇。若輸入為1,則直接開始游戲; 若輸入為2

7、,則進入速度選擇, 若輸入為3或者Esc,則退出程序;若輸入為其它則轉(zhuǎn)跳otherkey顯示錯誤輸入信息,提示用戶輸入了錯誤信息并重新選擇。4.2宏定義函數(shù)圖2宏定義函數(shù)流程圖宏定義函數(shù)的流程圖如圖2所示。由圖可見,Init_game函數(shù)首先設(shè)置光標到指定位置,然后輸出字符,重復(fù)次數(shù)也是用函數(shù)帶入的參數(shù)決定。Clean函數(shù)主要調(diào)用了BIOS中斷的屏幕初始化功能(AH=6,INT10H),并且CL,CH,DH,DL四個參數(shù)也由函數(shù)帶入的參數(shù)決定,那么Clean函數(shù)可以局部清理,可以在程序的其它位置使用到。Menu函數(shù)主要調(diào)用了DOS中斷的的顯示字符串功能(AH=09,INT21H),主要用于提示

8、信息的輸入,在多處使用到,除了在主程序初始化時使用到外,使用的地方還包括難度選擇程序,游戲前的提示界面,游戲時界面下方生命值和得分顯示以及游戲結(jié)束后命中率的顯示。4.3按鍵錯誤處理程序運行在主界面,用戶需要進行輸入選擇時,有可能輸入有誤。如果輸入有誤,程序會轉(zhuǎn)跳到Otherkey程序中進行處理。程序首先回顯有誤字符,并且在相應(yīng)位置顯示錯誤提示信息,通知用戶。然后輸入有誤的地方輸出空格,最后轉(zhuǎn)跳到INPUT,讓用戶重新輸入。圖3 Otherkey流程圖4.4游戲界面4.4.1游戲前的提示界面圖4 提示界面流程圖游戲提示界面的流程圖如圖4所示。在主程序運行時,如果輸入為1,則程序進入游戲界面。首先

9、進入一個游戲提示界面,該界面通知用戶,按任意鍵開始,按Esc退出,通知用戶在游戲時按Esc鍵或Q鍵退出,按空格鍵暫停。并且顯示該界面時,如果用戶按下Esc鍵可返回上層,如果按下非Esc的任意鍵即可進入游戲界面并且進行游戲界面的初始化。4.4.2游戲界面的初始化圖5 游戲初始化流程圖游戲初始化流程圖如圖5所示。游戲初始化時隨機產(chǎn)生字母,方法是:調(diào)用OUTPUT_LETTERS函數(shù),讀取系統(tǒng)時間的1/100秒的數(shù)值保存在DL中,將這個值轉(zhuǎn)移到AL然后以26為除數(shù)進行除法運算,得到的余數(shù)存在AH中,以這個結(jié)果作為產(chǎn)生字母的序號數(shù)。根據(jù)ASCII碼表可知,根據(jù)這個序號得到對應(yīng)字母的ASCII碼值,只需

10、要在數(shù)值在原數(shù)加61H即可。在界面的第一行被填滿之后,利用宏定義的Menu函數(shù)在指定位置顯示生命值和分數(shù)。隨后轉(zhuǎn)跳Game,進入游戲階段。4.5字母下落控制4.5.1字母隨機選取圖6 字母隨機選取流程圖字母隨機選取流程圖如上圖6所示。在游戲初始化中,只是在第一行顯示了可能落下的字母。字母隨機選取則是在第一行顯示的字母中隨機選取。首先把系統(tǒng)時間的1/100秒位數(shù)值賦給變量Position。當Position為0時,不符合程序要求,所以令Position自加1,當Position為78-99時,超出了游戲界面的范圍,令Position自減78.這樣可以保證Position作為列數(shù)輸出。4.5.2字

11、母下落延時圖7字母下落延時字母下落延時的流程圖如圖7所示。首先令CX=0,然后自加,以SPED1為界,若數(shù)值超過便跳出循環(huán),若數(shù)值低于SPED1,則繼續(xù)執(zhí)行循環(huán)指令,直到數(shù)值超過位置。4.5.3游戲輸入響應(yīng)圖8 游戲輸入響應(yīng)流程圖游戲輸入響應(yīng)流程圖如圖8所示。調(diào)用DOS中斷的控制臺I/O功能(AH=6,INT21H)來判斷用戶的輸入字符,并且根據(jù)輸入的不同對做出不同響應(yīng)。當用戶沒有輸入時進入PASS程序段,PASS程序段用來控制字母的下落,后面會有介紹,此處不贅述。當用戶在游戲時按Esc鍵結(jié)束游戲,并且調(diào)用DISP函數(shù)輸出并顯示分數(shù)和命中率,之后按任意鍵可跳轉(zhuǎn)到主界面上。當用戶啊按空格鍵時調(diào)用

12、PAUSEE函數(shù)暫停。當用戶輸入無關(guān)字符時,程序同樣進入PASS程序段,使字母繼續(xù)下落。當用戶輸入的是下落的字母時,程序轉(zhuǎn)跳到Disappear程序段中,是該字母消失,并且右下角的分數(shù)顯示實時更新。4.5.4字母下落程序段字母下落程序段由兩部分組成,一部分是PASS延時段,一部分是PRINT顯示段。圖9 PASS程序段流程圖PASS程序段流程圖如圖9所示。因為現(xiàn)在計算機的處理速度相對較快,而8086寄存器能存儲的最大數(shù)值只有65535,如果只使用一個自加或自減延時,那么延時時間過短,用戶根本來不及反應(yīng),所以這里使用PASS延時與前面的字母下落延時構(gòu)成嵌套延時,來增加游戲的可用性。圖10 PRI

13、NT程序段流程圖PRINT程序段流程圖如圖10所示。PRINT程序段的第一個作用是產(chǎn)生下落的視覺效果,方法是:讀取字母所在光標位置,然后在這個位置上輸出空格,延時后然后把光標移到下一行,列數(shù)不變,在光標位置輸出該字符,如此循環(huán)產(chǎn)生下落效果。PRINT程序段的第二個作用控制游戲界面上的生命值LIFE的實時顯示,方法是:當字母開始下落時,對字母下落的行數(shù)進行計數(shù),當這個數(shù)超過了可用行數(shù)的最大值時,LIFE便自動減1,并把光標移到對應(yīng)位置輸出。同時,如果LIFE=0,程序轉(zhuǎn)跳到主界面,游戲結(jié)束;如果LIFE>0,程序轉(zhuǎn)跳到HIT程序段將剛才下落的字母的空位再次補上隨機產(chǎn)生的字母。4.6隨機字母

14、補充HIT圖11 HIT程序段流程圖如上圖11是HIT程序段流程圖。隨機字母補充程序段的作用是,在游戲中某一個字母落下之后,重新隨機產(chǎn)生一個字母補充在第一行的空白處。該段程序首先把光標移到空出的位置處,然后隨機產(chǎn)生字母(字母隨機產(chǎn)生的方法如前所述)并填充,最后轉(zhuǎn)跳到GAME程序段(也就是字母隨機選取段)繼續(xù)游戲。4.7游戲暫停函數(shù)PAUSEE圖12 PAUSEE函數(shù)流程圖PAUSEE函數(shù)流程圖如圖12所示。在用戶玩游戲的時候,按下空格即可調(diào)用PAUSSE函數(shù)。PAUSSE函數(shù)的流程很簡單,調(diào)用一個DOS的輸出中斷,若無輸入,程序就停在這里,形成暫停效果。程序處在暫停函數(shù)中時,輸入Esc則調(diào)用D

15、ISP函數(shù),輸出正確率和最終得分等信息,輸入空格程序轉(zhuǎn)跳到PASS繼續(xù)執(zhí)行,字母繼續(xù)下落。4.8字母消失程序段4.8.1字母消失總流程圖由圖7游戲輸入響應(yīng)流程圖可知,當字母下落時輸入屏幕上顯示的字母,程序轉(zhuǎn)跳To_disappear程序段,此時字母消失并且高亮,與此同時,蜂鳴器發(fā)出聲音。該程序段的流程圖如下圖13所示。該程序段首先調(diào)用Color_Select函數(shù)使字母高亮,并且顯示不同的顏色;Color_Select函數(shù)返回后Sound2函數(shù)又被調(diào)用,是蜂鳴其發(fā)出固定頻率的響聲;Sound2函數(shù)返回后Disappear函數(shù)又被調(diào)用使字母消失,同時刷新并顯示游戲界面分數(shù)。Disappear函數(shù)不

16、返回,轉(zhuǎn)跳到HIT程序段隨機補充字母。圖13 To_disappear總流程圖4.8.2字母高亮顏色選擇Color_Select函數(shù)Color_Select函數(shù)流程圖如下圖14。程序的流程如下:首先獲取光標位置,將行號和列號保存起來,然后根據(jù)變量color(在1到3之間變化)的值來確定輸出的顏色,最后把光標移至原來的位置,輸出字符。輸出字符時調(diào)用的是BIOS中斷(AH=09H,INT10)。調(diào)用該中斷時,BL的值決定了字母顯示的顏色,所在color等于不同的值時,將BL置不同的值即可。程序中設(shè)定的是當color=1時, 輸出字母紅色;當color=2時,輸出字母粉紅色;當color=3時,輸出

17、字母黃色,并將color清零。圖14 Color_Select函數(shù)流程圖4.8.3發(fā)聲程序Sound2函數(shù)8086架構(gòu)的處理器中都集成有8253/54,這種芯片有3個計數(shù)器。只要控制其端口,給它裝入初值計數(shù)便可產(chǎn)生一定頻率的波形。讓這個波形通過蜂鳴器便可使蜂鳴器發(fā)出一定頻率的響聲。具體Sound2流程圖如圖15所示。圖15 Sound2函數(shù)流程圖4.8.4字母消失函數(shù)Disappear函數(shù)Disappear函數(shù)流程圖如下圖16所示。因為在下落延時程序段有兩個PUSH CX的操作,并且利用CX計數(shù),所以在函數(shù)連續(xù)兩個POP CX操作,這樣才不至于前面的計數(shù)出現(xiàn)錯誤,導(dǎo)致整個程序不能運行。圖16

18、Disappear函數(shù)流程圖4.9游戲結(jié)束結(jié)果顯示函數(shù)DISP當游戲中按下Esc鍵,Q鍵或者是生命值LIFE=0時,顯示函數(shù)DISP都會被調(diào)用出來顯示游戲分數(shù),失分數(shù)以及命中率。DISP函數(shù)的流程是,首先在指定位置顯示提示性字符,接著將游戲分數(shù)從十六進制轉(zhuǎn)化為兩個十進制數(shù)分別顯示出來。顯示失分數(shù)時,不需要拆分成2個十進制數(shù)顯示,因為失分數(shù)與生命值的和為9,即error+LIFE=9,所以error的值最大為9,不需要進行十六到十進制的轉(zhuǎn)化。DISP函數(shù)的流程圖如下圖17所示。圖17 DISP函數(shù)流程圖4.10難度選擇函數(shù)當在主界面輸入2時,程序會進入難度選擇函數(shù),實現(xiàn)難度選擇的功能。打字游戲的

19、難度只取決于速度,所以難度選擇也可以認為是速度選擇,速度越大,難度越大。由圖6可是SPED1大小直接決定了字母下落的速度,SPED1越大,字母下落速度越慢,SPED1越小,字母下落速度越快。因此調(diào)節(jié)難度直接對應(yīng)這改變SPED1的大小,程序中三個難度easy,normal, hard 分別對應(yīng)的SPED1的值為50000,40000,20000。難度選擇函數(shù)流程圖如下圖18所示。圖18 Speed_Choose函數(shù)流程圖5.程序調(diào)試與運行記錄5.1主界面畫面程序程序運行時首先進入主界面功能輸入選擇階段,如下圖19所示。圖19 主界面5.2主界面輸入的錯誤提示當輸入無關(guān)字符,程序會轉(zhuǎn)跳至Other

20、key程序執(zhí)行,輸入錯誤提示信息。如下圖20是無關(guān)字符4輸入前的畫面,下圖21是無關(guān)字符4輸入后的畫面。圖20 4輸入前的畫面圖214輸入后的畫面5.3游戲運行的畫面游戲運行滿足設(shè)計要求,并且高亮的顏色能夠改變,游戲運行的畫面如圖22所示。游戲結(jié)束時會出現(xiàn)分數(shù),失誤數(shù)以及命中率的提示語,如下圖23所示。圖22 游戲運行的畫面圖23 游戲結(jié)束的分數(shù)畫面5.4難度選擇界面進入難度選擇界面,輸入1,2,3分別對應(yīng)不同的難度。如下圖23是輸入2選擇成功之后的信息提示。難度選擇成功后,數(shù)字后會出現(xiàn)提示語“Done”。當輸入無關(guān)字符是,難度選擇界面也會有提示信息,如下圖24所示。圖23 難度設(shè)置成功的畫面

21、圖24 難度選擇無關(guān)輸入時的界面6.總結(jié)參考資料1沈美明、溫冬嬋編著.IBM-PC匯編語言程序設(shè)計. 北京:清華大學出版社.2010.6 2劉其明. 匯編語言程序設(shè)計教程. 江蘇:中國礦業(yè)大學出版社, 2010.103姚燕南.微型計算機原理(第五版).西安:西安電子科技大學出版社.2008.104王爽.匯編語言(第二版).北京:清華大學出版社.2008.45羅云彬.匯編語言程序設(shè)計.北京:電子工業(yè)出版社.2002.10附錄1.程序清單:;*指法練習程序*;*作者:電氣1101唐志偉* INIT_GAME MACRO OP1,OP2,OP3,OP4,OP5,OP6 ;循環(huán)輸出,用于初始化界面 M

22、OV CX,0 MOV DH,OP1 ;起行 MOV DL,OP2 ;起列 OP6: MOV AH,02H MOV BH,00H INT 10H PUSH CX MOV AH,0AH MOV AL,OP3 ;要顯示的字符 MOV CX,01H MOV BH,00H INT 10H POP CX INC CX INC OP4 ;指出循環(huán)輸出的是行還是列 CMP CX,OP5 ;循環(huán)次數(shù) JNE OP6 ENDM CLEAN MACRO OP1,OP2,OP3,OP4 ;用于清屏,分別是起止的行和列 MOV AH,6 MOV BH,00010111B MOV AL,0 MOV CH,OP1 MOV

23、 CL,OP2 MOV DH,OP3 MOV DL,OP4 INT 10H MOV AH,2 MOV BH,0 MOV DH,0 MOV DL,0 INT 10H ENDM MENU MACRO OP1,OP2,OP3 ;用于屏幕上文字的輸出 MOV CX,0 MOV AH,02H MOV BH,00H MOV DH,OP1 MOV DL,OP2 INT 10H LEA DX,OP3 MOV AH,9 INT 21H ENDM DATA SEGMENT FGF DB '=$' MENU1 DB '1.start game$' MENU2 DB '2.se

24、lect level$' ;主界面上顯示的內(nèi)容 MENU3 DB '3.exit$' MENU4 DB 'select number of menu:$' MENU5 DB 'author: TangZhiwei$' MENU6 DB 'NO. : 0121111350114$' MENU7 DB '1.very easy$' MENU8 DB '2.normal$' ;難度的選擇 MENU9 DB '3.hard$' MENU10 DB '4.return$'

25、; MENU11 DB 'data : 2013.1.8$' MENU12 DB 'Please input right number$' MENU13 DB 'Done$' MEG1 DB 'press any key to start the game.$' MEG2 DB 'press esc key return main menu$' MEG3 DB 'press space key for pause $' MEG4 DB 'when the game was paused,pr

26、ess ese to quit!$' MEG5 DB 'life:$' ;生命數(shù) MEG6 DB 'score:$' ;分數(shù) MEG7 DB 'hit the letter num:$' MEG8 DB ' miss letter num:$' MEG9 DB ' the shooting is:$' MA DB 0 MB DB 0 SPED1 DW 0 SPEED DW 3000D ;游戲的速度 LETTERS DB 78 DUP(0) ;上方顯示的字母 LIFE DB 39H POSITION DB 1

27、 ;上方字母的位置用于控制落下的字母 TIME_M DB 0 TIME_S DB 0 XMUL DB 13 N DB 26 SCORE1 DB 0 LEVEL DB 1 HANG DB 0 LINE DB 0 FEN1 DB 0 FEN2 DB 0 FEN3 DB 0 FEN4 DB 0 FEN5 DB 0 STRING DB '100%$' ERROR DB 0 COLOR DB 0 ROW DB 0 CODE SEGMENT ASSUME CS:CODE,DS:DATA ;*初始化首端* START: MOV AX,DATA MOV DS,AX MOV POSITION,1

28、 MOV SPEED,3000 MOV LEVEL,1 MOV SPED1,50000 MOV ERROR,0 MOV SCORE1,0 JIEMIAN: ;主界面的初始化 MOV AH,01H MOV CX,00H OR CH,00010000B INT 10H CLEAN 0,0,24,79 INIT_GAME 0,0,08H,DL,80,SK1 INIT_GAME 24,0,08H,DL,80,SK2 INIT_GAME 0,0,08H,DH,25,SK3 INIT_GAME 0,79,08H,DH,25,SK4 MENU 5,15,FGF MENU 7,25,MENU1 MENU 9,

29、25,MENU2 MENU 11,25,MENU3 MENU 13,15,FGF MENU 15,25,MENU4 MENU 17,55,MENU5 MENU 19,55,MENU6 MENU 21,55,MENU11;*初始化尾端*;*功能選擇首端* MOV AH,2 MOV BH,0 MOV DH,15 MOV DL,47 INT 10H MOV AH,0AH MOV AL,32 MOV BH,00H MOV CX,01H INT 10H INPUT: MOV AH,1 INT 21H CMP AL,49 ;若輸入是'1',則進入游戲 JE BEGIN CMP AL,50

30、;若輸入是'2',則進入速度選擇函數(shù) JE TO_SPEED_CHOOSE JMP JIXU4 TO_SPEED_CHOOSE: CALL SPEED_CHOOSE JIXU4: CMP AL,51 ;若輸入是'3'或'ESC',則退出游戲 JE TO_EXIT CMP AL,1BH JE TO_EXIT_D TO_OTHERKEY: ;若輸入是其它鍵,則轉(zhuǎn)跳OtherKey,進行錯誤信息處理 JMP OTHERKEY TO_EXIT: MOV AH,1 INT 21H CMP AL,0DH JNE TO_OTHERKEY JMP EXITT T

31、O_EXIT_D: JMP EXITT;*功能選擇首端*;*打字游戲主程序首端* BEGIN: MOV AH,1 INT 21H CMP AL,0DH JNE TO_OTHERKEY CLEAN 1,1,23,78 PLAY_MESSAGE: ;游戲開始前的提示語 MENU 10,18,MEG1 MENU 12,18,MEG2 MENU 14,18,MEG3 MENU 16,18,MEG4 MOV AH,07H INT 21H CMP AL,1BH ;按任意鍵繼續(xù),'Esc'除外 JE TO_JM ;不把輸入的字符顯示在屏幕上 JMP PLAY TO_JM: JMP JIEMI

32、AN ;若按'Esc',則轉(zhuǎn)跳主界面 PLAY: CLEAN 1,1,23,78 MOV LIFE,39H MOV AH,2 MOV BH,0 MOV DH,1 MOV DL,1 INT 10H MOV BX,0 LEA SI,LETTERS CALL OUTPUT_LETTERS ;在游戲界面的首行顯示下落的字母 NEXT: CALL DISPLAY_LIFE_SCORE1 ;在游戲界面下顯示 1.剩余生命值life和2.分數(shù)Score1 SUB_P: ;字母選擇及下落程序段 SUB POSITION,78 CMP POSITION,0 JNE NEXT3 INC POSIT

33、ION NEXT3: JMP GAME_NEXT GAME: LEA SI,LETTERS MOV AH,2CH ;取系統(tǒng)時間產(chǎn)生隨機數(shù),確定落下字母的列號 INT 21H MOV AL,DL MOV POSITION,AL ;position為字母的列號 CMP POSITION,0 JNE NEXT2 INC POSITION NEXT2: CMP POSITION,78 JA SUB_P GAME_NEXT: ADD SI,WORD PTR POSITION DEC SI MOV DL,POSITION MOV AH,02H MOV DH,1 MOV BH,0 INT 10H MOV B

34、L,12H TEMP: MOV CX,0 NEXTROW: PUSH CX MOV CX,0 YANCHI: PUSH CX MOV CX,0 YANCHI1: ADD CX,1 CMP CX,SPED1 JNE YANCHI1 PUSH DX MOV AH,06H MOV DL,0FFH INT 21H POP DX CMP AL,0 JZ PASS SKIP1: CMP AL,81 JE DISPLAY_1 ;輸入'Q'退出 CMP AL,32 JE PAUSEEE ;輸入空格暫停 CMP AL,1BH JE DISPLAY_1 ;輸入Esc退出 JMP JIXU2 PAUSEEE: CALL PAUSEE DISPLAY_1: JMP DISPLAY1 JIXU2: CMP AL,SI JE TO_DISAPPEAR ;若輸入與下落字母一樣,則高亮后消失并且計分 JMP PASS ;若輸入與下落字母不一樣,則繼續(xù)下落 TO_DISAPPEAR: CALL COLOR_SELECT FASHENG: CALL SOUND2 JIXU3: CALL DISAPPEAR PASS: POP CX INC CX CMP CX,SPEED ;SPEED為常數(shù) JE PRINT1 JMP YANCHI PRINT1: JMP PRINT DI

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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

提交評論