1、2到达限定时间,用户得分达到预设的值时, 自动提高难度等级,屏幕变色;3修改程序,底行的笑脸字母消失后,不再在该列下落字母(提示:设置数组记录笑脸字母的存在与否)。笑脸字母全部消失后,游戏停止,显示告别画面,显示用户成绩。其他任务自行设计新的功能。二、对课程设计成果的要求(包括课程设计说明书、图纸、图表、实物等软硬件要求)1分析原“typetest.asm”程序结构(见附件),画出主程序粗略的流程图和各个模块的详细流程图,每个功能模块用文字说明他们的功能(与对应流程图放在一起);2对已经实现的功能(修改的、新编写的)做详细的说明, 并附上流程图及程序清单(修改/增加的指令请使用大写字母,以示区
2、别);3对该“打字练习程序”的进一步设想;4对于有设想但最终未实现的功能的大致编程思路的阐述;5论述在设计过程中遇到的并且对你具有启发性的问题三、课程设计工作进度计划:周一:布置任务,介绍程序功能和基本模块。学生仔细阅读原始源程序,在重要行添加注解。周二:画出主程序粗略的流程图和各个模块的详细流程图,对课程设计的基本任务进行设计,并开始编程。周三周四:设计程序及调试程序。同时着手撰写课程设计报告。周五:完成设计,提交开发完成的程序和课程设计报告,接受教师考评。四、主要参考资料1 杨文显,宓双,胡建人新编汇编语言程序设计清华大学出版社,20102 朱玉龙,任文览等汇编语言程序设计清华大学出版社,
3、20033 美Kip R.Irvine. 汇编语言程序设计电子工业出版社,2004指导教师(签名): 教研室主任(签名):杨晶鑫 2014年 6 月 25 日 2014年 6 月 25 日上海应用技术学院课程设计任务书 ii2.22用户密码验证 2.23游戏功能模块 2.24游戏难度选择 2.25游戏计分、计个数、显示已输出字母 2.26游戏自动升级并变色 2.27游戏结束模块1 概述这次课程设计主要是用汇编语言设计一个打字游戏,任务是要设计一个具备输入输出界面、调用宏指令、用户密码设置、显示当天日期,游戏难度级别划分、游戏显示分数、正确的个数等,以及扩展功能限定时间或者到达要求的分数游戏停止
4、、难度等级自动提高屏幕变色,以及底行笑脸消失字母不在此行下落等功能。本程序的设定考虑到用户使用的方便以及用户资料的保密性,界面简洁方便于用户操作,为此程序的正确性和健壮性尤为重要,所以编写程序时,要不断进行调试,以确保程序没有BUG。1.1 基本功能本游戏有一下几大功能:1.显示功能菜单显示、时间显示、功能显示、字母显示,动态字母。2.用户输入界面,设置安全密码3.当天日期显示4.游戏难度级别划分选择以及自动提升难度。5.为用户打分,正确输入字母使用时间越少,得分越高;6.在屏幕右上角显示用户得分、已输入字母数、正确数;7.结束界面1.2 拓展功能1.3 宏调用为了使代码简化,所以程序中多次用
5、到宏调用。宏定义一:Init_boarder macro row, col, char, dhdl, count ;边框宏定义,row=行,col=列,char=字符,count=次数 Local ll mov cx, count mov dh, row mov dl, colll: mov ah, 02h ;置光标位置,bh=页号,dh/dl=行/列 mov bh, 00h int 10h push cx mov ah, 0ah ;在光标位置显示字符 mov al, char ;al=字符,cx=字符重复次数,bh=显示页 mov cx, 01h pop cx inc dhdl loop l
6、l宏定义二:clear_screen macro top, left, bottom, right,color ; 清屏宏定义 mov ah, 06h ;屏幕初始化 al=上卷行数,bh=卷入行性质 mov al, 00h mov bh, color mov ch, top ;ch/cl=左上角行/列号,dh/dl=右上角行/列号 mov cl, left mov dh, bottom mov dl, right mov ah, 02h ; mov dh, 00h mov dl, 00hendm宏定义三:uangbiao macro page,row,col ;设置光标位置宏定义 mov ah
7、,02H mov bh,page mov dl,col mov dh,row int 10HENDM宏定义四:menu macro row, col, text ; 菜单显示宏定义 mov ah, 09h ;显示字符串,ds:dx=串地址 lea dx, text int 21h2 详细设计说明总程序的详细说明。2.1 原“typetest.asm”程序结构一, 登陆界面二, 显示当天日期三, 消笑脸四, 推出界面图 1 typetest.asm结构图2.2 已经实现的功能(修改的、新编写的)程序结构一, 原有功能1. 登陆界面2. 游戏界面 3. 字体下落4. 字体消失5. 笑脸消失6. 退
8、出游戏二, 修改功能1. 用户密码登陆2. 光标宏调用3. 显示日期4. 游戏打分,字母个数等5. 游戏级别选择6. 游戏难度自动提升三, 拓展功能1. 游戏未达到分数,游戏停止2. 游戏达到预设值,等级提升,并且颜色改变3. 显示告别时显示用户成绩2.2.1 用户界面界面代码menu 09d, 15d, mes0menu 11d, 18d, mes1menu 13d, 18d, mes2menu 15d, 18d, mes3menu 17d, 15d, mes4guangbiao 00h,22d,33d ;设置光标位置,bh=页号,dh/dl=行/列 keyin: mov ah, 07h ;
9、 从键盘输入命令字符 int 21h cmp al, 0dh je begin1 ; 输入为回车开始 cmp al, E je exit cmp al, e je exit ;按e退出 jmp keyin ;否则回到界面exit: mov ax, 4c00h 2.2.2 用户密码验证NoYes用户密码验证代码:NEW: mov putnum,0 mov righnum,0 mov score,0 mov cishu,0 mov gametime,0 mov colour,0fh clear_screen 00d, 00d, 24d, 79d,079h ;全屏清屏Init_boarder 00d
10、, 00d, 0ah, dl, 80d ;边框Init_boarder 24d, 00d, 0ah, dl, 80d ;Init_boarder 00d, 00d, 0ah, dh, 25d ;Init_boarder 00d, 79d, 0ah, dh, 25d ;clear_screen 01d, 01d, 23d, 78d,079h ;清屏,保留外部边框menu 10d, 18d, mes5 ;显示输入密码 mov si,0 ;si代表密码下标 mov cx,10 ;一共10位数字,验证10次next: mov ah, 07h ;从键盘输入一个字符,在al中 push ax mov dl
11、,* ;输入一个字符,显示一个,显示字符在dl上 mov ah,02h pop ax cmp al,passwordssi ;10个字符一个一个比较 jne wrong ;如果输入字符错误,跳转到WRONG inc si loop next ;如果正确就继续循环 jmp start0 ;全部对比完毕,如果正确跳转到START1wrong: mov si,0h jmp NEW2.2.3 游戏功能模块2.2.4 游戏难度选择源代码; - *选择游戏难度*begin1:边界不清,其他中间清屏menu 5d,30d,mes7 ;游戏难度menu 8d,30d,mes8menu 11d,30d,mes9
12、menu 14d,30d,mes10guangbiao 0,19,28 lea dx,mes11 ;选择游戏的等级,对应等级,赋值 call readdec cmp ax,2 je done cmp ax,1 cmp ax,3 cmp ax,4 jmp begin1 ;选择错误,则重新选择 *游戏难度升级*(达到最高级,则退出)higher: ;难度升级 push bx mov GAMETIME,0 ;游戏次数 inc dengji ;等级 mov BX,dengji pop BX cmp dengji,4 jna jixu ;不高于4,则转向JIXU jmp VERY_GOOD ;如果已经是
13、最高等级,则退出,显示gooddone: mov dengji,ax jixu: 清屏Init_boarder 23d, 01d, 01h, dl, 78d ;设置笑脸边框在最后第二排,01h代表笑脸 mov bx,dengji ;根据等级选择速度等级 dec bx shl bx,1 ;逻辑左移 mov cx,speedBXwait_for_key:延迟 push cx mov cx,yanchiBX ;需要修改2.2.5 游戏计分、计个数、显示已输出字母 - *显示必要数值*guangbiao 0,0,8 lea dx,mes12 ;显示已输出的字母 mov ax,putnum call w
14、ritedecguangbiao 0,0,35 lea dx,mes13 ;显示正确的字母数 mov ax,righnumguangbiao 0,0,58 lea dx,mes14 ;显示分数 mov ax,scorepass0: INC PUTNUM ;输入字母个数加一 mov bh,0 mov ah,3 int 10h PUSH DX PUSH AXguangbiao 0,0,8 ;光标位置设定 LEA DX,MES12 ;显示的输入个数加一 MOV AX,PUTNUM CALL WRITEDEC POP AX POP DX push ax MOV AX,RIGHNUM ;如果输入的数有5
15、个错的,则自动退出 ADD AX,5 CMP AX,PUTNUM JNZ TUI jmp JIESHUTUI: pop axGUANGBIAO 0,DH,DLGUANGBIAO 00h,dh,dl mov ah, 0ah mov al, INC CISHU ;次数 CMP CISHU,10 JNE NEX JMP JIESHU ;10次没有输入结束INC RIGHNUM PUSH BX ;进栈 PUSH DX ; PUSH AX ; PUSH DI ; GUANGBIAO 0,00,35 LEA DX,MES13 ;显示正确提示 MOV AX,RIGHNUM CALL WRITEDEC GUA
16、NGBIAO 0,00,58 MOV SI,SCORE ;si代表分数 MOV BX,DENGJI ADD SI,BX MOV SCORE,SI LEA DX,MES14 ;计算分数并输出 MOV AX,SCORE ; POP DI ;出栈 POP AX ; POP DX ; POP BX ; JMP next_letter ;出现下一个字母 2.2.6 游戏自动升级变色 ; - *选择速度* mov bx,dengji ;HIGHER1:add COLOUR,6 ;改变颜色CLEAR_SCREEN 0,0,24,79,COLOURJMP HIGHER2HIGHER2: JMP HIGHER2.27游戏结束模块 - *计数* - JIESHU:CLEAR_SCREEN 0,0,24,79,079h ;清屏GUANGBIAO 0,5,32 LEA DX,MES14 ; MOV AX,SCOREGUANGBIAO 0,10,31 ;设置光标位置 LEA DX,MES15 ;游戏结束 MOV AH,09H INT 21H GUANGBIAO 0,15,18 ; LEA DX
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1