汇编吃豆子程序课程设计最终版
吃豆子程序

课程设计报告设计题目: 吃豆子程序名称: 微机原理与接口课程设计班级: 测仪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. int 21H中断mov ah,07H ;调用07H设置屏幕滚屏显示int 21H ;调用系统中断,键盘输入mov ax,4c00hint 21h ;中断调用程序mov ah,07H ;利用07号DOS系统功能调用退回DOS int 21H ;调用系统中断mov ax,4C00H ;调用INT 21H 的4CH 号中断,安全退出程序int 21H ;调用系统中断2. int 10H中断mov al,02H ;02H用文本坐标下设置光标位置int 10H ;BIOS 对屏幕及显示器所提供的服务mov ah,02H ;02H用文本坐标下设置光标位置程序mov bh,0xor dx,dx ;二进制运算做清0操作,dx清0int 10六、程序主要流程图:吃豆子程序流程图如下:七、程序主要代码与分析:CODE SEGMENTASSUME CS:CODESTART:MOV AH,00HMOV AL,02HINT 10H ;设置显示方式MOV AH,02HMOV DL,'.' ;取要显示的字符到DL中MOV CX,80*25 ;dos最大屏幕表示量,默认最大显示量就是80*25SETPOINT:INT 21HLOOP SETPOINTMOV AH,15INT 10H ;读当前显示状态MOV DX,050FH ;设定光标在5行15列MOV CX,1 ; 在光标处输入一个字符A11: MOV AH,0INT 16H ;16H中断0号功能:键盘输入CMP AL,' ' ;判断是否为' ':开始标志JE LOJNE A11 ;判断等待LO: CALL CDZ ;调用CDZ子程序CDZ PROC ;吃豆子子程序NEXT: MOV AH,2INT 10H ;设置光标位置MOV AL,'C' ;在光标上设置CMOV AH,10INT 10H ;显示cM: MOV AH,0INT 16HCMP AH,48H ;键盘上键的ASCII码JE SHANGCMP AH,50H ;键盘下键的ASCII码JE XIACMP AH,4BH ;键盘左键的ASCII码JE ZUOCMP AH,4DH ;键盘右键的ASCII码JE YOUZUO: CALL DIRL ;调用DIRL子程序JMP A12YOU: CALL DIRR ;调用DIRR子程序JMP A12SHANG: CALL DIRU ;调用DIRU子程序JMP A12XIA: CALL DIRD ;调用DIRD子程序JMP A12A12: MOV AH,10MOV AL,0INT 10H ;在当前位置输入空格CMP DL,80 ;列数为80JGE LRCMP DL,0JL LLCMP DH,0JL LUCMP DH,25JGE LDJMP NEXTLR: MOV DL,0JMP NEXTLL: MOV DL,79JMP NEXTLU: MOV DH,25JMP NEXTLD:MOV DH,0JMP NEXTRETCDZ ENDPA2: MOV AH,0INT 16HCMP AL,51H ;判断是否为Q,退出JNE A2QUIT: MOV AH,4CHINT 21HDIRL PROC ;向左子程序MOV AH,10MOV AL,' 'INT 10HDEC DLMOV AH,10MOV AL,'C'INT 10HRETDIRL ENDPDIRR PROC ;向右子程序MOV AH,10MOV AL,' ' ;输入字符的ASCII码INT 10H ;在当前位置写字符INC DLMOV AH,10MOV AL,'C' ;输入字符的ASCII码,0表示空格INT 10H ;在当前位置写字符RETDIRR ENDPDIRU PROC ;向上子程序MOV AH,10MOV AL,' 'INT 10HDEC DHMOV AH,10MOV AL,'C'INT 10HRETDIRU ENDPDIRD PROC ;向下子程序MOV AH,10MOV AL,' 'INT 10HINC DHMOV AH,10MOV AL,'C'INT 10HRETDIRD ENDPCODE ENDSEND START八、实验结果截图按照下图(1)方式,对程序进行编译,无警告和错误之后,在masm32文件夹中生成xx1.obj文件,再用link链接,链接无误后,在masm5文件夹中生成xx1.exe文件,执行xx1.exe文件;然后按空格键,通过控制上下左右键开始吃豆子,如图(2);图1. 程序的编译、链接和执行图2. 程序执行后,按空格键开始吃豆子九、心得体会这次的课程设计,我们的课设题目是吃豆子程序,起初拿到题目感觉这个题目比较有意思,和我的搭档讨论了一下,感觉应该比较简单,主要就是一个全屏显示和不断刷频,但是我们真正开始动手开始做的时候,才发现有很多问题,主要是对汇编知识的代码部分不能灵活运用,而且还要用到挺多上课没有学到的指令,所以我们上网查了资料。
吃豆豆课程设计

吃豆豆课程设计一、课程目标知识目标:1. 学生能理解并掌握“吃豆豆”游戏中涉及的数学基本概念,如分数、概率等。
2. 学生能运用数学知识分析游戏策略,提高解决问题的能力。
技能目标:1. 学生通过观察、分析游戏过程,培养逻辑思维和推理能力。
2. 学生能运用所学知识,设计并优化游戏策略,提高实际操作能力。
情感态度价值观目标:1. 学生在游戏中体验数学的乐趣,激发学习数学的兴趣和积极性。
2. 学生通过团队合作,培养沟通协作能力和团队精神。
3. 学生在游戏过程中,学会遵守规则、尊重对手,培养良好的道德品质。
课程性质:本课程以数学知识为基础,结合趣味游戏,提高学生的数学素养和实际操作能力。
学生特点:四年级学生具备一定的数学基础和逻辑思维能力,对游戏有浓厚兴趣,喜欢动手操作。
教学要求:结合学生特点,通过游戏教学,让学生在轻松愉快的氛围中掌握数学知识,提高解决问题的能力。
将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. 教学大纲:a. 分数的基本概念与运算b. 概率的基本概念与应用c. 游戏策略设计与优化2. 教学内容安排与进度:a. 分数基本概念与运算(第1-2课时)- 简单分数的定义与表示- 分数的大小比较- 分数的加减运算b. 概率基本概念与应用(第3-4课时)- 概率的定义与计算- 事件发生的可能性- 概率在实际问题中的应用c. 游戏策略设计与优化(第5-6课时)- 分析“吃豆豆”游戏中的数学问题- 设计有效的游戏策略- 优化策略,提高游戏胜率3. 教材章节与内容:a. 《数学》四年级上册:分数章节b. 《数学》四年级下册:可能性章节c. 结合游戏教学,拓展相关数学知识教学内容确保科学性和系统性,结合课程目标,让学生在掌握基础知识的同时,学会运用数学知识解决实际问题。
通过游戏策略设计与优化,培养学生的创新意识和实际操作能力。
三、教学方法1. 讲授法:- 对于分数、概率等基本概念和运算规则的教学,采用讲授法进行系统讲解,确保学生掌握基础知识。
05-08《吃豆子游戏》教学设计

第8课吃豆子游戏【教学目标与要求】1.理解面向控件的含义,学会使用按键控制的方法,运用侦测和随机函数控件创作游戏。
2.在活动中充分地体验、感知,在完成任务的过程中要引导学生思考、猜测、实践与总结。
3.通过具体的教学活动培养勇于实践、勇于探究的精神,让学生在活动中体验成功与喜悦,从而增加对Scratch的学习兴趣。
4.在完成任务的同时不断创新与实践,并应用本课知识与原理解决实际问题。
【教学重点与难点】重点:理解面向控件的含义,学会使用按键控制角色的方法。
难点:运用侦测与随机函数控件创作游戏。
【教学方法与手段】通过任务驱动法,以学生自主学习为主,教师演示讲解为辅。
【课时安排】安排1课时。
【教学准备】计算机网络教室,教学广播系统。
【教学过程】一、游戏导入1. 《吃豆人》是一款经典的游戏,它非常考验玩家的反应速度,我们来比一比,谁的反应更灵敏。
2. 组织学生一起玩《吃豆人》游戏。
今天我们就一起来制作这款游戏。
二、新授知识1. 设置舞台和角色展示学生的设计并相互交流完善设计。
2.分析游戏刚才同学们在玩游戏比拼反应速度的过程中,你是如何来控制“吃豆人”的?这款游戏有哪些游戏规则呢?3.认识“面向”控件和按键控制4.吃豆人的动画效果——侦测控件5.豆子的脚本搭建——随机函数控件的使用(1)豆子是在舞台上方任意位置出现的,这是如何实现的呢?这里我们就要用到“运算”模块中的随机函数控件了。
教师演示随机函数控件的使用方法,学生搭建完成豆子随机出现的脚本。
(豆子从舞台上方掉落,注意随机函数控件范围的选取)(2)任务一:完成“豆子从舞台上方掉落”的任务请同学们根据以前所学知识,尝试完成。
说说用了哪个控件?脚本如何搭建的?全班交流,教师小结。
(3)任务二:完成“吃豆子效果”的任务思考“吃豆子效果”要用到哪些控件?学生尝试根据描述的规则,搭建脚本。
(4)全班交流,教师归纳总结刚在大家的努力下,能够运用侦测和随机函数控件基本完成了吃豆人游戏的制作。
java吃豆子游戏课程设计

java吃豆子游戏课程设计一、课程目标知识目标:1. 学生能理解Java语言中面向对象编程的基本概念,掌握类与对象的关系。
2. 学生能运用Java中的图形用户界面(GUI)组件,实现游戏界面的设计。
3. 学生了解并掌握Java中的事件处理机制,实现游戏逻辑控制。
技能目标:1. 学生能够运用所学知识,设计并编写出一个简单的“吃豆子”游戏程序。
2. 学生通过编程实践,提高问题分析、程序设计和调试的能力。
情感态度价值观目标:1. 学生通过游戏编程,培养对计算机编程的兴趣和热情,增强学习动力。
2. 学生在团队合作中,学会相互沟通、协作,培养集体荣誉感和责任感。
3. 学生通过编程实践,认识到编程在生活中的应用,激发创新思维,提高解决实际问题的能力。
课程性质分析:本课程为Java编程实践课,通过设计一个简单的吃豆子游戏,让学生将所学的Java编程知识运用到实际项目中,提高编程实践能力。
学生特点分析:学生处于初中或高中年级,对计算机编程有一定的基础,对游戏编程有较高的兴趣,但编程实践经验不足。
教学要求:1. 课程内容要与教材知识紧密结合,注重实践操作,提高学生的编程技能。
2. 教学过程中,关注学生的个体差异,给予个性化指导,提高学生的学习效果。
3. 通过团队合作,培养学生的沟通能力和协作精神,提高解决问题的能力。
二、教学内容1. 面向对象编程基础:- 类的定义与对象创建- 成员变量与方法的封装- 继承与多态2. Java图形用户界面(GUI)设计:- Swing图形用户界面组件- 布局管理器- 事件监听器与事件处理3. 游戏逻辑设计:- 游戏场景与角色绘制- 角色移动与碰撞检测- 分数统计与生命值管理4. 编程实践:- 设计吃豆子游戏角色类与游戏场景类- 编写游戏逻辑控制代码- 调试与优化游戏程序教学内容安排与进度:1. 第1-2课时:面向对象编程基础,学习类与对象的概念,完成角色类的设计。
2. 第3-4课时:Java图形用户界面设计,掌握Swing组件的使用,绘制游戏场景。
小班吃豆子游戏教案

小班吃豆子游戏教案一、教学内容本节课我们将使用教材第3章《简单的游戏设计》中的内容,特别是第2节“吃豆子游戏”作为教学的主要内容。
详细内容包括游戏规则设计、角色移动控制、豆子布局及得分系统。
二、教学目标1. 理解吃豆子游戏的基本规则和设计思路。
2. 学会使用编程语言实现游戏角色移动和豆子收集。
3. 培养学生的逻辑思维和问题解决能力。
三、教学难点与重点重点:游戏角色移动控制逻辑的实现。
难点:如何让学生理解并实现角色与豆子之间的互动关系。
四、教具与学具准备1. 教师准备:计算机、投影仪、示例代码。
2. 学生准备:计算机、编程软件。
五、教学过程1. 实践情景引入(5分钟)向学生介绍经典吃豆子游戏,引发兴趣。
讲解游戏规则和基本操作。
2. 例题讲解(15分钟)分析游戏角色移动的编程逻辑。
展示示例代码,解释角色移动和豆子收集的实现方法。
3. 随堂练习(20分钟)学生根据教师提供的框架代码,自行编写角色移动和豆子收集的代码。
教师巡回指导,解答学生疑问。
4. 小组讨论(10分钟)学生分组,分享自己的代码和心得。
讨论如何优化代码,提高游戏体验。
各小组展示成果,分享学习心得。
六、板书设计1. 游戏规则2. 角色移动编程逻辑3. 示例代码4. 课堂练习框架代码七、作业设计1. 作业题目:编写一个完整的吃豆子游戏。
要求角色能上下左右移动,吃到豆子得分。
游戏界面简单明了,得分实时显示。
2. 答案:角色移动:使用方向键控制。
豆子布局:随机分布在游戏地图上。
得分系统:吃到豆子得分,得分实时更新。
八、课后反思及拓展延伸1. 反思:本节课学生掌握了角色移动和豆子收集的编程方法,但部分学生对于如何优化代码和提高游戏体验还需加强。
2. 拓展延伸:优化游戏界面,增加趣味性。
尝试引入敌对角色,提高游戏难度。
探索更多游戏设计思路,激发学生的创造力。
重点和难点解析:1. 教学难点与重点的识别。
2. 例题讲解的深度和清晰度。
3. 学生的随堂练习和教师指导。
课间游戏吃豆豆教案

课间游戏吃豆豆教案一、教学目标。
1. 知识与技能,了解吃豆豆游戏的规则和操作方法,掌握游戏中的基本技巧。
2. 过程与方法,通过实际操作,培养学生的反应速度和手眼协调能力。
3. 情感态度与价值观,培养学生团队合作意识,培养学生的竞争意识和团队精神。
二、教学重点与难点。
重点,游戏规则和基本技巧的讲解,学生操作实践。
难点,学生在游戏中的操作技巧和反应速度。
三、教学过程。
1. 游戏规则的讲解。
首先,向学生介绍吃豆豆游戏的规则,玩家操纵游戏中的小黄色圆形角色“吃豆人”,在迷宫中吃掉所有的豆子,同时躲避四个颜色不同的鬼魂。
当吃掉所有豆子后,即可过关。
2. 游戏操作方法的讲解。
接着,向学生介绍游戏的操作方法,使用方向键控制“吃豆人”的移动方向,吃豆人会沿着方向键指示的方向移动。
在游戏中,还可以吃掉大力丸,吃掉大力丸后,吃豆人会暂时变得非常强大,可以吃掉鬼魂。
3. 游戏技巧的讲解。
在操作方法介绍完毕后,向学生介绍一些游戏中的技巧,在吃豆人移动时,可以利用迷宫的结构和角落来躲避鬼魂的追击;在吃到大力丸后,可以主动追击鬼魂,增加得分。
4. 学生操作实践。
让学生们分成小组,轮流进行游戏操作实践。
每个小组成员轮流操作吃豆人,其他小组成员则扮演鬼魂的角色。
通过实际操作,培养学生的反应速度和手眼协调能力。
5. 游戏总结。
在游戏结束后,让学生们进行游戏总结,总结本次游戏中取得的成绩和经验,分享游戏中的技巧和心得体会。
同时,鼓励学生们相互交流,学习彼此的游戏技巧。
四、教学反思。
通过本节课的教学,学生们对吃豆豆游戏的规则和操作方法有了更深入的了解,掌握了一些游戏中的基本技巧。
在游戏操作实践中,学生们积极参与,培养了团队合作意识和竞争意识。
通过游戏总结,学生们相互交流,学习到了更多的游戏技巧和心得体会。
在未来的教学中,可以适当增加游戏的难度,引导学生们不断挑战自我,提高游戏操作的技巧和反应速度。
同时,也要注重培养学生的团队精神,鼓励学生相互合作,共同进步。
儿童编程scratch初级24:吃豆子游戏教案

少儿编程教学资料,仅供参考,需要可下载并修改后使用!教案式少儿编程教程【初级:第24课】吃豆子游戏【本课说明】吃豆子游戏是两个人分别操作红嘴巴(用W、S、A、D四个键分别代表上移、下移、左移、右移)和蓝嘴巴(用上移键、下移键、左移键、右移键控制)吃豆子。
总共有20颗豆子,谁吃得多谁就胜利,当红嘴巴或蓝嘴巴碰到黄嘴巴时,就死了,死了的对方获胜。
【知识技能】(1)循环的嵌套控制。
(2)按键检测控制。
(3)变量的建立及其应用。
(4)侦测指令。
(5)角色的移动及定位。
(6)数字和逻辑运算指令。
(7)造型的切换、显示与隐藏。
【课程引入】小朋友,类似吃豆子的小游戏大家都玩过吧,玩别人的游戏多没有意思啊!我们自己动手设计一款吃豆子游戏,是不是很有成就感啊,还可以分享给你的小伙伴。
问题分析:(1)用按键控制角色“红嘴巴”和“蓝嘴巴”的移动。
(2)记录红嘴巴和蓝嘴巴吃豆子的数量,并判断吃豆子多者获胜。
(3)判断:当红嘴巴或蓝嘴巴碰到黄嘴巴时,就死了,死了的对方获胜。
(4)红嘴巴和蓝嘴巴吃豆子的数量等于豆子总数时游戏结束。
(5)设计游戏背景。
【教学步骤】(1)打开Scratch离线系统,显示Scratch编程主界面。
(2)下面是“背景”的脚本。
(3)选择主界面左下方“新建背景”第三个图标显示“从本地文件中上传背景”,将预先准备好的“背景”上传。
(4)选择主界面中间“脚本”中的“数据”,点击“新建变量”,建立三个变量,分别是“总豆子数”、“红嘴巴吃豆数”、“蓝嘴巴吃豆数”。
在三个“变量名”中分别输入“总豆子数”、“红嘴巴吃豆数”、“蓝嘴巴吃豆数”点击确定。
“总豆子数”、“红嘴巴吃豆数”、“蓝嘴巴吃豆数”左侧有一个小方块,若不选择(不出现√),舞台中间就没有矩形框。
(5)选择主界面中间“脚本”中的“事件”,将其中的“当...小绿旗...被点击”拖动到脚本空白区域。
(6)选择主界面中间“脚本”中的“数据”,将其中的“将…设定为0”拖动到“当...小绿旗...被点击”的下面,点击其中的倒三角选择“总豆子数”,价格其中的参数“0”修改为20。
吃豆子游戏

《面向对象程序设计》课程设计报告题目:吃豆子游戏的设计与实现院(系):信息科学与工程学院专业班级:计算机科学与技术1201班学生姓名:**学号:***********指导教师:**20 14 年 12 月 29 日至20 15 年 1 月 9 日华中科技大学武昌分校制面向对象程序设计课程设计任务书目录1需求与总体设计 (1)1.1需求分析 (1)1.2 总体设计 (1)2详细设计 (4)2.1 Enemy类 (4)2.2 Fruit类 (5)2.3 Gold类 (6)2.4 Packman类 (6)2.5 Player类 (7)2.6 Ticker类 (8)2.7 Wall类 (9)3编码实现 (10)3.1 Enemy类的详细代码 (10)3.2 Fruit类的详细代码 (26)3.3 Gold类的详细代码 (31)3.4 Packman类的详细代码 (36)3.5 Player类的详细代码 (52)3.6 Ticker类的详细代码 (59)3.7 Wall类的详细代码 (60)4系统测试 (62)总结 (66)1需求与总体设计1.1需求分析吃豆子游戏是一种古老而又有趣的游戏, 游戏软件不计其数, 网上就有好多关于实现的复杂算法和设计, 其难度让一般初学者望而却步。
开发的出来的吃豆子游戏是一种内容丰富,画面优美,益智类游的戏,并且不受网络的限制,让人们能够在任何时刻通过体验游戏,达到身心愉悦、放松心情。
通过本游戏的设计,综合自己在校期间所学的理论知识,设计开发吃豆子游戏,使自己熟悉应用系统的开发过程,培养独立思考能力,检验学习效果和动手能力,初步掌握软件工程的系统理论,进一步巩固和加强自身对java基础知识的理解,提高自己的编程水平,从而达到理论与实践相结合的目的。
1.2 总体设计1 文件构成吃豆子游戏的程序由文件Wall.java、Gold.java、Player.java、Enemy.java、Ticker.java、和Packman.java六个文件组成。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
湖南农业大学东方科技学院课程论文(设计)学部:理工学部班级:08姓名:WC 学号:2008课程论文(设计)题目:吃豆子程序课程名称:汇编语言与微机原理评阅成绩:评阅意见:成绩评定教师签名:日期:年月日目录一、概要及关键词 (1)二、课程设计题目 (2)三、设计思想简述 (2)四、程序流程图 (3)五、程序源代码................................4-7六、程序运行过程 (8)七、课程设计总结报告.........................9-10八、参考文献 (10)吃豆子程序学生:WC摘要:本程序通过汇编语言来实现在屏幕上显示多行“豆子”(用“.”表示),用一个“嘴巴”(用字符“C”表示),程序运行时,单击空格,“嘴巴”开始从左到右逐行还是“吃豆子”,一直到“豆子”被吃完停止或者单击空格暂停。
这个程序是在Windows xp的平台上的MASM5进行编译的。
此程序提供一个可视化游戏界面,通过键盘输入相应的操作后,便可以执行整个游戏程序。
当再次空格或整局游戏完成后重新开始整个游戏,也可以通过键盘输入定义的字符后,退出程序。
通过本次汇编程序的设计,使我进一步熟练掌握了汇编程序中的一些相关命令的使用。
讲书本理论知识在现实中得到实际的应用,帮助我进一步的了解汇编语言编程的一些原理关键词:数据段中断子程序代码段调用主程序Abstract:This assembly language program to achieve through the screen displays multiple lines of "beans"(with "." representation), with a "mouth"(with the character "C" that), the program runs, click the box, "Mouth "line by line starting from left to right or " Pacman "has always been to " beans "is finished click the box to stop or pause. This program is in the platform Windows xp MASM5 compiled. This program provides a visual game interface, the corresponding operation by keyboard input, then they can execute the game program. When the space or the entire Board again after the game to start the game, you can also define the character keyboard input, exit the program. Through the design of this assembler so I further mastered some of the associated assembler commands. Theoretical knowledge about the book been in the real practical application, to help me better understand some of the principles of assembly language programmingKeywords:Data segment Interrupt Subroutine Code segment The main program一、课程设计题目(分析)我选择汇编语言与微机原理课程设计的题目是吃豆子程序。
之所以选择这个题目,是因为我觉得这个课程设计做出来会比较有意思,对于爱好游戏的广大学生来说也有一定的实用价值;这个题目相对而言不是很简单,它不但要运用我们上课所学的知识,还涉及到许多课外的内容。
吃豆子程序设计题目要求:在屏幕上显示多行“豆子”(用“.”表示),用一个“嘴巴”(用字符“C”表示),程序运行时,单击空格,“嘴巴”开始从左到右逐行还是“吃豆子”,一直到“豆子”被吃完停止或者单击空格暂停。
用字符“C”表示嘴巴。
用“.”表示豆子;首先屏幕上要布满“.”也就是豆子;然后字符“C”每走一步,此时豆子也要在相应位置减少一个,直到豆子被吃完或者按空格键停止游戏。
二、设计思想简述对于这个题目我的设计思想是:首先定义一个字符串,内容为字符“C”的ASCⅡ值还有其他的一些相关信息,然后把屏幕设置多行豆子,或者布满豆子,把“C”每往前走一格就把该位子上的豆子变为空格键,即“C”遇到非空格就跳转到下一步;这样一颗豆子就吃掉了,只要依次循环下去,就可以把豆子全部吃掉,或者中间按空格,暂停游戏。
三、主要程序框图四、程序源代码assume cs:code,es:data ;assue:段寄存器伪指令。
所谓关联,指某一段寄存器使用某一指定的段空间。
cs:code ,ds:data , 代码段寄存器cs与code关联;数据段寄存器ds与data关联。
data segment ;定义数据段temp1 dw ?temp2 dw ? ;定义段temp1和temp2data endscode segment ;定义程序代码段in al,60H ;从端口60输入内容并传送到alcmp al,57 ;比较送到al的数与57(在ascll码中代表十进制的9)的差jnz nospace ;执行跳转mov cx,1 ;把立即数1送到cxnospace:mov al,20H ;设置INT 1Fh字体指针out 20H,al ;向0x20 I/O地址送0x20的数据iret ;中断返回程序start:mov ah,00H ;00H设置显示模式mov al,02H ;02H用文本坐标下设置光标位置int 10H ;BIOS 对屏幕及显示器所提供的服务程序mov ah,02H ;02H用文本坐标下设置光标位置mov dl,'.' ;取要显示的字符到DL中mov cx,80*25 ;dos最大屏幕表示量,默认最大显示量就是80*25 setpoint:int 21H ;调用系统中断,键盘输入loop setpoint ;循环指令testkey: ;模拟键盘的空格健动作mov ah,07H ;调用07H设置屏幕滚屏显示int 21H ;调用系统中断,键盘输入cmp al,' ' ;比较指令,保证全为空格jnz exit ;不为空格则跳转mov ax,0mov ds,ax ;把段地址0通过寄存器ax送到dsmov ax,datamov es,axmov bx,9*4+2 ;把偏移地址送到bxmov ax,[bx] ;寄存器间接寻址方式,把bx地址所指的值送给ax mov es:temp1,axmov ax,codemov [bx],ax ;把AX的值赋予BX所指向的内存单元mov bx,9*4 ;把段地址送到bxmov ax,[bx]mov es:temp2,axmov word ptr [bx],0 ;类型操作符对名字或标号的类型属性进行有关设置mov ah,02H ;02H用文本坐标下设置光标位置mov bh,0xor dx,dx ;二进制运算做清0操作,dx清0int 10Hmov ax,0B800H ;文本模式下显存起始地址;0a000h是图形模式下显存起始地址mov ds,ax ;把ax的值送到数据段xor bx,bx ;二进制运算做清0操作,bx清0mov cx,80*25 ;dos最大屏幕表示量,默认最大显示量就是80*25 eatpea:mov si,0FFFFH ;代表在25×80的文本显示方式下,屏幕可有2000个字符位置,(si为源变址寄存器,si与di有自动增量和自动减量功能,用于变址很方便)mov di,004FFHdelay:sub si,1 ;将si-1的值送到sijnz delay ;不为0就继续si-1,即吃下一个豆子sub di,1 ;将di-1的值送到dijnz delay ;不为0就继续di-1,即翻到下一页mov byte ptr [bx],' ' ;把“”的第一个字节的内容送到bx并把它的操作类型定义为字节mov byte ptr [bx+2],'C' ;把“C”的第一个字节的内容送到bx+2并把它的操作类型定义为字节add bx,2 ;将bx+2的值赋给bxloop eatpeamov ax,0mov ds,ax ;把立即数0通过ax寄存器送到ds数据段寄存器mov bx,9*4+2mov ax,es:temp1 ;把附加段中temp1中的内容通过ax送到bx mov [bx],axmov bx,9*4mov ax,es:temp2mov [bx],ax ;把附加段中temp2中的内容通过ax送到bxin al,60h ;读取键盘值cmp al,10hje quit ;执行跳转jmp start ;空格键则跳到开始quit:mov ax,4c00hint 21h ;中断调用程序exit:mov ah,07H ;利用07号DOS系统功能调用退回DOSint 21H ;调用系统中断mov ax,4C00H ;调用INT 21H 的4CH 号中断,安全退出程序int 21H ;调用系统中断code endsend start五、程序运行过程(1)编译:*:在windows xp系统下运行MASM汇编软件,编译程序,无错误与警告,执行下一步。
(2)链接:*:在编译无错误警告之后进行链接,出现警告,因为不影响运行结果,继续执行下一步。
(3)执行:*:上示截图为运行时的画面,通过键盘输入空格键后执行吃豆子游戏程序。
六、课程设计总结报告(1)课程设计中所遇到的主要问题和解决方法。
在课程设计的过程当中遇到的主要问题就是对整个汇编知识不是很熟悉,部分代码不能灵活运用,也有部分代码不能理解,因此在设计过程中花了较多时间查阅书籍跟浏览网上资料;在编写完整个程序后,编译、链接、运行时,第一次按空格键开始吃豆子,再按空格键停止吃豆子,但是第三次按空格键时则出现D:\MASM>等字符,如果继续按空格键则出现了手动吃豆子的现象,如果在D:\MASM>后输入“文件名”则重新开始整个游戏;但是通过对整个程序的检查,我发现在源代码循环部分后少了一部分退出游戏的源代码,因此我加了一段关于按空格键退出或重新开始游戏的源代码解决了此问题;再一个就是DOS指令不能灵活运用,导致程序运行过程中纰漏百出,这样也浪费了不少时间,最后通过多次尝试修改,终于完成了整个程序设计。