吃豆子程序.docx
- 文档编号:24779371
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:10
- 大小:58.43KB
吃豆子程序.docx
《吃豆子程序.docx》由会员分享,可在线阅读,更多相关《吃豆子程序.docx(10页珍藏版)》请在冰豆网上搜索。
吃豆子程序
课程设计报告
设计题目:
吃豆子程序
名称:
微机原理与接口课程设计
班级:
测仪101班
姓名:
XXX
学号:
1010022009
设计时间:
2013.01.07—2013.01.13
指导教师:
XXX
一、课程设计的性质和目的
(1)通过课程设计,进行程序设计方法和技能的基本训练,巩固在课堂上学到的有关软件程序设计的基本知识和基本方法,硬件电路的设计等;
(2)通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,掌握软硬结合的控制程序设计,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。
二、课程设计的要求
1、遵循模块化、结构化的程序设计方法。
2、要求程序必须正确。
3、程序简明易懂,多运用输入输出提示,有出错信息及必要的注释。
4、要求程序结构合理,语句使用得当。
5、适当追求编程技巧和程序运行效率。
三、主要仪器设备及软件
PC机、MASM汇编软件等。
四、课程设计题目及要求
题目:
吃豆子程序
要求:
在屏幕上显示多行“豆子”(用“.”表示),用一个“嘴巴”(用字符“C”表示),程序运行时,单击空格,“嘴巴”显示出来,然后通过控制左右键来控制‘吃豆子的方向。
五、课题分析及设计思路
吃豆子程序这个课程设计,我个人觉得比较有意思,但也觉得这题目不是很简单,它不但要运用我们上课所学的知识,还涉及到许多课外的内容。
对于这个题目我的设计思路是:
在屏幕上显示多行“豆子”(用“.”表示),用一个“嘴巴”(用字符“C”表示),程序运行时,单击空格,“嘴巴”显示出来,然后通过控制左右键来控制“吃豆子”的方向。
主要运用DOS调用及BIOS调用得到相关的程序得到的,在程序数据段定义一段再调用DOS中断显示豆子,用字符“C”表示嘴巴。
用“.”表示豆子;首先屏幕上要布满“.”也就是豆子;然后字符“C”每走一步,此时豆子也要在相应位置减少一个,直到豆子被吃完或者按空格键停止游戏。
主要程序调用命令及格:
1.int21H中断
movah,07H;调用07H设置屏幕滚屏显示
int21H;调用系统中断,键盘输入
movax,4c00h
int21h;中断调用程序
movah,07H;利用07号DOS系统功能调用退回DOS
int21H;调用系统中断
movax,4C00H;调用INT21H的4CH号中断,安全退出程序
int21H;调用系统中断
2.int10H中断
moval,02H;02H用文本坐标下设置光标位置
int10H;BIOS对屏幕及显示器所提供的服务
movah,02H;02H用文本坐标下设置光标位置程序
movbh,0
xordx,dx;二进制运算做清0操作,dx清0
int10
六、程序主要流程图:
吃豆子程序流程图如下:
7、程序主要代码与分析:
CODESEGMENT
ASSUMECS:
CODE
START:
MOVAH,00H
MOVAL,02H
INT10H;设置显示方式
MOVAH,02H
MOVDL,'.';取要显示的字符到DL中
MOVCX,80*25;dos最大屏幕表示量,默认最大显示量就是80*25
SETPOINT:
INT21H
LOOPSETPOINT
MOVAH,15
INT10H;读当前显示状态
MOVDX,050FH;设定光标在5行15列
MOVCX,1;在光标处输入一个字符
A11:
MOVAH,0
INT16H;16H中断0号功能:
键盘输入
CMPAL,'';判断是否为'':
开始标志
JELO
JNEA11;判断等待
LO:
CALLCDZ;调用CDZ子程序
CDZPROC;吃豆子子程序
NEXT:
MOVAH,2
INT10H;设置光标位置
MOVAL,'C';在光标上设置C
MOVAH,10
INT10H;显示c
M:
MOVAH,0
INT16H
CMPAH,48H;键盘上键的ASCII码
JESHANG
CMPAH,50H;键盘下键的ASCII码
JEXIA
CMPAH,4BH;键盘左键的ASCII码
JEZUO
CMPAH,4DH;键盘右键的ASCII码
JEYOU
ZUO:
CALLDIRL;调用DIRL子程序
JMPA12
YOU:
CALLDIRR;调用DIRR子程序
JMPA12
SHANG:
CALLDIRU;调用DIRU子程序
JMPA12
XIA:
CALLDIRD;调用DIRD子程序
JMPA12
A12:
MOVAH,10
MOVAL,0
INT10H;在当前位置输入空格
CMPDL,80;列数为80
JGELR
CMPDL,0
JLLL
CMPDH,0
JLLU
CMPDH,25
JGELD
JMPNEXT
LR:
MOVDL,0
JMPNEXT
LL:
MOVDL,79
JMPNEXT
LU:
MOVDH,25
JMPNEXT
LD:
MOVDH,0
JMPNEXT
RET
CDZENDP
A2:
MOVAH,0
INT16H
CMPAL,51H;判断是否为Q,退出
JNEA2
QUIT:
MOVAH,4CH
INT21H
DIRLPROC;向左子程序
MOVAH,10
MOVAL,''
INT10H
DECDL
MOVAH,10
MOVAL,'C'
INT10H
RET
DIRLENDP
DIRRPROC;向右子程序
MOVAH,10
MOVAL,'';输入字符的ASCII码
INT10H;在当前位置写字符
INCDL
MOVAH,10
MOVAL,'C';输入字符的ASCII码,0表示空格
INT10H;在当前位置写字符
RET
DIRRENDP
DIRUPROC;向上子程序
MOVAH,10
MOVAL,''
INT10H
DECDH
MOVAH,10
MOVAL,'C'
INT10H
RET
DIRUENDP
DIRDPROC;向下子程序
MOVAH,10
MOVAL,''
INT10H
INCDH
MOVAH,10
MOVAL,'C'
INT10H
RET
DIRDENDP
CODEENDS
ENDSTART
八、实验结果截图
按照下图
(1)方式,对程序进行编译,无警告和错误之后,在masm32文件夹中生成xx1.obj文件,再用link链接,链接无误后,在masm5文件夹中生成xx1.exe文件,执行xx1.exe文件;然后按空格键,通过控制上下左右键开始吃豆子,如图
(2);
图1.程序的编译、链接和执行
图2.程序执行后,按空格键开始吃豆子
九、心得体会
这次的课程设计,我们的课设题目是吃豆子程序,起初拿到题目感觉这个题目比较有意思,和我的搭档讨论了一下,感觉应该比较简单,主要就是一个全屏显示和不断刷频,但是我们真正开始动手开始做的时候,才发现有很多问题,主要是对汇编知识的代码部分不能灵活运用,而且还要用到挺多上课没有学到的指令,所以我们上网查了资料。
通过查资料和消化吸收用了两天时间。
接下来就编程了,刚开始时编译出来很多错误,通过不断的修改终于没有错误了,当时心里那个激动啊!
执行后,大部分能按照理想的进行,不过还有一点小问题,通过不断检测与修改后终于好了。
程序虽然做完了,但是也有些不足,例如,没有按键使游戏暂停后,也没有是游戏从头开始;必须得关闭后重新打开,用dos运行后,第一次按空格键游戏单击空格,“嘴巴”显示出来,然后通过控制左右键来控制“吃豆子”的方向。
所以吃豆子程序还需要继续做一下延伸,例如,按某一个键可以重新开始程序,另一个键可以结束程序,同时还可以是游戏暂停,最后感觉做出来后很有意思,而且做出来之后很有成就感!
为期一个多星期课程设计对我们来说,真可谓受益匪浅,体会颇深。
从最开始查找资料,到设计思路的比较,流程图的绘制,编写相关的程序,运行、调试程序。
这也让我体会到了课程设计的任何环节无论大小,都需要有我们一个认真严谨的求知态度。
当然也少不了我们俩默契的配合。
经过这次课程设计,我发现我们现在学习的知识远远不够,遇到的很多问题还需要通过自学以及向同学们和指导老师请教学习。
另外,这次课程设计让我懂得了,编写一个好的程序并不是注重怎样写代码,而是要注重编程思想,还有就是团队合作精神,合理的分工才得以完成这次课程设计。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 豆子 程序