《汇编语言课程设计打字游戏》由会员分享,可在线阅读,更多相关《汇编语言课程设计打字游戏(21页珍藏版)》请在金锄头文库上搜索。
1、目目 录录1. 课程设计目的及内容21.1 课程设计目的21.2 课程设计内容22. 开发环境22.1 软、硬件环境22.2 MASM 开发环境33.功能分析 33.1 基本功能设计33.2 系统程序流程图 44. 调试和运行程序54.1 程序调试54.2 程序运行65. 课程设计总结86. 参考文献8附录 9 源程序代码 9打字游戏打字游戏1. 课程设计目的及内容课程设计目的及内容1.1 课程设计目的课程设计目的汇编语言是一项实用性很强的技术,学完教学大纲规定的全部内容,完成所有实践环节的基础上,旨在深化学生学习的汇编语言课程基本知识,进一步掌握汇编语言课程设计方法,提高分析问题,解决问题的
2、综合应用能力。学会查阅和汇编语言相关的规范,手册等技术资料。能正确绘制和使用流程图。掌握汇编语言程序设计和程序调试的基本技能,能进行基本的软件设计。1.2 课程设计内容课程设计内容此课程设计中,实现的主要功能是在屏幕的顶端排列一排英文字母,底端对应排列一排小球或小方块,屏幕顶端的英文字母以一定的速度随机下落, 落到底端的小球或小方块处, 小球或小方块消失,但如果在英文字母落到底端前,正确按键(落下的英文字母的键位),则英文字母消失,英文字母消失或落到底端后,顶端原字母的空处出现另一新字母,按空格键则暂停,再按空格键字母继续下落,如过底端小球或小方块消失后,则不再出现。2. 开发环境开发环境2.
3、1 软、硬件环境软、硬件环境软件环境:操作系统:Windows 8 64 位(DirectX 11)、BIOS 系统DOS 系统硬件环境:处理器:英特尔 第三代酷睿 i3-3110M 2.40GHz 双核内存:4GB(三星 DDR3 1333MHz)主硬盘:希捷 ST500LM012 HN-M500MBB (500GB/5400 转/分)显示器:三星 SEC3649(14 英寸)2.2 MASM 开发环境开发环境Masm 是汇编编译器,是微软公司开发的汇编开发环境,拥有可视化的开发界面,使开发人员不必再使用 DOS 环境进行汇编的开发的优点,支持伪指令和宏汇编,最后编译生成 obj 文件,通过
4、 link 工具连接成可执行文件 exe。使用步骤为:a 使用编辑软件 TE.EXE 进行源程序的编写。b 使用汇编软件 MASM.EXE 对源程序汇编。c 使用连接软件 LINK.EXE 对目标文件进行连接。d 使用调试软件 DEBUG.EXE 对可执行程序进行调试。3.功能分析功能分析3.1 基本功能设计基本功能设计(1) 屏幕的顶端排列一排英文字母,底端对应排列一排小球或小方块。(2) 屏幕顶端的英文字母以一定的速度随机下落, 落到底端的小球或小方块处,小球或小方块消失。(3) 在英文字母落到底端前,正确按键(落下的英文字母的键位),则英文字母消失。(4) 按空格键则暂停,再按空格键字母
5、继续下落。(5)英文字母消失或落到底端后,顶端原字母的空处出现另一新字母。(6)底端小球或小方块消失后,不再出现。(7)程序执行后,出现新界面.新界面应包含以下内容:a.显示时间b.按回车键继续c.按 ESC 键返回主界面d.按E键退出程序3.2 系统程序流程图系统程序流程图开始清屏,显示开始界 面按空格键进入打字练习界 面光标初始化在第一行显示由 26 个字母组成的字符 串任一字母下落键入字符输入字母正确吗?消去字母字符为空格键吗?字符为 Esc 键吗?字母暂停键入任意字符返回主界面输入“E”结 束图图 1 打字游戏程序流程图打字游戏程序流程图4. 调试和运行程序调试和运行程序4.1 程序调
6、试程序调试(1)打开 windows 命令窗口,进入 masm 程序的安装目录,汇编源文件,如图2:图图 2 文件链接图文件链接图(2)链接原文件,并运行可执行文件,如图 3:图图 3 运行可执行文件图运行可执行文件图4.2 程序运行程序运行(1)进入主程序段显示提示信息,程序功能实现如图 4 所示:图图 4 程序主界面图程序主界面图(2)按回车键进入打字练习页面,并且开始练习打字,如图 5:图图 5 打字主界面图打字主界面图(3)进入游戏后,随机落下一字母,如果按下空格,则暂停。如图 6 所示:图图 6 游戏中按下空格暂停游戏界面游戏中按下空格暂停游戏界面(4)在打字练习过程中,按空格键暂停
7、,按“ESC”键为返回主页面。最后练习打字结束按“E”退出程序,如图 7 所示:图图 7 回到主界面图回到主界面图5. 课程设计总结课程设计总结在短暂几天的时间里,汇编语言课程设计结束了,我的收获很大。通过课程设计的编程和对编程过程中遇到的问题的思考,有效的提高了我对汇编的认识和理解,切实的提高了我的编程能力,补全了我的不足。通过这次课程设计,我巩固了学过的知识,能用汇编语言熟练地运用顺序、选择、循环三大结构,进一步掌握了各个指令的功能,特别是转向指令,掌握了子程序的定义及调用,以及正确地运用 DEBUG 指令。在整个程序的编写中,调试占了很大部分的时间。要想写好汇编语言的程序,必须认真对待代
8、码的每一个细节,还必须熟练的掌握 debug 命令,这对程序的调试是非常重要的。通过这次实际动手能力的培养,我进一步熟悉了汇编语言的结构和使用方法,基本达到了能独立阅读、编制和调试一定规模的汇编语言程序的水平。6. 参考文献参考文献1 杨文显,宓双,胡建人.新编汇编语言程序设计M,北京:清华大学出版社,2010:20-582 朱玉龙,任文览等.汇编语言程序设计M,北京:清华大学出版社,2003:67-893 吴向军等.汇编语言程序设计M,北京:高等教育出版社,2002:98-1194 沈美明等.IBM-PC 汇编语言及程序设计实验教程M,北京:清华大学出版社 ,2001:45-675 钱晓捷等
9、.汇编语言程序设计M, 北京:电子工业出版社,2000:1-246 李珍香等.汇编语言程序设计案例精编M,北京:中国水利水电出版社,2004:5-167 白小明.汇编语言程序设计M,北京:中国铁道出版社,2009:56-768 王成耀,姚琳.汇编语言程序设计M,北京:机械工业出版社,2003:34-469 范立南, 谢子殿. 单片机原理及应用教程M. 北京:北京大学出版社, 2006.1:123-13010 沈美明等.IBM-PC 汇编语言及程序设计实验教程M,北京:清华大学出版社 ,2001.2:101-113附录:源程序代码INIT_GAME MACRO OP1,OP2,OP3,OP4,O
10、P5,OP6MOV CX,00HMOV DH,OP1MOV DL,OP2OP6: MOV AH,02HMOV BH,00HINT 10HPUSH CXMOV AH,0AHMOV AL,OP3MOV BH,00HMOV CX,01HINT 10HPOP CXINC CXINC OP4CMP CX,OP5JNE OP6ENDMCLEAR_SCREEN MACRO OP1,OP2,OP3,OP4;本段程序主要是通过定义变量和调用实现清屏宏定义 MOV AH,06HMOV AL,00HMOV BH,07HMOV CH,OP1MOV CL,OP2MOV DH,OP3MOV DL,OP4INT 10HMO
11、V AH,02HMOV BH,00HMOV DH,00HMOV DL,00HINT 10HENDMMENU MACRO OP1,OP2,OP3; 本段程序主要是通过定义变量和调用来实现菜单显示宏定义 MOV AH,02HMOV BH,00HMOV DH,OP1MOV DL,OP2INT 10HMOV AH,09HLEA DX,OP3INT 21HENDMDATA SEGMENTZK DB “WELCOME TO PLAY$“NO DB “DATE:2014-6-25$“MEG DB “PRESS ENTER KEY TO CONTINUE.$“MEG1 DB “WHEN A LETTER IS
12、 DROPPING,PLEASE HIT IT!$“MEG2 DB “PRESS SPACE KEY TO PAUSE!$“MEG3 DB “PRESS ESC KEY TO RETURN MAIN INTERFACE!$“MEG4 DB “PRESS LETTER E TO EXIT!$“SPEED DW 600DLETTERS DB “JWMILZOEUCGPRAVSKNTXHDYQFB“DB “IYTPKWNXLSVXRMOFZHGAEBUDJQ“DB “NWIMZOEXRPHYSFQTVDCGLJUKDA“LETTERS_BAK DB “JWMILZOEUCGPRAVSKNTXHDYQ
13、FB“DB “IYTPKWNXLSVXRMOFZHGAEBUDJQ“DB “NWIMZOEXRPHYSFQTVDCGLJUKDA“LETTER_COUNTER DB 0LIFE_FLAG DB 78 DUP(0)POSITION_FLAG DB 78 DUP(0)PRESENT_POSITION DB 1DATA ENDS;本段主要用于主界面的显示,起到提示作用CSEG SEGMENT PARA STACK stackDB 64 DUP(0)ENDSCODE SEGMENTMAIN PROC FARASSUME CS:CODE,DS:DATA,SS:CSEGSTART: MOV AX,DATAMOV DS,AXMOV LETTER_COUNTER,00HMOV PRESENT_POSITION,1LEA SI,POSITION_FLAGMOV AH,00HMOV CX,00HINIT_POSTION_FLAG:MOV SI,AHINC SIINC CXCMP CX,78DJNE INIT_POST