吃豆子程序 汇编语言与微机原理课程设计_第1页
吃豆子程序 汇编语言与微机原理课程设计_第2页
吃豆子程序 汇编语言与微机原理课程设计_第3页
吃豆子程序 汇编语言与微机原理课程设计_第4页
吃豆子程序 汇编语言与微机原理课程设计_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、湖南农业大学东方科技学院课程论文(设计)学 部:理工学部 班 级:08 姓 名: 学 号:课程论文(设计)题目:吃豆子程序课程名称:汇编语言与微机原理评阅成绩:评阅意见:成绩评定教师签名:日期: 年 月 日 目录一、概要及关键词.1二、课程设计题目.2三、设计思想简述.2四、程序流程图.3五、程序源代码.4-7六、程序运行过程.8七、课程设计总结报告.9-10八、参考文献.10 吃豆子程序学 生:WC 摘 要:本程序通过汇编语言来实现在屏幕上显示多行“豆子”(用“.”表示),用一个“嘴巴”(用字符“C”表示),程序运行时,单击空格,“嘴巴”开始从左到右逐行还是“吃豆子”,一直到“豆子”被吃完停

2、止或者单击空格暂停。这个程序是在Windows xp的平台上的MASM5进行编译的。此程序提供一个可视化游戏界面,通过键盘输入相应的操作后,便可以执行整个游戏程序。当再次空格或整局游戏完成后重新开始整个游戏,也可以通过键盘输入定义的字符后,退出程序。通过本次汇编程序的设计,使我进一步熟练掌握了汇编程序中的一些相关命令的使用。讲书本理论知识在现实中得到实际的应用,帮助我进一步的了解汇编语言编程的一些原理关键词:数据段 中断 子程序 代码段 调用 主程序Abstract: This assembly language program to achieve through the screen di

3、splays 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 MA

4、SM5 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 t

5、he 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 Co

6、de segment The main program一、 课程设计题目(分析)我选择汇编语言与微机原理课程设计的题目是吃豆子程序。之所以选择这个题目,是因为我觉得这个课程设计做出来会比较有意思,对于爱好游戏的广大学生来说也有一定的实用价值;这个题目相对而言不是很简单,它不但要运用我们上课所学的知识,还涉及到许多课外的内容。吃豆子程序设计题目要求:在屏幕上显示多行“豆子”(用“.”表示),用一个“嘴巴”(用字符“C”表示),程序运行时,单击空格,“嘴巴”开始从左到右逐行还是“吃豆子”,一直到“豆子”被吃完停止或者单击空格暂停。用字符“C”表示嘴巴。用“.”表示豆子;首先屏幕上要布满“.”也就是

7、豆子;然后字符“C”每走一步,此时豆子也要在相应位置减少一个,直到豆子被吃完或者按空格键停止游戏。二、 设计思想简述对于这个题目我的设计思想是:首先定义一个字符串,内容为字符“C”的ASC值还有其他的一些相关信息,然后把屏幕设置多行豆子,或者布满豆子,把“C”每往前走一格就把该位子上的豆子变为空格键,即“C”遇到非空格就跳转到下一步;这样一颗豆子就吃掉了,只要依次循环下去,就可以把豆子全部吃掉,或者中间按空格,暂停游戏。三、主要程序框图开 始输入界面提示CX/DX出栈恢复现场空格-STRDI输入任意字符AL输出字符串STRC-STRDIDI+1-DI字符串STR首地址DI为空输出修改字符串CX

8、/DX入栈保护现场RUZHAN程序结束调用延时程序四、 程序源代码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)的差j

9、nz 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*25setpoint: int 21H

10、;调用系统中断,键盘输入loop setpoint ;循环指令testkey: ;模拟键盘的空格健动作mov ah,07H ;调用07H设置屏幕滚屏显示int 21H ;调用系统中断,键盘输入cmp al, ;比较指令,保证全为空格jnz exit ;不为空格则跳转mov ax,0 mov ds,ax ;把段地址0通过寄存器ax送到dsmov ax,data mov es,ax mov bx,9*4+2 ;把偏移地址送到bxmov ax,bx ;寄存器间接寻址方式,把bx地址所指的值送给axmov es:temp1,axmov ax,codemov bx,ax ;把AX的值赋予BX所指向的内存

11、单元mov bx,9*4 ;把段地址送到bxmov ax,bxmov 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清0 mov cx,80*25 ;dos最大屏幕表示量,默认最大显示量就是80*25eatpea:mov si

12、,0FFFFH ;代表在2580的文本显示方式下,屏幕可有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

13、 bx,2 ;将bx+2的值赋给bxloop eatpeamov ax,0 mov ds,ax ;把立即数0通过ax寄存器送到ds数据段寄存器mov bx,9*4+2 mov ax,es:temp1 ;把附加段中temp1中的内容通过ax送到bxmov bx,ax mov bx,9*4 mov ax,es:temp2mov bx,ax ;把附加段中temp2中的内容通过ax送到bxin al,60h ;读取键盘值cmp al,10h je quit ;执行跳转jmp start ;空格键则跳到开始quit: mov ax,4c00h int 21h ;中断调用程序exit:mov ah,07H

14、 ;利用07号DOS系统功能调用退回DOSint 21H ;调用系统中断mov ax,4C00H ;调用 INT 21H 的 4CH 号中断,安全退出程序int 21H ;调用系统中断code endsend start五、程序运行过程(1)编译:*:在windows xp系统下运行MASM汇编软件,编译程序,无错误与警告,执行下一步。(2)链接:*:在编译无错误警告之后进行链接,出现警告,因为不影响运行结果,继续执行下一步。(3)执行:*:上示截图为运行时的画面,通过键盘输入空格键后执行吃豆子游戏程序。六、课程设计总结报告(1) 课程设计中所遇到的主要问题和解决方法。 在课程设计的过程当中遇

15、到的主要问题就是对整个汇编知识不是很熟悉,部分代码不能灵活运用,也有部分代码不能理解,因此在设计过程中花了较多时间查阅书籍跟浏览网上资料;在编写完整个程序后,编译、链接、运行时,第一次按空格键开始吃豆子,再按空格键停止吃豆子,但是第三次按空格键时则出现D:MASM等字符,如果继续按空格键则出现了手动吃豆子的现象,如果在D:MASM后输入“文件名”则重新开始整个游戏;但是通过对整个程序的检查,我发现在源代码循环部分后少了一部分退出游戏的源代码,因此我加了一段关于按空格键退出或重新开始游戏的源代码解决了此问题;再一个就是DOS指令不能灵活运用,导致程序运行过程中纰漏百出,这样也浪费了不少时间,最后

16、通过多次尝试修改,终于完成了整个程序设计。(2) 创新和得意之处。 这个吃豆子游戏的程序的创新之处主要体现在整个程序能以一种可视化的动态界面看到类似于“吃豆子”的动作;当然这个过程也是比较巧妙的,字符“C”本身就象形与吃豆子的嘴,而“.”也很像豆子,整个程序运行起来生动形象,再者就是整个游戏通过空格键控制游戏的开始,重新开或者退出游戏,整个过程快捷方便。(3) 课程设计中存在的不足,需要进一步改进的设想。 这个程序设计存在的不足主要表现在当第一次按空格键暂停后,再按空格键就重新开始游戏了,或者按空格键,然后回车键,再输入“文件名”就重新开始整个游戏了,此点需要改进应当编写成按空格键开始游戏,再

17、按空格键暂停,又按空格键继续,按回车键退出游戏;当然如果能达到一定的高度,这个吃豆子游戏也可以修改成人为操作的一个小游戏程序,可人手动以控制吃豆子的方向,速度等,因此我会继续努力,不断提高自己编程的能力,编写出有趣味的小游戏程序。(4) 课程设计的感想和心得体会。 通过本次汇编语言课程设计,让我更加明白实践的重要性,如果整天的学习课本上的理论知识而不拿来用那肯定是很烦的,不但要去理解各种指令的功能,还要学习相应的硬件知识。再者,学习理论知识的目的还是要拿来运用,通过实践来巩固所学的理论知识。并且通过这次课程设计实践,让我一改往日的厌学情绪,尤其是当程序运行正确的时候,那种来自内心的成就感,让我更加有信心学好汇编语言了。通过本次课程设计让我更深刻的明白学习的重要性,遇到不懂得问题要敢于向同学提问,没有什么不好意思的,不懂就是不懂。如果遇到问题了还坐那里发呆,那肯定完成不了任务。还有遇到问题多和同学探讨,所谓“独学而无友,则孤陋而寡闻”就是这个道理,或许就在和同学的讨论过程中,点开了你的思路,问题就迎刃而解了。总之,这次汇编语言课程设计让我受益匪浅,我不但收获了知识,提高了能

温馨提示

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

评论

0/150

提交评论