汽车动画程序课程设计报告1.docx
- 文档编号:10433698
- 上传时间:2023-02-11
- 格式:DOCX
- 页数:20
- 大小:59.95KB
汽车动画程序课程设计报告1.docx
《汽车动画程序课程设计报告1.docx》由会员分享,可在线阅读,更多相关《汽车动画程序课程设计报告1.docx(20页珍藏版)》请在冰豆网上搜索。
汽车动画程序课程设计报告1
课程设计任务书
学生姓名:
专业班级:
指导教师:
工作单位:
题目:
汽车动画程序
初始条件:
显示汽车从屏幕由左向右驶过的程序。
按Q退出程序。
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
(1)设计任务及要求分析
(2)方案比较及认证说明
(3)系统原理阐述
(4)硬件设计课题需要说明:
硬件原理,电路图,采用器件的功能说明
(5)软件设计课题需要说明:
软件思想,流程图,源程序及程序注释
(6)调试记录及结果分析
(7)总结
(8)参考资料
(9)附录:
芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图
时间安排:
1月4日~1月6日:
收集资料,方案选择
1月7日~1月10日:
流程规划,程序编写
1月11日~1月15日:
调试程序,报告撰写
1月15:
交课程设计说明书,程序演示,答辩
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
摘要
本课程设计是按照点像素图形的动画显示方式而设计的一个汽车动画。
首先提示键入字符1和Q,来选择演示动画或者退出。
按下“1”,则动画开始,屏幕第九行零列的地方出现一辆汽车图像,并且在屏幕上从左向右移动,到达屏幕最右侧后,返回提示界面,按“Q”则退出程序。
通过读取汽车字符表来显示字符组合,从而画出一个汽车图像,延时后擦除屏幕上的汽车图像,在被擦除图像的X轴递减方向重画一次,如此循环来实现汽车在屏幕上由左向右的平移变换。
关键字:
汽车字符表延时擦除重画
Abstract
Thiscourseisdesignedinaccordancewiththepoint-pixeldisplayanimatedgraphicsandanimationdesignacar.Prompt,typethefirstcharacters1andQ,toselecttheanimationdemoorquit.Press"1",theanimationtostart,thescreenoutintheninthlineofzeroplacesacarimage,andonthescreenfromlefttorightmovement,arrivedatthefarrightofthescreen,returnpromptedinterface,accordingto"Q"iswithdrawfromtheprogram.Automotivecharactersbyreadingtabletoshowthecharactercombinations,whichpaintedacarimage,delayaftertheerasureofthecaronthescreenimage,erasetheimageintheX-axisdirectiondescendingredrawonce,socycletheoperationtoachieve。
Keyword:
Automotivecharactertableeraseredrawdelay
1.计算机显示动画的基本原理
在计算机图形设计中,汇编语言具有潜在的优点,因为显示屏幕上的一个图像由几十万个元素组成,处理这些图像元素需要大量的指令,就速度而言,汇编语言程序远比高级语言快得多。
最高级的图形级数,例如动画软件,只有以汇编语言设计才能产生更加逼真,更有效的动态画面效果。
屏幕物体的动画效果,经常通过几何变换来产生,最简单的几何变换有平移、旋转、和比例变换。
在所有情况下,变换都是以一个新的图像代替先前的图像来实现。
在简单得平移变换中,如果在连续递增的X坐标上不断得重画物体,就会在屏幕上出现物体从左向右水平移动的画面。
在动画软件中,不仅要能画出一系列连续的图像,而且要能从屏幕上擦除先前的图像,否则,运动得物体就会在屏幕上留下痕迹。
擦除和重画屏幕物体的周期有几种实现得方法,最直接得一种方法是在显示图形之前,把图形将要占据的屏幕部分的背景图像保存下来,当要擦除图形时,再把保存得背景图像重新显示出来。
通过BIOS设置可以来确定计算机的显示方式,这些显示方式决定着显示分辨率,可同时显示的颜色数,每个像素占用的位数,默认字符集,显存的组织以及显存的起始地址此类信息。
显示方式又分为两类:
文本方式和图形方式。
文本方式主要用于字符文本处理,图形方式又称为所有点可寻址方式。
在图形方式下,可通过读写屏幕上各个点的映像显示出单色或彩色图形。
BIOS显示例程提供了设置各种文本和图像显示方式的功能,程序只要给出调用参数,使用BIOSINT10H即可建立某种显示方式。
图形适配器有两种操作方式:
文本和图形方式,文本方式是图形适配器的默认方式。
利用BIOSINT10H的功能00可为当前的执行程序初始化显示方式或在文本方式和图形方式之间切换。
显示器一旦设置成图形方式,光标即消失。
2.设计任务分析
本次课设任务是设计在屏幕上显示汽车由左至右驶过的程序,要求程序按Q退出。
首先要想到要再屏幕上显示一个小车,然后再让它移动起来。
在前面一章中提到了显示方式的问题,就显示一辆小车来说,很显然,图形方式更为适合。
确定了显示方式,我们再考虑怎么把小车在屏幕上画出来,可以给小车列一个字符图形表,然后确定其起始位置,在自己定义的起始位置上,通过调用事先定义好得汽车图像字符表中字符,编写循环调用程序,使其依次在屏幕上显示,所有的字符都显示出来后,在屏幕上就得到了一个小车的图像。
下一步是考虑怎样让小车在水平上移动起来。
在前一章中已经提到,屏幕物体的动画效果的实现方法。
在特定起始位置画出一个小车后,加以一定的延时,然后用原来保存的背景(上一步画出的小车占据的屏幕原来的背景信息)去覆盖上这个小车的图像,实现擦除。
移动指针的方法在右边(行号增1)重复刚才的画小车操作,就可以在屏幕上显示出小车由左至右驶过的感觉。
对于方案的选择,存在于两个地方,首先是显示方式的选择,因为文本方式适用于处理字符文本,对于显示一个图像不易实现。
在图形方式下,可通过读写屏幕上各个点的映像显示出单色或彩色图形。
可以通过BIOS设置INT10的00功能调用参数AL=04设置显示方式为320*200图形四色。
另外一个就是擦除屏幕的方法选择,一种就是前面提到的保存背景信息然后覆盖来实现擦除,这种方法比较直接。
另外就是基于XOR的操作方法,因为对于一个数值XOR两次就能恢复原来的内容,这样的方法虽然对于单个数值来说操作简单快速,但是对于屏幕信息一次XOR后的结果,很难控制其结果为显示一个小车。
故选择第一个方案。
3.汽车动画程序流程图
第二章中进行了设计任务的分析,设计方案的选择和总体的概略设计,由此我们可以画出总程序流程图。
首先是主程序流程图的设计,在程序开始后,希望屏幕上出现一条提示信息,是选择演示汽车动画,还是退出。
然后读取键盘上键入得字符,确定是转入汽车动画子程序,还是结束程序。
按照这样思路的设计出如图3.1所示的主程序流程图。
图3.1主程序流程图
接下来就是汽车子程序的设计了,为了保护断点,先要将数据寄存器推入堆栈。
然后设置显示方式为图形方式,为显示汽车动画做准备,要清屏,可以预先进行清屏宏定义,运行汽车子程序的时候直接调用就可以了。
以上准备就绪,接下来就要显示汽车动画了。
要指向汽车字符表,才能进行读取和显示字符操作,设置了汽车的起始位置后,就可以从此处开始读取字符表信息。
显示出汽车字符表的所有字符信息也就画出一个汽车了。
而具体的如何画出这个汽车并且让它水平移动起来,可以定义另外一个子程序MOVE_SHAPE。
汽车子程序的流程图如图3.2所示。
图3.2汽车子程序流程图
在汽车子程序中调用了一个清屏宏定义,宏定义内容是在设置了显示方式后,调用10号中断的6号功能,进行屏幕初始化,取AL=0,即进行设置全屏幕为空白这个操作。
窗口左上角和右下角的行列号以及卷入行属性,在宏调用的时候由实参给定。
综上,即可使当前窗口屏幕显示全白。
具体的宏定义和宏调用程序见附录1。
而整个设计的核心就在MOVE_SHAPE这个子程序中了。
这个子程序将实现汽车图像的显示和擦除重画。
真正显示出动画效果。
设计思路如下:
首先保护断点,然后要依次读出字符表中的每个字符并且分别显示出来,是否已经把一个完整的汽车图像显示在了屏幕上,还要判断字符表中的字符是否全部读取完毕,若没有读取完则返回去读取下一个字符,读取完毕了,就按照第二章中设计的方法,延时,然后擦除已经画出来的汽车图像,在行号加一的地方重画汽车。
其中,为了使程序结构化,定义一个延时子程序DLY和一个擦除重画子程序ERASE。
MOVE_SHAPE子程序流程图如图3.3所示。
图3.3MOVE_SHAPE子程序流程图
对于延时子程序,只需设计一个循环程序,置其循环次数即可控制延时时间具体程序设计见附录1。
DLY子程序流程图如图3.4所示。
在显示图形之前,把图形将要占据的屏幕部分的背景图像保存下来,当要擦除图形时,再把保存得背景图像重新显示出来。
这是擦除子程序的设计原理。
每画一个小车之前,将绘图起始位置的信息保存在变量中,调用擦除子程序的时候读取出来,然后变化指针,使其能读遍字符表的每一个字符,每读一个字符,便将原来保存的,被当前图像占据的屏幕部分的背景图像,重新显示出来。
对每一个字符都这样操作后,整个汽车图像也就擦除完毕了。
计算机执行这整个过程是很快速的,所以在程序运行的时候应该是很快就擦除,并且显示出下一位置的汽车图像。
从而实现动画效果。
擦除子程序的流程图见图3.5。
图3.4DLY子程序流程图图3.5擦除子程序的流程图
4.调试程序记录及演示结果屏幕截图
运行可执行程序CAR.exe,选择1汽车开过;选择Q,退出。
调试过程:
1.对于堆栈段的定义,不能用stack命名,显示出错:
Reservedwordusedasasymbol:
STACK于是将堆栈命名为DUIZHAN。
错误解除。
2.在设计显示提示语句程序的时候,想到的是用中断21H的09号功能显示字符串,但是没有注意这个功能调用的一些要求,要求字符串以“$”结束。
运行后提示语句出现但是随之渐渐出现了很多乱七八糟的字符占据整个屏幕,而且不能退出程序。
运行情况如图4.1所示。
在字符串结尾处加上“$”,错误解除。
图4.1提示语句没有以“$”结尾的运行结果
3.运行程序后对于键盘输入的字符,屏幕上没有响应,考虑到;老师在课堂上讲的,中断调用要先保护断点。
于是在调用中断前将下面会使用到的通用寄存器推入堆栈,保护断点,在程序结束或者返回处,执行出栈,错误解除。
4.查ASCII表Q对应的值为81转换为16进制为51H,但是写入程序运行后按Q无效,原来是没有将键盘转换到大写输入。
错误解除。
5.要为一句程序代码写注释,中文输入下的逗号不行。
显示出错:
Extracharactorsonline,应该将输入法改成英文,然后打出逗号。
错误解除。
程序调试完毕,运行结果如下:
1.运行可执行文件屏幕上出现提示性语句。
提示语句屏幕copy图如图4.2所示。
图4.2提示语句屏幕copy图
2,在键盘上按下“1”后,出现图4.3所示的汽车动画屏幕copy图。
图4.3汽车动画屏幕copy图
5.课程设计的心得与体会
在本次课程设计中,我巩固了《微机原理与接口技术》这门课中学习到的汇编语言相关知识。
并且通过查找资料,学到了不少新的知识,比如BIOS中断和DOS中断如何调用,不同中断号的功能。
在汽车动画程序中,就用到了BIOSINT10来进行显示相关的设置;还用到DOSINT21的9号功能来显示提示字符串;以及BIOS类型16的中断的00号功能用于从键盘读取一个字符。
综合了所学汇编语言基本编程知识和新的中断调用知识,经过不断的调试程序,终于运行出任务要求的结果,解决了问题。
我觉得经过这次课程设计,让我对本门课程知识的运用得到系统性的训练。
锻炼了我利用计算机软技术解决问题的初步能力.
在进行课程设计的过程中我体会到一些小技巧,比如,多使用子程序使程序细分,结构化,模块化更加易于编辑管理,当程序汇编和生成没有出错而运行出错的时候,就可以通过判断程序运行的错误,找到相关的模块进行再调试和修改。
还有就是标号的灵活使用带来很多好处,不仅可以起到标志说明一个程序段中某部分的作用,还可以运用于循环结构中,便于控制程序的运行。
还有就是程序的注释就无须赘言了,一个详细注释的程序,不仅可以大大减少设计时间,而且便于自己和他人调用和修改。
总而言之,通过此次课程设计,收获颇丰。
拓展了微机和汇编语言的知识,同时也锻炼了自己的编程能力,令我受益匪浅。
参考文献
[1]彭虎.微机原理与接口技术(第二版).北京:
电子工业出版社,2008
[2]周佩玲.微机原理与接口技术(第二版).北京:
电子工业出版社,2008.3
[3]王永山.微型计算机原理与应用(以IBM-PC系列机为例).西安:
西安电子科技大学出版社,2006
[4]PeterAbel.IBM-PC汇编语言程序设计(第五版).北京:
人民邮电出版社,2002
[5]沈美明,温冬婵.IBM-PC汇编语言程序设计(第二版).北京:
清华大学出版社,2001.8
[6]余朝琨.IBM-PC汇编语言程序设.北京:
计机械工业出版社,2008.1
[7]Abel.P.IBM-PC汇编语言程序设计(第五版).北京:
人民邮电出版社,2002.9
[8]吕杨.微型计算机原理接口及应用.重庆:
重庆大学出版社,2000.1
[9]苏广州沈瑛.高级微型计算机系统及接口技术.北京:
北京理工大学出版社,2001
附录总程序代码
DATASEGMENT
GUIDEWDB0DH,0AH,'pleaseinput1orQ:
(1:
car,Q:
exit)$'
BUFADB200DUP(?
);预留缓冲区
CARDB7
DB49H,7,0,3;小汽车的字符图形表
DB0B1H,7,0,1
DB0DBH,7,0,1
DB0DBH,7,0,1
DB4FH,7,1,0
DB4FH,7,0,-2
DB2,7,-2,1
CHAR_CNTDW?
POINTERDW?
LINE_ONDB?
COL_ONDB?
DATAENDS
DUIZHANSEGMENTSTACK
DB200DUP(0)
DUIZHANENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
DUIZHAN
START:
MOVAX,DATA
MOVDS,AX
MOVAH,0;为当前得执行程序初始化显示方式
MOVAL;调用参数AL=4,设置显示方式为320*200图形四色
INT10H;使用BIOSINT10建立某种显示方式
LEADX,GUIDEW;在显示器上显示字符串提示信息DS:
DX=串地址
MOVAH,9;AH=9的功能是显示字符串
INT21H;与键盘输入有关的DOS21H功能调用
MOVAH,0;从键盘读取字符到AL寄存器AH=0功能是从键盘读一字符,得到得字符码存入AL
INT16H;类型16的中断提供了基本的键盘操作
A:
CMPAL,31H;比较AL是否等于1
JNEB
CALLQICHE
B:
CMPAL,51H;比较AL是否等于Q的ASCII码
JNESTART
MOVAH,4CH;终止当前程序并返回调用程序
INT21H
CLEARMACROPCH,PCL,PDH,PDL,PBH;清屏宏定义
MOVAH,0
MOVAL,4
INT10H
MOVAH,6;调用6号功能屏幕初始化或上卷
MOVAL,0;AL=上卷行数,AL=0表示全屏幕为空白
MOVCH,PCH;左上角行号
MOVCL,PCL;窗口左上角列号(0行,0列)
MOVDH,PDH;右下角行号
MOVDL,PDL;窗口右下角列号(24行,79列)
MOVBH,PBH;正常属性显示
INT10H
ENDM
DLYPROCNEAR;延时子程序
PUSHCX
PUSHDX
MOVDX,10000
DL1:
MOVCX,3401
DL2:
LOOPDL2
DECDX;执行10000次,达到延时目的
JNZDL1
POPDX
POPCX
RET
DLYENDP
QICHEPROCNEAR;汽车子程序
PUSHAX
PUSHBX
PUSHCX
PUSHDX
MOVAH,0
MOVAL,4
INT10H
CLEAR0,0,24,79,7;清屏宏调用
LEADI,CAR;DI指向字符图形表
MOVDH,9;从第9行0列位置开始显示汽车
MOVDL,0
CALLMOVE_SHAPE
RET
QICHEENDP
MOVE_SHAPEPROCNEAR
PUSHAX
PUSHBX
PUSHCX
PUSHDX
PUSHDI
MOVAH,0FH;取当前显示方式
INT10H
SUBCH,CH;清空CH高八位
MOVCL,[DI];CL放字符个数
INCDI;DI指向字符图形表中的第一个字符
MOVCHAR_CNT,CX;字符计数器CHAR_cnt
MOVPOINTER,DI;INC增一指针
MOVLINE_ON,DH;右下角行号(24)
MOVCOL_ON,DL;右下角列号(39)
PLOT_NEXT:
ADDDH,[DI+2];计算下一个字符的行列号
ADDDL,[DI+3]
CMPDL,40;列号是否到了40,最右侧。
出屏否?
JBMOV_CRSR;当行指针未扫描到最右侧时转移
POPDI
POPDX
POPCX
POPBX
POPAX
JMPEXIT2
MOV_CRSR:
MOVAH,2
INT10H;设置光标位置(2号功能)MOVAL,[DI];取字符值
MOVBL,[DI+1];取字符属性字符表的第二列为字符属性
PUSHCX
MOVCX,1
MOVAH,09;显示字符
INT10H
POPCX
ADDDI,4;DI指向下一个字符
LOOPPLOT_NEXT;总字符个数已经存在CX中CALLDLY
CALLERASE
JMPSHORTPLOT_NEXT;段内直接短转移EXIT2:
RET
MOVE_SHAPEENDP
ERASEPROCNEAR;
MOVCX,CHAR_CNT
MOVDI,POINTER
MOVDH,LINE_ON
MOVDL,COL_ON
ERASE_NEXT:
ADDDH,[DI+2];下一步
ADDDL,[DI+3]
MOVAH,2;确定光标位置
INT10H
MOVAL,[DI]
MOVBL,0
PUSHCX
MOVCX,1
MOVAH,9
INT10H
POPCX
ADDDI,4
LOOPERASE_NEXT
MOVCX,CHAR_CNT
MOVDI,POINTER
MOVDH,LINE_ON
INCCOL_ON;X轴正向方向移动小车,增列号
MOVDL,COL_ON
RET;子程序的返回
ERASEENDP
CODEENDS
ENDSTART
本科生课程设计成绩评定表
姓名
性别
女
专业、班级
课程设计题目:
汽车动画程序
课程设计答辩或质疑记录:
成绩评定依据
最终评定成绩(以优、良、中、及格、不及格评定)
指导教师签字:
年月日
评定项目表
评定项目
评分成绩
1.考勤、态度(10分)
2.查阅资料能力(10分)
3.系统设计(20分)
包括系统实现原理、框图、方案的说明
4.编写程序,调试结果(25分)
5.设计说明书质量及规范化、参考文献充分(不少于5篇)(15分)
6.答辩(20分)
总分:
总评:
指导老师签字:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汽车 动画 程序 课程设计 报告