吃豆子程序.doc_第1页
吃豆子程序.doc_第2页
吃豆子程序.doc_第3页
吃豆子程序.doc_第4页
吃豆子程序.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

_ 课 程 设 计 报 告设计题目: 吃豆子程序 名 称: 微机原理与接口课程设计 班 级: 测仪101班 姓 名: XXX 学 号: 1010022009 设计时间: 2013.01.072013.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系统功能调用退回DOSint 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 六、程序主要流程图: 吃豆子程序流程图如下:7、 程序主要代码与分析:CODE SEGMENT ASSUME CS:CODESTART: MOV AH,00H MOV AL,02H INT 10H ;设置显示方式 MOV AH,02H MOV DL,. ;取要显示的字符到DL中 MOV CX,80*25 ;dos最大屏幕表示量,默认最大显示量就是80*25SETPOINT: INT 21H LOOP SETPOINT MOV AH,15 INT 10H ;读当前显示状态 MOV DX,050FH;设定光标在5行15列 MOV CX,1 ; 在光标处输入一个字符A11: MOV AH,0 INT 16H ;16H中断0号功能:键盘输入 CMP AL, ;判断是否为 :开始标志 JE LO JNE A11;判断等待LO: CALL CDZ ;调用CDZ子程序CDZ PROC ;吃豆子子程序NEXT: MOV AH,2 INT 10H;设置光标位置 MOV AL,C;在光标上设置C MOV AH,10 INT 10H;显示cM: MOV AH,0 INT 16H CMP AH,48H ;键盘上键的ASCII码 JE SHANG CMP AH,50H ;键盘下键的ASCII码 JE XIA CMP AH,4BH ;键盘左键的ASCII码 JE ZUO CMP 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,10 MOV AL,0 INT 10H ;在当前位置输入空格 CMP DL,80;列数为80 JGE LRCMP DL,0JL LLCMP DH,0JL LUCMP DH,25JGE LDJMP NEXTLR: MOV DL,0 JMP NEXTLL: MOV DL,79JMP NEXTLU: MOV DH,25JMP NEXTLD: MOV DH,0JMP NEXTRETCDZ ENDP A2: MOV AH,0 INT 16H CMP AL,51H ;判断是否为Q,退出 JNE A2 QUIT: MOV AH,4CH INT 21HDIRL PROC ;向左子程序 MOV AH,10 MOV AL, INT 10H DEC DL MOV AH,10 MOV AL,C INT 10H RETDIRL ENDPDIRR PROC ;向右子程序 MOV AH,10 MOV AL, ;输入字符的ASCII码 INT 10H;在当前位置写字符 INC DL MOV AH,10 MOV AL,C ;输入字符的ASCII码,0表示空格 INT 10H ;在当前位置写字符 RETDIRR ENDP DIRU PROC ;向上子程序 MOV AH,10 MOV AL, INT 10H DEC DH MOV AH,10 MOV AL,C INT 10H RETDIRU ENDP DIRD PROC ;向下子程序 MOV AH,10 MOV AL, INT 10H INC DH MOV AH,10 MOV AL,C INT 10H RETDIRD ENDPCODE ENDS END START八、实验结果截图按照下图(1)方式,对程序进行编译,无警告和错误之后,在masm32文件夹中生成xx1.obj文件,再用link链接,链接无误后,在masm5文件夹中生成xx1.exe文件,执行xx1.exe文件;然后按空格键,通过控制上下左右键开始吃豆子,如图(2);图1. 程序的编译、链接和执行图2. 程序执行后,按空格键开始吃豆子九、心得体会这次的课程设计,我们的课设题目是吃豆子程序,起初拿到题目感觉这个题目比较有意思,和我的搭档讨论了一下,感觉应该比较简单,主要就是一个全屏显示和不断刷频,但是我们真正开始动手开始做的时候,才发现有很多问题,主要是对汇编知识的代码部分不能灵活运用,而且还要用到挺多上课没有学到的指令,所以我们上网查了资料。通过查资料和消化吸收用了两天时间。接下来就编程了,刚开始时编译出来很多错误,通过不断的修改终于没有错误了,当时心里那个激动啊!执行后,大部分能按照理想的进行,不过还有一点小问题,通过不断检测与修改后终于好了。程序虽然做完了,但是也有些不足,例如,没有按键使游戏暂停后,也没有是游戏从头开始;必须得关闭后重新打开,用dos运行后,第一次按空格键游戏单击空格,“嘴巴”显示出来,然后通过控制左右键来控制“吃豆子”的方向。 所以吃豆子程序还需要继续做一下延伸,例如,按某一个键可以重新开始程序,另一个键可以结束程序,同时还可以是游戏暂停,最后感觉做出来后很有意思,而且做出来之后很有成就感!为期一个多星期课程设计对我们来说,真可谓受益匪浅,体会颇深。从最开始查找资料,到设计思路的比较,流程图的绘制,编写相关的程序,运行、调试程序。这也让我体会到了课程设计的任何环节无论大小,都需要有我们一个认真严谨的求知态度。当然也少不了

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论