ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:373.50KB ,
资源ID:12090592      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12090592.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(汇编语言课程设计打字游戏.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

汇编语言课程设计打字游戏.docx

1、汇编语言课程设计打字游戏1. 课程设计目的及内容2 1.1 课程设计目的2 1.2 课程设计内容22. 开发环境2 2.1 软、硬件环境2 2.2 MASM开发环境33.功能分析 3 3.1 基本功能设计3 3.2系统程序流程图 44. 调试和运行程序5 4.1 程序调试5 4.2 程序运行65. 课程设计总结86. 参考文献8附录 9 源程序代码 9打字游戏1. 课程设计目的及内容1.1 课程设计目的汇编语言是一项实用性很强的技术,学完教学大纲规定的全部内容,完成所有实践环节的基础上,旨在深化学生学习的汇编语言课程基本知识,进一步掌握汇编语言课程设计方法,提高分析问题,解决问题的综合应用能力

2、。学会查阅和汇编语言相关的规范,手册等技术资料。能正确绘制和使用流程图。掌握汇编语言程序设计和程序调试的基本技能,能进行基本的软件设计。1.2 课程设计内容此课程设计中,实现的主要功能是在屏幕的顶端排列一排英文字母,底端对应排列一排小球或小方块,屏幕顶端的英文字母以一定的速度随机下落, 落到底端的小球或小方块处, 小球或小方块消失,但如果在英文字母落到底端前,正确按键(落下的英文字母的键位),则英文字母消失,英文字母消失或落到底端后,顶端原字母的空处出现另一新字母,按空格键则暂停,再按空格键字母继续下落,如过底端小球或小方块消失后,则不再出现。2. 开发环境2.1 软、硬件环境软件环境:操作系

3、统: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文件,通过link工具连接成可执行文件exe。使用步骤为:a使用编辑软件

4、TE.EXE进行源程序的编写。 b使用汇编软件MASM.EXE对源程序汇编。 c使用连接软件LINK.EXE对目标文件进行连接。 d使用调试软件DEBUG.EXE对可执行程序进行调试。3.功能分析3.1 基本功能设计(1) 屏幕的顶端排列一排英文字母,底端对应排列一排小球或小方块。(2) 屏幕顶端的英文字母以一定的速度随机下落, 落到底端的小球或小方块处,小球或小方块消失。(3) 在英文字母落到底端前,正确按键(落下的英文字母的键位),则英文字母消失。(4) 按空格键则暂停,再按空格键字母继续下落。(5)英文字母消失或落到底端后,顶端原字母的空处出现另一新字母。(6)底端小球或小方块消失后,不

5、再出现。(7)程序执行后,出现新界面.新界面应包含以下内容: a.显示时间 b.按回车键继续 c.按ESC键返回主界面 d.按E键退出程序3.2系统程序流程图图1 打字游戏程序流程图4. 调试和运行程序4.1 程序调试(1)打开windows命令窗口,进入masm程序的安装目录,汇编源文件,如图2:图2 文件链接图(2)链接原文件,并运行可执行文件,如图3:图3 运行可执行文件图4.2 程序运行(1)进入主程序段显示提示信息,程序功能实现如图4所示:图4 程序主界面图(2)按回车键进入打字练习页面,并且开始练习打字,如图5:图5 打字主界面图(3)进入游戏后,随机落下一字母,如果按下空格,则暂

6、停。如图6所示:图6 游戏中按下空格暂停游戏界面(4)在打字练习过程中,按空格键暂停,按“ESC”键为返回主页面。最后练习打字结束按“E”退出程序,如图7所示:图7 回到主界面图5. 课程设计总结在短暂几天的时间里,汇编语言课程设计结束了,我的收获很大。通过课程设计的编程和对编程过程中遇到的问题的思考,有效的提高了我对汇编的认识和理解,切实的提高了我的编程能力,补全了我的不足。通过这次课程设计,我巩固了学过的知识,能用汇编语言熟练地运用顺序、选择、循环三大结构,进一步掌握了各个指令的功能,特别是转向指令,掌握了子程序的定义及调用,以及正确地运用DEBUG指令。在整个程序的编写中,调试占了很大部

7、分的时间。要想写好汇编语言的程序,必须认真对待代码的每一个细节,还必须熟练的掌握debug命令,这对程序的调试是非常重要的。通过这次实际动手能力的培养,我进一步熟悉了汇编语言的结构和使用方法,基本达到了能独立阅读、编制和调试一定规模的汇编语言程序的水平。6. 参考文献1 杨文显,宓双,胡建人.新编汇编语言程序设计M,北京:清华大学出版社,2010:20-582 朱玉龙,任文览等.汇编语言程序设计M,北京:清华大学出版社,2003:67-893 吴向军等.汇编语言程序设计M,北京:高等教育出版社,2002:98-1194 沈美明等.IBM-PC汇编语言及程序设计实验教程M,北京:清华大学出版社

8、,2001:45-675 钱晓捷等.汇编语言程序设计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

9、OP1,OP2,OP3,OP4,OP5,OP6 MOV CX,00H MOV DH,OP1 MOV DL,OP2 OP6: MOV AH,02H MOV BH,00H INT 10H PUSH CX MOV AH,0AH MOV AL,OP3 MOV BH,00H MOV CX,01H INT 10H POP CX INC CX INC OP4 CMP CX,OP5 JNE OP6 ENDM CLEAR_SCREEN MACRO OP1,OP2,OP3,OP4;本段程序主要是通过定义变量和调用实现清屏宏定义 MOV AH,06H MOV AL,00H MOV BH,07H MOV CH,OP1

10、 MOV CL,OP2 MOV DH,OP3 MOV DL,OP4 INT 10H MOV AH,02H MOV BH,00H MOV DH,00H MOV DL,00H INT 10H ENDM MENU MACRO OP1,OP2,OP3 ; 本段程序主要是通过定义变量和调用来实现菜单显示宏定义 MOV AH,02H MOV BH,00H MOV DH,OP1 MOV DL,OP2 INT 10H MOV AH,09H LEA DX,OP3 INT 21H ENDM DATA SEGMENT ZK DB WELCOME TO PLAY$ NO DB DATE:2014-6-25$ MEG

11、DB PRESS ENTER KEY TO CONTINUE.$ MEG1 DB WHEN A LETTER IS 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 600D LETTERS DB JWMILZOEUCGPRAVSKNTXHDYQFB DB IYTPKWNXLSVXRMOFZHGAEBUDJQ DB NWIMZOEXRPHYSFQ

12、TVDCGLJUKDA LETTERS_BAK DB JWMILZOEUCGPRAVSKNTXHDYQFB DB IYTPKWNXLSVXRMOFZHGAEBUDJQ DB NWIMZOEXRPHYSFQTVDCGLJUKDA LETTER_COUNTER DB 0 LIFE_FLAG DB 78 DUP(0) POSITION_FLAG DB 78 DUP(0) PRESENT_POSITION DB 1 DATA ENDS;本段主要用于主界面的显示,起到提示作用 CSEG SEGMENT PARA STACK stack DB 64 DUP(0) ENDS CODE SEGMENT MAI

13、N PROC FAR ASSUME CS:CODE,DS:DATA,SS:CSEG START: MOV AX,DATA MOV DS,AX MOV LETTER_COUNTER,00H MOV PRESENT_POSITION,1 LEA SI,POSITION_FLAG MOV AH,00H MOV CX,00H INIT_POSTION_FLAG: MOV SI,AH INC SI INC CX CMP CX,78D JNE INIT_POSTION_FLAG LEA DI,LETTERS LEA SI,LETTERS_BAK MOV CX,00H INIT_LETTERS: MOV A

14、H,SI MOV DI,AH INC SI INC DI INC CX CMP CX,78D JNE INIT_LETTERS MOV AH,00H LEA SI,LIFE_FLAG MOV CX,00H INIT_LIFE_FLAG: MOV SI,AH INC SI INC CX CMP CX,78D JNE INIT_LIFE_FLAG MOV CX,00H MOV AH,01H OR CH,00010000B INT 10H CLEAR_SCREEN 00D,00D,24D,79D INIT_GAME 00D,00D,0AH,DL,80D,NEXTSIGN1 INIT_GAME 24D

15、,00D,0AH,DL,80D,NEXTSIGN2 INIT_GAME 00D,00D,0AH,DH,25D,NEXTSIGN3 INIT_GAME 00D,79D,0AH,DH,25D,NEXTSIGN4 MENU 05D,15D,ZK ; 本段程序主要是对菜单信息的宏调用 MENU 07H,15D,NO MENU 09D,15D,MEG MENU 11D,15D,MEG1 MENU 13D,15D,MEG2 MENU 15D,15D,MEG3 MENU 17D,15D,MEG4 PUT: MOV AH,02H ;此段用来设置光标位置 MOV BH,00H MOV DH,22D MOV DL

16、,33D INT 10H mov ah,01h ;通过本段代码,能够从键盘输入任意字符 INT 21H CMP AL,0DH JE SPEED3 CMP AL,45H JE EXIT EXIT: MOV AH,4CH INT 21H SPEED3: MOV AX,SPEED+12 MOV SPEED,AX JMP BEGIN BEGIN: CLEAR_SCREEN 01D,01D,23D,78D;第二次使用清屏宏调用 CLEAR_SCREEN 01D,01D,23D,78D INIT_GAME 23D,01D,01H,DL,78D,NEXTSIGN5 MOV AH,02H MOV BH,00H

17、 MOV DH,01H MOV DL,01H INT 10H MOV CX,00H LEA SI,LETTERS NEXTLETTER: MOV AH,02H;用来示字母 MOV DL,SI INT 21H INC SI INC CX CMP CX,78D JE NEXTCYCLE jmp NEXTLETTER FROM_FRONT: SUB PRESENT_POSITION,78D JMP GOBACKTO_SI FIND_ZERO: CMP LETTER_COUNTER,78D JE RECYCLE CMP PRESENT_POSITION,78D JE FROM_ONE MOV AH,0

18、0H NEXTSI: ADD PRESENT_POSITION,01H INC SI CMP SI,AH JE GOBACKTO_DI CMP PRESENT_POSITION,78D JE FROM_ONE JMP NEXTSI FROM_ONE: MOV PRESENT_POSITION,01H JMP GOBACKTO_SI RECYCLE: MOV LETTER_COUNTER,00H MOV PRESENT_POSITION,01D LEA SI,POSITION_FLAG MOV CX,00H MOV AH,00H CLEARSI: MOV SI,AH INC CX CMP CX,

19、78D JE NEXTCYCLE INC SI JMP CLEARSI NEXTCYCLE: LEA DI,LETTERS lea si,position_flag ADD PRESENT_POSITION,31D CMP PRESENT_POSITION,78 JA FROM_FRONT GOBACKTO_SI: ADD SI,WORD PTR PRESENT_POSITION DEC SI MOV AH,SI CMP AH,01H JE FIND_ZERO GOBACKTO_DI: MOV AH,01H MOV SI,AH ADD DI,WORD PTR PRESENT_POSITION

20、DEC DI MOV DL,PRESENT_POSITION MOV AH,02H MOV BH,00H MOV DH,01H INT 10H MOV CX,00H NEXTROW: PUSH CX MOV CX,00H OUT_CYCLE: ;时间的延迟 PUSH CX MOV CX,00H IN_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

21、 AL, ;如果键入SPACE,则游戏暂停 JE PAUSE CMP AL,DI;输入字母正确!则字母消失 JE DISAPPEAR PASS: POP CX INC CX CMP CX,SPEED JE PRINT JMP OUT_CYCLE PAUSE: PUSH DX;用来暂停处理 MOV AH,06H MOV DL,0FFH INT 21H POP DX CMP AL, JNE PAUSE JMP PASS TO_START1: ;用于返回主菜单 JMP START PRINT: MOV AH,0AH ;在当前光标位置写空格 MOV AL, MOV BH,00H MOV CX,01H

22、INT 10H INC DH MOV AH,02H;用来改变光标位置 MOV BH,00H INT 10H MOV AH,0AH;在当前光标位置写字母 MOV AL,DI MOV BH,00H MOV CX,01H INT 10H POP CX INC CX CMP CX,21D JE PRINT_NEXT_LETTER JMP NEXTROW;下一行 DISAPPEAR: ;击中字母后输出空格 POP CX POP CX MOV AH,0AH MOV AL, MOV BH,00H MOV CX,01H INT 10H JMP HIT PRINT_NEXT_LETTER: LEA SI,LIF

23、E_FLAG ADD SI,WORD PTR PRESENT_POSITION DEC SI MOV AH,0AH MOV AL, MOV BH,00H MOV CX,01H INT 10H INC DH MOV AH,02H MOV BH,00H INT 10H MOV AH,0AH MOV AL, MOV BH,00H MOV CX,01H INT 10H MOV AH,1 MOV SI,AH HIT: MOV AH,02H MOV BH,00H MOV DH,01H MOV DL,PRESENT_POSITION INT 10H MOV AL,DI; 出现下一个新字母的数法 ADD AL

24、,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 NEXTCYCLE CONVEY_LETTER: SUB AL,7AH ADD AL,61H MOV AH,0AH MOV BH,00H MOV CX,01H INT 10H MOV DI,AL ADD LETTER_COUNTER,01H JMP NEXTCYCLE CLEAR_SCREEN 01,01,23,78 MOV AH,02H MOV BH,00H MOV DH,11

25、D MOV DL,20D INT 10H INC DH INC DH MOV AH,02H MOV BH,00H INT 10H NOTKEY: MOV AH,07H INT 21H CMP AL,0DH je to_start CMP AL,1BH JE OVER JMP NOTKEY TO_START: CLEAR_SCREEN 00,00,24,79 JMP START OVER: CLEAR_SCREEN 01,01,23,78 MOV AH,02H MOV BH,00H MOV DH,11D MOV DL,15H INT 10H MOV AH,02H MOV BH,00H MOV DH,13D MOV DL,15H INT 10H MOV AH,07H INT 21H MOV AH,07H INT 21H CLEAR_SCREEN 00,00,24,79 MOV AX,4C00H INT 21H MAIN ENDP CODE ENDS END START ;程序结束

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1