可爱小动画程序设计毕业设计论文Word下载.docx
《可爱小动画程序设计毕业设计论文Word下载.docx》由会员分享,可在线阅读,更多相关《可爱小动画程序设计毕业设计论文Word下载.docx(27页珍藏版)》请在冰豆网上搜索。
![可爱小动画程序设计毕业设计论文Word下载.docx](https://file1.bdocx.com/fileroot1/2022-10/10/e14df2a2-9955-4505-88b7-50a141173fdc/e14df2a2-9955-4505-88b7-50a141173fdc1.gif)
工作单位:
自动化学院
题目:
可爱小动画程序
初始条件:
本动画先显示一个方框向中间由大变小,最后出现一个红心,按Q退出程序。
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
(1)设计任务及要求分析
(2)方案比较及认证说明
(3)系统原理阐述
(4)硬件设计课题需要说明:
硬件原理,电路图,采用器件的功能说明
(5)软件设计课题需要说明:
软件思想,流程图,源程序及程序注释
(6)调试记录及结果分析
(7)总结
(8)参考资料
(9)附录:
芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图
摘要
本设计实现了用汇编语言编制一个小动画,该动画由几十个像素点构成。
在计算机图形设计中,通过对各像素点的移动来实现动画的播放。
而处理这些像素点又需要大量的指令。
汇编语言由于其就速度而言远比其他语言程序快得多,所以具备一定优势。
本文是着重通过对动画程序的设计实现汇编语言程序设计。
阐述动画汇编程序的设计思路与方案,绘制程序流程图,运用8086CPU提供的指令、伪指令、宏指令及DOS,BIOS功能调用编写程序源代码,同时给出说明注释。
并用计算机提供的软件调试工具对所编写程序进行运行调试。
关键字:
动画汇编语言DOSBIOS
1.课程设计的目的及要求
1.1课程设计的要求
本次课程设计要求编写一个完整的汇编程序程序来实现小动画。
动画要求先显示一个距形由大变小,最后屏幕上出现一个红色心形图案,按Q键退出程序。
为了更方便的观看动画,还需设计操作提示语以及动画的循环播放功能。
1.2课程设计的目的
微机原理课程设计是自动化专业的专业必修课的实践环节。
本课程设计的主要目的是掌握汇编程序设计的基本方法,并掌握汇编程序设计中常见错误的排除和避免,提供一个既动手又动脑的独立实践机会,将课本上的理论知识和实际有机的结合起来,锻炼分析解决实际问题的能力,从而进一步提高了实践运用的能力
2.设计要求分析
2.1设计思路
本程序主要是利用BIOS功能调用的10H中断类型实现的。
利用其12号功能,设置像素点的颜色、坐标和个数,从而画出图形需要的线段,如画方框、画心等。
画完图形之后延时,清屏。
同时,利用dos功能调用的08号功能,从键盘输入字符。
如果是任意键,则进入图形显示;
如果是“R”键,则重新播放动画;
如果是“Q”键,则退出。
由于需要在屏幕上显示矩形和心形,所以在进行图形的显示设计时,程序中需要绘制多种图案,具体由方框,点,心等来形成整个图案。
为了程序的可阅读性,程序中将绘制基础图案的代码单独列为子程序,如画线子程序,画方框子程序,画点子程序,延时子程序,清屏子程序等。
2.2汇编程序开发过程
汇编语言设计总过程流程图如图2-2所示:
图2-1汇编语言开发总过程流程图
汇编语言程序设计要求综合课上所学的理论知识和汇编语言基础理论,根据设计的要求来充分分析问题,将问题分解成一个一个的简单的环节,以便全面的分析程序来设计汇编语言。
设计一个简明、易读、易调试、易维护、执行速度快、占用存储空间尽量少的好程序。
2.3汇编语言设计中主要指令
在整个程序中,主要运用的指令有:
push(压入堆栈);
Pop(从堆栈中释放首地址的内容);
sub(减法指令);
add(加法指令);
mov(传送指令);
call(过程调用指令);
lea(地址传送指令);
inc(加一指令);
cmp(比较指令);
jmp(跳转指令);
jnz(条件跳转指令)等。
3.程序设计方案
3.1设计功能
本程序运行后的功能有:
(1)程序运行时显示提示信息,按任意键进入动画界面。
(2)让一个矩形向中心由大变小
(3)显示心形。
(4)按“Q”键退出程序。
3.2设计方案
由设计思路制定设计方案。
先分别编写画矩形、画点、画心、清屏、延时和显示提示信息的子程序。
然后,通过编写主程序来调用这些子程序实现课程设计要求。
可以通过改变BIOS功能调用的10H中断类型的11号功能(BL)的赋值来改变图形与线条以及背景的颜色。
为了使运行的动画人眼看上去是连续的,我们可以根据人眼的反应时间来设置延时程序。
通过计算得出延时程序所需的循环的次数,以达到以上目的。
计算式为:
(人眼的反应时间:
响应时间如果超过40毫秒,人眼就会出现运动图像的迟滞现象。
)
3.3动画程序流程图
由设计方案画出动画程序流程图如图3-3所示:
完整源程序可见附录2。
yes
no
no
yes
yes
no
图3动画程序流程图
4.汇编语言程序设计
4.1显示方案设计
由程序要求实现的显示效果来看,程序中要引入多种图案,具体由矩形、、“心”等图形来形成整个图案。
所以要在程序中出现多次画各种图案来填充整个图形,具体步骤如下:
(1)画矩形,先是设置cx,dx,bx各个寄存器不同的初值,即设置像素点的颜色、坐标个数,接着由大到小画矩形,画每个矩形之前,各个寄存器都要设置不同的初值。
(2)再由大到小画矩形,同时将上一个矩形用与背景色相同的颜色重新画一遍,即清除大矩形化小矩形,由程序要显示的效果来分析,还需要在中间延时以达到最佳显示效果,故还需要仔细调整延时时间。
(3)画心,画心形图案可以说是整个设计最困难的部分,由于使用画圆算法太过复杂,而所需心形图案并不复杂,所以采用画点的形式拼凑一个红心来达到目的。
4.2主程序设计
根据上图3-3程序的结构流程图设计汇编语言的主程序。
先设置图形显示方式,用点像素形式来显示图形。
然后设置背景色和调色板,利用BIOS功能调用的12号功能,设置像素点的颜色、坐标和个数,从而画出图形所需要的线段,如画矩形。
完成图形之后延时,清屏。
同时,利用DOS系统功能调用的08号功能,从键盘输入字符。
如果是“R”键,则重新播放一遍;
4.3子程序设计
为了实现程序效果,程序中还调用了不少的子程序,如画线子程序、画矩形子程序、画心子程序、延时子程序、清屏子程序。
具体分析延时子程序和清屏子程序。
(1)画线子程序
该子程序入口参数为BX、CX、DX、SI、DI。
BX控制画线长度,CX、DX决定起始点,SI控制画线方向,DI控制画线速度(为了更好的观看效果,在程序中DI均为0,即最大画线速度)。
程序首先pushBX,然后判断SI的值,若为0则将BX与DX相加存入BX中,然后从CX:
DX开始循环画像素点,每画一次DX加1,直至DX与BX值相等;
若SI为1,则将BX与CX相加存入BX中,然后从CX:
DX开始循环画像素点,每画一次CX加1,直至CX与DX值相等,最后返回。
其具体流程图如图4-1所示:
图4-1画线子程序流程图
子程序代码段如下所示:
DRAW_LINEPROCNEAR;
画线子程序
PUSHBX
CMPSI,0
JZV_LINE1
ADDBX,CX
H_LINE:
;
写像素
MOVAH,0CH
INT10H
CMPDI,0
JZAA0
CMPDI,1
JZAA1
CALLDELAY
AA1:
AA0:
INCCX
CMPCX,BX
JNEH_LINE
JMPEXIT_LINE
V_LINE1:
ADDBX,DX
V_LINE:
JZBB0
JZBB1
BB1:
BB0:
INCDX
CMPDX,BX
JNEV_LINE
EXIT_LINE:
POPBX
RET
DRAW_LINEENDP
(2)延时子程序
先push
cx,dx,即先让cx,dx进栈,接着设置dx寄存器的初值为2500,利用利用BIOS功能调用的12号功能设置cx的初值为2801,利用其13号功能使之循环。
在进行循环次数计数(即dx→dx-1)后,判断循环是否结束:
如(dx)≠0,继续循环,转移到目标地址dl2所在的指令,否则顺序执行。
然后dx,cx顺序出栈。
最后返回。
其具体流程图如图4-2所示:
图4-2延时子程序流程图
延时子程序代码段如下:
DELAYPROCNEAR;
延时子程序
PUSHCX
PUSHDX
MOVDX,2500
DL2:
MOVCX,2801
DL3:
LOOPDL3
DECDX
JNZDL2
POPDX
POPCX
DELAYENDP
(3)清屏子程序
先设置功能号al及寄存器bx,cx,dx的初值,然后进入line循环程序。
在line循环程序中,先清除缓冲区并请求指定的输入功能,接着利用BIOS功能调用的10H中断类型实现显示器输出控制。
在进行循环次数计数(即cx→cx+1)后,判断循环是否结束:
如(cx)≠320,则继续循环,转移到目标地址line所在的指令,否则再设置寄存器cx的初值,在进行循环次数计数(dx←dx+1)后,判断循环是否结束:
如(dx)≠200,则继续循环,转移到目标地址line所在的指令,否则顺序执行。
其具体流程图如图4-3所示:
图4-3清屏子程序流程图
清屏子程序代码段如下:
CLEARPROCNEAR
MOVAL,0
MOVBX,0
MOVCX,0
MOVDX,0
LINE:
CMPCX,320
JNELINE
CMPDX,200
CLEARENDP
5.结果分析
由于本程序需要使用BIOS,而目前的主流操作系统win7无法兼容,所以只好在xp系统上本程序,具体运行效果图见附录1。
在运行过程中,首先出现提示语,然后按下任意一按键,动画开始,可以看见一个大矩形非常圆滑的逐渐变为小矩形,最后小矩形消失出现一个红色心形。
此时按下R键动画重新播放,按下Q键程序退出。
经验证,本程序运行正常,基本达到要求。
6.总结
在本次课程设计中,大部分都是运用的都是微机原理设计与接口技术中所涉及到的汇编知识,但是由于设计需要使用BIOS中断知识,在学习新的知识以及使用的过程中遇到了很大的问题,但是经过不断的调试,还是解决了大部分困难,成功将程序调试出来了。
通过本次的课程设计我对汇编语言有了更好的认识,提高了自己的能力,虽然本次的课程设计综合度较高,没有涉及硬件,但实施起来还是给了我们很大的难度。
在调试过程中,出现了红心一直出现的情况,后经检查发现显示字符子程序没有以RET结尾,导致显示错误,经改正解决问题。
在本次课程设计中,收获颇多。
参考文献
[1]李珍香,刘红梅,赵润林,汇编语言课程设