您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 汇编语言课程实习报告
汇编语言课程实习报告实习题目小汽车游戏学生姓名班级(学号)院系指导老师提交时间成绩-2-目录1课程实习任务………………………………………………………………………32基本知识…………………………………………………………………………….32.1汇编语言程序结构……………………………………………………………32.2关键指令分析…………………………………………………………………32.3汇编语言上机过程……………………………………………………………63总体分析……………………………………………………………………………..93.1程序功能分析………………………………………………………………....93.2主程序流程图…………………………………………………………………124详细设计…………………………………………………………………………….134.1菜单模块………………………………………………………………………134.2输入模块………………………………………………………………………144.35代码实现…………………………………………………………………………….155.1主程序代码…………………………………………………………………155.2子程序代码…………………………………………………………………206调试过程…………………………………………………………………………....317使用说明……………………………………………………………………………318总结…………………………………………………………………………………359参考文献……………………………………………………………………………37-3-1课程实习任务题目八动态小汽车显示基本功能:1、程序运行时在屏幕上显示一个小汽车(可用字符图形)2、通过按键控制汽车开动、停止、倒车等功能3、按ESC退出程序;附加功能:可以通过手动操作小汽车上下移动,躲避障碍物,与障碍物碰撞小汽车会死亡。并且从第一次出现到下次出现的障碍小汽车间隔时间是20秒等。2基本知识2.1汇编语言程序结构该汇编语言的程序结构主要有:顺序结构,分支结构,循环结构及子程序结构。2.2关键指令分析该程序所涉及的关键指令及分析如下:指令1:MOVAH,01INT16H分析:BIOS键盘中断(INT16H)的1号功能,其作用为读键盘缓冲区的字符,并可根据ZF=0或ZF=1判断有无字符或功能键的输入。指令2:MOVAH,7INT21H分析:DOS键盘操作(INT21H)能等待键盘输入一个字符,并在视频显示器上不回显。指令3:MOVAH,2MOVBH,0MOVDH,行坐标MOVDL,列坐标INT10H-4-分析:能够自己设置光标的位置,其中DH与DL记录光标的行列位置指令4:MOVAH,9MOVDX,SEG字符串名MOVDS,DXMOVDX,OFFSET字符串名INT21H分析:能够在当前光标位置上显示字符串,其中字符串最后的$作为标记来计算串的长度。指令5:MOVAH,9MOVAL,字符MOVBH,页码MOVBL,属性MOVCX,个数INT10H分析:在当前光标位置上显示一个字符指令6:AH=25HAL=中断类型号DS:DX=中断向量INT21H分析:设置中断向量,把由AL指定的中断类型的中断向量DS:DX放在中断向量表中-5-指令7:AH=35AL=中断类型号INT21H返回时送:ES:BX=中断向量分析:取中断向量,把由AL指定的中断类型的中断向量从中断向量表中取到ES:BX中指令8:INAL,21HANDAL,11111110BOUT21H,AL分析:打开定时器指令9:MOVAH,6MOVAL,0MOVBH,7MOVCH,左上角行坐标MOVCL,左上角列坐标MOVDH,右下角行坐标MOVDL,右下角列坐标INT10H分析:此功能为刷屏功能,其中,当Al=0时,则实际完成的工作是清楚屏幕的功能,它将按AL中的BLANK字符(0)使指定的窗口为空白。指令10:-6-movsi,0movcx,10;需要更改的小汽车图案个数se5:moval,s2[si]movah,0cmpax,0jeless0subs2[si],1jmpjieshu1less0:;当小汽车最左边的坐标小于0时,自动更改成80movs2[si],79djieshu1:addsi,1loopse5分析:自动更改小汽车的行走时的坐标2.3汇编语言上机过程一、用汇编语言编写的源程序,使之运行必须经过以下几个步骤:1.用编辑程序建立一个扩展名为.ASM的汇编语言源程序文件。2.调汇编程序(MASM),对源程序汇编,生成机器码目标文件,扩展名为.OBJ。3.连接(LINK)目标文件,生成可执行文件,扩展名为.EXE。4.运行可执行文件。5.如果程序运行有错,可调用DEBUG程序对.EXE文件进行调试。二、编辑汇编语言源程序可用各种编辑软件来建立汇编语言源程序,例如记事本。先保存为.TXT文件,然后改为.ASM文件,方法是在windows界面:工具——文件夹选项——查看——将“隐藏已知文件的扩展名”选项去掉。然后将扩展名.TXT直接改为.ASM,汇编程序文件名称由用户自定(只能用英文字母、数字下划线)。三、编译汇编语言源程序用MASM程序汇编源程序,生成浮动目标程序(即扩展名为.OBJ的文件),这-7-里产生的是浮动的目标模块,是不可执行程序。“开始”菜单-运行-键入“cmd”-确定,打开DOS命令行窗口。汇编前,在DOS状态下用下列命令可以打开源程序,例如打开z1.asm的方法是:>typez1.asm<CR>则屏幕上显示出z1.asm的源程序。汇编z1.asm文件过程的屏幕操作与显示如下:>masmz1.asm<CR>屏幕显示以下各行(一次一行),提示用户所应键入的信息:OBJECTFILENAME[Z1.OBJ]<CR>SOURCELISTING[NUL.LST]:<CR>CROSSREFERENCE[NUL.CRF]:<CR>产生目标文件(.OBJ)是汇编的主要目的,通常用户可以直接回车,表示采用默认文件名。(.LST)文件为列表文件,提供全部汇编后的信息。若用户不需要这些信息,可直接回车。(.CRF)文件为交义引用文件,要建立交叉引用文件,则键入文件名。MASM将为用户建立扩展名为(.CRF)的交叉引用文件,这里所得到的交叉引用文件,必须调用CREF程序处理,以建立一个按字母顺序排列的能被显示或打印的源程序中的符号(包括变量)表。利用它用户可以很快查到符号的相对地址及类型,这对调试较大的程序是很有用的。所以用户的盘中还应拷贝CREF.EXE文件。若用户不需要这些信息,可直接回车。到此为止,汇编过程已完成。MASM对源程序进行汇编时,若发现源程序中有语法错误则列出有错误的语句,错误的代码和错误的类型,最后列出错误的总数。此时就可以分析错误,调用编辑程序修改错误,直到汇编无错误。四、连接装配汇编程序LINK.EXE文件用来将(.OBJ)文件连接成可执行文件,扩展名为(.EXE)。连接过程如下:在DOS下,键入>LINKz1<CR>先显示版本号,然后依此提问以下几个问题:-8-RUNFILE[Z1.EXE]:<CR>LISTFILE[NUL.MAP]:<CR>LIBRARIES[.LIB]:<CR>第一个提示询问要产的可执行文件(.EXE)的文件名,一般按回车表示默认括号内规定的文件名。第二个提示询问是否建立内存分配图文件(.MAP),直接回车表示不要建立。最后询问是否用库文件(.LIB),若不用库文件,直接回车。然后连接程序开始进行连接,若连接过程有错,则显示错误信息。有错误就要修改源文件,重新汇编、连接直至无错。若用户程序直接使用系统堆栈,则不要理会“NOSTACKSEGMENT”的警告提示。五、汇编语言程序的运行汇编语言源程序经过汇编、连接以后生成的.EXE文件,可在DOS下直接键入文件名运行。例如:>z1<CR>。则z1.EXE文件会装入内存并从程序中起始的地址运行。程序如正确无误,执行完后控制将能正常返回DOS操作系统。若运行结果在存储单元里,或发现程序运行错误,或想跟踪程序的执行,那么就需要用DEBUG程序。六、汇编程序的调试DEBUG是专为汇编语言设计的一个调试程序,它通过单步、设置断点等方式为汇编语言程序的调试提供了非常有效的调试手段。在DOS的提示下,键入命令:>DEBUGz1.exe<CR>DOS把DEBUG.COM调入内存后把被调试的z1程序也调入内存。装入内存的地址从偏移0开始,装入后显示DEBUG的提示符“—”。在提示符“—”下可执行DEBUG的各种命令。3总体分析-9-3.1程序功能分析1、显示小汽车功能功能描述:把组成小汽车的各个字符(各个字符已初始好行列坐标)在屏幕上显示出来。功能实现主要步骤:(1)、使用BIOS显示中断类型10H的功能9,把相应的字符显示到当前光标位置,从而在屏幕上显示1个字符,然后重复上述操作,直到把组成小汽车的所有字符显示到屏幕,至此完成小汽车图案在屏幕上的显示。2、小汽车移动功能功能描述:使小汽车可以自动(或手动)的从左向右或者从右向左在屏幕上移动。功能实现主要步骤:(1)、首先,利用1中的显示小汽车功能在屏幕上显示出小汽车。再利用INT10H功能6,当al=0时,实现清除指定屏幕的功能。完成上述两个功能后,便改变组成小汽车的字符对应的行列坐标(向左移动则对列坐标减1,向右则对行坐标加1),并设置延迟(延迟越短,小汽车速度越快),再利用1中的显示功能把小汽车显示在屏幕上。重复上述操作,便可对视觉上产生小汽车移动的影像。3、判断键盘有无输入及对相应按键产生对应操作功能描述:当在小汽车运动过程中,判断有无对应的功能键位输入(如Enter键为暂停操作,Esc键位为退出操作等),有则跳到相应功能执行,无则继续原先操作。功能实现主要步骤:(1)、首先利用BIOS的16H中的1功能,读取键盘缓冲区的字符,判断是否有字符输出,根据ZF标志寄存器,如ZF=1,缓冲区为空,不作任何操作,返回原程序。如ZF=0,缓冲区不为空(即有键盘出入),则继续操作,利用DOS21H的7功能(从键盘输入一个字符,不回显),由于之前在用BIOS的16H的1功能时,已判断了有键盘输入,并把内容存到了键盘缓冲区,那么此时DOS21H的7功能便是取键盘缓冲区的字符,并将其ASCII码(字符码)存到AL中。从而实现存取键盘输入的内容(如-10-果要求程序能接受功能键或数字组合键必须进行两次DOS调用,第一次回送00,第二次回送扫描码)。(2)、在小车每次在刷屏与显示时,调用判断键盘中断子程序,判断是否有键盘输入(即调用(1)所述功能子程序),无输入则继续执行原先功能。有输入则再判断其输入键位是否为Enter键或Esc键等,是则跳转到相应位置执行相应操作。4、障碍物显示功能功能描述:在小汽车运行的环境中,有其限制运行的公路(既运行范围),其他小汽车,公路上的障碍物等,这里将这些阻碍小汽车运行的物体全部都称作的障碍物。功能实现主要步骤:(1)、其显示部分与显示小汽车的功能基本相同,这里不再做解析。(2)、障碍物小汽车(即阻碍用户所控制的小汽车前行的小汽车)也会移动,其移动功能也与小汽车移动功能相同,不过障碍物小汽车的移动方向及速度,出现时间等均由程序设计时所设定,使用用户不能改变。5、小汽车上下移动功能功能描述:在小汽车运行过程中,用户不仅可以暂停及退出,还可以对小汽车进行上移及下移的功能,从而实现躲避障碍物的功能。功能实现主要步骤:(1)、小汽车上下移动的功能与之前说明的小汽车左右移动基本相同,其不同之处便是将组成小汽车字符的行坐标进行加减运算,完成后运算后,调用刷屏及显示功能,从而实现小汽车的上下移动。(2)、小汽车的上下移动功能是根据是否有相应键盘的输入来决定是执行上下移动的。6、判断小汽车是否与障碍物相撞并结束游戏功能描述:在小汽车运行过程中,用户可以根据小汽车运行状态进行上下移动,从而避免与障碍物相撞,若相撞,则推出游戏。功能实现主要步
本文标题:汇编语言课程实习报告
链接地址:https://www.777doc.com/doc-3392474 .html