可爱小动画程序设计毕业设计论文.doc
《可爱小动画程序设计毕业设计论文.doc》由会员分享,可在线阅读,更多相关《可爱小动画程序设计毕业设计论文.doc(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、武汉理工大学微机原理与接口技术课程设计说明书学 号: 微机原理及接口技术课程设计题 目可爱小动画程序学 院专 业班 级姓 名指导教师 2014年12月28日课程设计任务书学生姓名: 专业班级: 指导教师: 工作单位: 自动化学院 题 目: 可爱小动画程序 初始条件: 本动画先显示一个方框向中间由大变小,最后出现一个红心, 按Q退出程序。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1) 设计任务及要求分析(2) 方案比较及认证说明(3) 系统原理阐述(4) 硬件设计课题需要说明:硬件原理,电路图,采用器件的功能说明(5) 软件设计课题需要说明:软件思想,流
2、程图,源程序及程序注释(6) 调试记录及结果分析(7) 总结(8) 参考资料(9)附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图目录摘要11.课程设计的目的及要求21.1课程设计的要求21.2课程设计的目的22.设计要求分析22.1设计思路22.2汇编程序开发过程22.3汇编语言设计中主要指令33.程序设计方案33.1设计功能33.2设计方案43.3动画程序流程图44.汇编语言程序设计64.1显示方案设计64.2主程序设计64.3子程序设计65.结果分析116.总结12参考文献13附录1 运行效果图14附录2 程序源代码16摘要 本设计实现了用汇编语言编制一个小动画,该动画由几十个像
3、素点构成。在计算机图形设计中,通过对各像素点的移动来实现动画的播放。而处理这些像素点又需要大量的指令。汇编语言由于其就速度而言远比其他语言程序快得多,所以具备一定优势。 本文是着重通过对动画程序的设计实现汇编语言程序设计。阐述动画汇编程序的设计思路与方案,绘制程序流程图,运用8086CPU提供的指令、伪指令、宏指令及DOS,BIOS功能调用编写程序源代码,同时给出说明注释。并用计算机提供的软件调试工具对所编写程序进行运行调试。 关键字:动画 汇编语言 DOS BIOS可爱小动画程序1.课程设计的目的及要求1.1课程设计的要求本次课程设计要求编写一个完整的汇编程序程序来实现小动画。动画要求先显示
4、一个距形由大变小,最后屏幕上出现一个红色心形图案,按Q键退出程序。为了更方便的观看动画,还需设计操作提示语以及动画的循环播放功能。1.2课程设计的目的微机原理课程设计是自动化专业的专业必修课的实践环节。本课程设计的主要目的是掌握汇编程序设计的基本方法,并掌握汇编程序设计中常见错误的排除和避免,提供一个既动手又动脑的独立实践机会,将课本上的理论知识和实际有机的结合起来,锻炼分析解决实际问题的能力,从而进一步提高了实践运用的能力2.设计要求分析2.1设计思路本程序主要是利用BIOS功能调用的10H中断类型实现的。利用其12号功能,设置像素点的颜色、坐标和个数,从而画出图形需要的线段,如画方框、画心
5、等。画完图形之后延时,清屏。同时,利用dos功能调用的08号功能,从键盘输入字符。如果是任意键,则进入图形显示;如果是“R”键,则重新播放动画;如果是“Q”键,则退出。 由于需要在屏幕上显示矩形和心形,所以在进行图形的显示设计时,程序中需要绘制多种图案,具体由方框,点,心等来形成整个图案。为了程序的可阅读性,程序中将绘制基础图案的代码单独列为子程序,如画线子程序,画方框子程序,画点子程序,延时子程序,清屏子程序等。2.2汇编程序开发过程汇编语言设计总过程流程图如图2-2所示:图2-1汇编语言开发总过程流程图汇编语言程序设计要求综合课上所学的理论知识和汇编语言基础理论,根据设计的要求来充分分析问
6、题,将问题分解成一个一个的简单的环节,以便全面的分析程序来设计汇编语言。设计一个简明、易读、易调试、易维护、执行速度快、占用存储空间尽量少的好程序。2.3汇编语言设计中主要指令在整个程序中,主要运用的指令有:push(压入堆栈);Pop(从堆栈中释放首地址的内容);sub(减法指令);add(加法指令);mov(传送指令);call(过程调用指令);lea(地址传送指令);inc(加一指令);cmp(比较指令);jmp(跳转指令);jnz(条件跳转指令)等。3.程序设计方案3.1设计功能 本程序运行后的功能有:(1) 程序运行时显示提示信息,按任意键进入动画界面。(2) 让一个矩形向中心由大变
7、小(3) 显示心形。(4) 按“Q”键退出程序。3.2设计方案 由设计思路制定设计方案。先分别编写画矩形、画点、画心、清屏、延时和显示提示信息的子程序。然后,通过编写主程序来调用这些子程序实现课程设计要求。 可以通过改变BIOS功能调用的10H中断类型的11号功能(BL)的赋值来改变图形与线条以及背景的颜色。 为了使运行的动画人眼看上去是连续的,我们可以根据人眼的反应时间来设置延时程序。通过计算得出延时程序所需的循环的次数,以达到以上目的。计算式为: (人眼的反应时间:响应时间如果超过40毫秒,人眼就会出现运动图像的迟滞现象。)3.3动画程序流程图由设计方案画出动画程序流程图如图3-3所示:完
8、整源程序可见附录2。开始设置显示方式设置背景色,彩色调板显示提示信息从键盘输入任意字符 清屏 结束 画矩形 yes al=Q? no延时 no 减小矩形面积al=R? yes 是否最小? yes从键盘输入字符延时 no画心图3 动画程序流程图4.汇编语言程序设计4.1显示方案设计 由程序要求实现的显示效果来看,程序中要引入多种图案,具体由矩形、“心”等图形来形成整个图案。所以要在程序中出现多次画各种图案来填充整个图形,具体步骤如下: (1)画矩形,先是设置cx,dx,bx各个寄存器不同的初值,即设置像素点的颜色、坐标个数,接着由大到小画矩形,画每个矩形之前,各个寄存器都要设置不同的初值。 (2
9、)再由大到小画矩形,同时将上一个矩形用与背景色相同的颜色重新画一遍,即清除大矩形化小矩形,由程序要显示的效果来分析,还需要在中间延时以达到最佳显示效果,故还需要仔细调整延时时间。 (3)画心,画心形图案可以说是整个设计最困难的部分,由于使用画圆算法太过复杂,而所需心形图案并不复杂,所以采用画点的形式拼凑一个红心来达到目的。4.2主程序设计 根据上图3-3程序的结构流程图设计汇编语言的主程序。 先设置图形显示方式,用点像素形式来显示图形。然后设置背景色和调色板,利用BIOS功能调用的12号功能,设置像素点的颜色、坐标和个数,从而画出图形所需要的线段,如画矩形。完成图形之后延时,清屏。同时,利用D
10、OS系统功能调用的08号功能,从键盘输入字符。如果是任意键,则进入图形显示;如果是“R”键,则重新播放一遍;如果是“Q”键,则退出。4.3子程序设计为了实现程序效果,程序中还调用了不少的子程序,如画线子程序、画矩形子程序、画心子程序、延时子程序、清屏子程序。具体分析延时子程序和清屏子程序。(1) 画线子程序该子程序入口参数为BX、CX、DX、SI、DI。BX控制画线长度,CX、DX决定起始点,SI控制画线方向,DI控制画线速度(为了更好的观看效果,在程序中DI均为0,即最大画线速度)。程序首先push BX,然后判断SI的值,若为0则将BX与DX相加存入BX中,然后从CX:DX开始循环画像素点
11、,每画一次DX加1,直至DX与BX值相等;若SI为1,则将BX与CX相加存入BX中,然后从CX:DX开始循环画像素点,每画一次CX加1,直至CX与DX值相等,最后返回。其具体流程图如图4-1所示:开始保护现场BX=BX+DX画点SI=? CX加1DX加1CX=BX?DX=BX?恢复现场结束图4-1画线子程序流程图 子程序代码段如下所示:DRAW_LINE PROC NEAR ;画线子程序 PUSH BX CMP SI,0 JZ V_LINE1 ADD BX,CX H_LINE: ;写像素 MOV AH,0CH INT 10H CMP DI,0 JZ AA0 CMP DI,1 JZ AA1 CA
12、LL DELAY AA1: CALL DELAY AA0: INC CX CMP CX,BX JNE H_LINE JMP EXIT_LINE V_LINE1: ADD BX,DX V_LINE: MOV AH,0CH CMP DI,0 JZ BB0 CMP DI,1 JZ BB1 CALL DELAY BB1: CALL DELAY BB0: INT 10H INC DX CMP DX,BX JNE V_LINE EXIT_LINE: POP BX RETDRAW_LINE ENDP(2)延时子程序先pushcx,dx,即先让cx,dx进栈,接着设置dx寄存器的初值为2500,利用利用BIO
13、S功能调用的12号功能设置cx的初值为2801,利用其13号功能使之循环。在进行循环次数计数(即dxdx-1)后,判断循环是否结束:如(dx)0,继续循环,转移到目标地址dl2所在的指令,否则顺序执行。然后dx,cx顺序出栈。最后返回。其具体流程图如图4-2所示:图4-2延时子程序流程图 延时子程序代码段如下:DELAY PROC NEAR ;延时子程序 PUSH CX PUSH DX MOV DX,2500 DL2: MOV CX,2801 DL3: LOOP DL3 DEC DX JNZ DL2 POP DX POP CX RETDELAY ENDP (3)清屏子程序先设置功能号al及寄存
14、器bx,cx,dx的初值,然后进入line循环程序。在line循环程序中,先清除缓冲区并请求指定的输入功能,接着利用BIOS功能调用的10H中断类型实现显示器输出控制。在进行循环次数计数(即cxcx+1)后,判断循环是否结束:如(cx)320,则继续循环,转移到目标地址line所在的指令,否则再设置寄存器cx的初值,在进行循环次数计数(dxdx+1)后,判断循环是否结束:如(dx)200,则继续循环,转移到目标地址line所在的指令,否则顺序执行。最后返回。其具体流程图如图4-3所示:图4-3清屏子程序流程图清屏子程序代码段如下:CLEAR PROC NEAR MOV AL,0 MOV BX,
15、0 MOV CX,0 MOV DX,0 LINE: MOV AH,0CH INT 10H INC CX CMP CX,320 JNE LINE MOV CX,0 INC DX CMP DX,200 JNE LINE RETCLEAR ENDP5.结果分析 由于本程序需要使用BIOS,而目前的主流操作系统win7无法兼容,所以只好在xp系统上本程序,具体运行效果图见附录1。在运行过程中,首先出现提示语,然后按下任意一按键,动画开始,可以看见一个大矩形非常圆滑的逐渐变为小矩形,最后小矩形消失出现一个红色心形。此时按下R键动画重新播放,按下Q键程序退出。经验证,本程序运行正常,基本达到要求。6.总结
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 可爱 动画 程序设计 毕业设计 论文
限制150内