微机原理课设动画心.docx
- 文档编号:12387926
- 上传时间:2023-04-18
- 格式:DOCX
- 页数:34
- 大小:263.65KB
微机原理课设动画心.docx
《微机原理课设动画心.docx》由会员分享,可在线阅读,更多相关《微机原理课设动画心.docx(34页珍藏版)》请在冰豆网上搜索。
微机原理课设动画心
课程设计任务书
学生姓名:
陶浩专业班级:
自动化1204
指导教师:
石云工作单位:
自动化学院
题目:
可爱小动画程序
初始条件:
本动画先显示一个方框向中间由大变小,最后出现一个红心,按Q退出程序。
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
(1)设计任务及要求分析
(2)方案比较及认证说明
(3)系统原理阐述
(4)硬件设计课题需要说明:
硬件原理,电路图,采用器件的功能说明
(5)软件设计课题需要说明:
软件思想,流程图,源程序及程序注释
(6)调试记录及结果分析
(7)总结
(8)参考资料
(9)附录:
芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图
摘要
摘要:
编制动画是程序设计中一种非常有趣和有价值的学习过程。
计算机的动画设计是利用计算机图形显示技术来模仿物体活动的效果。
在计算机图形设计中,汇编语言具有潜在的优点,因为显示屏幕上的一个图像由几十个元素组成,处理这些图像元素需要大量的指令。
以速度而论,汇编语言程序远比高级语言快得多。
最高级的图像元素需要大量的指令。
最高级的图形技术,例如动画软件,只有以汇编语言设计才能产生更逼真、更有效的动态画面的效果。
本文是着重通过对动画“心”程序的设计实现汇编语言程序设计的编码过程。
介绍了汇编语言程序的编辑以及编译,对于动画“心”程序设计思想和设计流程也做出了全面的叙述,并且做出了动画“心”程序各个功能的实现过程以及详细设计过程,最终实现了动画“心”程序的主要功能,完成了本次的课程设计。
关键词:
计算机动画心汇编语言图形显示
1设计任务及要求
本次课程设计有如下要求:
(1)按任意键进入图形显示;
(2)按空格键重复出现“心”;
(3)按回车键将重复整个图形;
(4)按q键退出程序;
2程序设计思想
2.1汇编程序设计过程
一般汇编语言设计总过程流程图如下图1所示:
汇编语言程序设计要求综合以前所学知识,根据设计具体要求分析问题,将问题分解成一个一个的步骤,每步用汇编语言中的指令性语句,按先后顺序表达,设计一个不仅要满足要求,能正常运行,实现指定功能的程序;还应满足结构化、简明、易读、易调试、易维护、执行速度快、占用存储空间尽量少的好程序。
2.2本程序设计基本思路
本程序主要是利用BIOS功能调用的10H中断类型实现的。
利用其12号功能,设置像素的颜色、坐标和个数,从而画出图形需要的线段,如画方框、画对角线、画水平垂直线,以及采用行、列坐标连续写像素的方法填充图形等。
画完图形之后延时,清屏。
同时,利用DOS系统功能调用的08号功能,从键盘输入字符。
如果是任意键,则进入图形显示;如果是空格键,则改变“心”的大小;如果是其它键,则重新显示整个图形;如果是“q”键,则退出。
3设计方案及程序流程图
3.1设计方案
用基本设计思路拟订出原方案。
先分别编写画方框、画对角线、画水平垂直线,画斜线,画心型;以及清屏、清除心型、延时和显示文本信息的子程序。
然后,通过编写主程序调用这些子程序来实现设计的要求。
3.2方案比较及选取
该课设可以使用点阵法以及坐标法,然而,在考虑使用点阵法的时候发现图案比较复杂,使用点阵法也较为复杂,甚至无法成功完成课设要求,所以,我选择了坐标法,然而,使用坐标法的时候发现,程序依然很复杂,但是没有其他办法了,只有通过坐标法了,在不断的翻阅书籍以及上网查看相关案例,总算完成了程序。
3.3动画心程序流程图
由设计方案画出动画心程序流程图如图2所示:
4程序源代码与运行结果
4.1程序源代码
程序源代码见附录。
4.2程序运行结果
用编辑器输入编好的程序源代码转换成目标文件,再将目标文件连接生成可执行文件并运行该程序,得出程序运行结果。
图3为形成可执行文件
图3形成可执行文件
图4运行结果图——步骤一
图5运行结果图——步骤二
图6运行结果图——完整动画心图
5调试记录与分析
原程序调试过程:
根据设计原理先分别编写出画方框、画对角线、画水平垂直线,画斜线,画心型;以及清屏、清除心型、延时和显示文本信息的子程序;然后通过主程序调用每个子程序编写成可实现设计要求的完整程序。
在第一次运行程序时提示警告,没有定义堆栈段。
图7第一次运行的错误提示
经过查询资料得知,如果未使用堆栈则不需要定义堆栈段,该警告可以不管。
6附录
完整程序源代码:
DATASEGMENT
FULLDB0
BUFF1DB'WELCOMEYOUTORUNTHISPROGRAMME!
'
DB''
DB'*****PLEASEPRESSANYKEY*****$'
BUFF2DB'MYHEARTBEATSWITHYOURS!
'
DB'*****PLEASEqTOQUIT*****$'
DATAENDS
CODESEGMENT
MAINPROCFAR
ASSUMECS:
CODE,DS:
DATA
START:
PUSHDS
SUBAX,AX
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVAH,00
MOVAL,04
INT10H
MOVAH,0BH
MOVBH,00
MOVBL,1
INT10H
MOVAH,0BH
MOVBH,1
MOVBL,2
INT10H
MOVDX,OFFSETBUFF1;显示提示信息
MOVAH,09
INT21H
MOVAH,08
INT21H
CALLCLEAR;清除屏幕上的信息
SSS:
CALLTEXT;显示测试
MOVDI,2
MOVAL,1;画大方框
MOVCX,70
MOVDX,20
MOVBX,160
CALLBOX
MOVCX,71
MOVDX,21
MOVBX,158
AGAIN:
MOVAL,1
MOVDI,0
CALLBOX
CALLDELAY
MOVAL,0
MOVDI,0
CALLBOX
INCCX
INCDX
SUBBX,2
CMPCX,94
JNZAGAIN
MOVDI,0;画这第二个方框
MOVCX,95
MOVDX,45
MOVAL,1
MOVBX,110
CALLBOX
MOVCX,96
MOVDX,46
MOVBX,108
AGAIN_00:
MOVAL,1
MOVDI,0
CALLBOX
CALLDELAY
CALLDELAY
MOVAL,0
MOVDI,0
CALLBOX
INCCX
INCDX
SUBBX,2
CMPCX,114
JNZAGAIN_00
MOVCX,115;画第三个方框
MOVDX,65
MOVAL,1
MOVBX,70
CALLBOX
MOVCX,116
MOVDX,66
MOVBX,68
AGAIN_01:
MOVAL,1
MOVDI,0
CALLBOX
CALLDELAY
CALLDELAY
MOVAL,0
MOVDI,0
CALLBOX
INCCX
INCDX
SUBBX,2
CMPCX,129
JNZAGAIN_01
MOVDI,2
MOVAL,1;画小方框
MOVCX,130
MOVDX,80
MOVBX,40
CALLBOX
MOVDI,2
MOVAL,3;对角线
MOVSI,0
MOVCX,71
MOVDX,21
MOVBX,59
CALLXIE_LINE
MOVCX,171
MOVDX,121
MOVBX,59
CALLXIE_LINE
MOVSI,1
MOVCX,71
MOVDX,179
MOVBX,59
CALLXIE_LINE
MOVCX,171
MOVDX,79
MOVBX,59
CALLXIE_LINE
MOVCX,150;十字线
MOVDX,20
MOVSI,0
MOVBX,60
CALLDRAW_LINE
MOVCX,150
MOVDX,120
MOVBX,60
CALLDRAW_LINE
MOVCX,70
MOVDX,100
MOVSI,1
MOVBX,60
CALLDRAW_LINE
MOVCX,170
MOVDX,100
MOVBX,60
CALLDRAW_LINE
MOVSI,1
MOVCX,70
MOVDX,60
MOVBX,60
CALLMID_LINE
MOVCX,170
MOVDX,110
MOVBX,60
CALLMID_LINE
MOVSI,2
MOVCX,110
MOVDX,20
MOVBX,30
CALLMID_LINE
MOVCX,160
MOVDX,120
MOVBX,30
CALLMID_LINE
MOVSI,3
MOVCX,70
MOVDX,140
MOVBX,60
CALLMID_LINE
MOVCX,170
MOVDX,90
MOVBX,60
CALLMID_LINE
MOVSI,4
MOVCX,110
MOVDX,180
MOVBX,30
CALLMID_LINE
MOVCX,160
MOVDX,80
MOVBX,30
CALLMID_LINE
MOVDI,0
MOVAL,1;再画一次大方框
MOVCX,70
MOVDX,20
MOVBX,160
CALLBOX
MOVDI,0
MOVAL,1;再画一次小方框
MOVCX,130
MOVDX,80
MOVBX,40
CALLBOX
MOVDI,0
MOVCX,95
MOVDX,45
MOVAL,1
MOVBX,110
CALLBOX
MOVCX,115
MOVDX,65
MOVAL,1
MOVBX,70
CALLBOX
MOVDI,1;填充
CALLFILL
CALLFILL_2
CALLFILL_3
MOVCX,149;加粗
MOVDX,120
MOVAL,2
MOVBX,60
MOVSI,0
CALLDRAW_LINE
MOVCX,151
MOVDX,120
MOVAL,2
MOVBX,60
MOVSI,0
CALLDRAW_LINE
HEART_:
;画心形图案
CALLCLS_BOX
CALLHEART
MOVAH,08
INT21H
CMPAL,'q'
JZOK
CMPAL,20H
JZHEART_
CALLCLEAR
JMPSSS
OK:
RET
MAINENDP
FILLPROCNEAR;程序填充
MOVFULL,0
MOVAL,5
MOVCX,160
MOVDX,121
MOVSI,0
MOVBX,60
FILL_Y:
PUSHCX
PUSHDX
PUSHBX
CALLDRAW_LINE
POPBX
POPDX
POPCX
SUBBX,2
INCCX
ADDDX,2
INCFULL
CMPFULL,30
JNEFILL_Y
RET
FILLENDP
FILL_2PROCNEAR
MOVFULL,0
MOVAL,5
MOVCX,140
MOVDX,121
MOVSI,0
MOVBX,60
FILL_Y1:
PUSHCX
PUSHDX
PUSHBX
CALLDRAW_LINE
POPBX
POPDX
POPCX
SUBBX,2
DECCX
ADDDX,2
INCFULL
CMPFULL,30
JNEFILL_Y1
RET
FILL_2ENDP
FILL_3PROCNEAR
MOVAL,1
MOVFULL,0
MOVSI,0
MOVCX,140
MOVDX,121
MOVBX,60
RE_FILL:
PUSHBX
PUSHCX
PUSHDX
CALLDRAW_LINE
POPDX
POPCX
POPBX
INCCX
INCFULL
CMPFULL,9
JNERE_FILL
MOVFULL,0
MOVCX,159
MOVDX,121
MOVBX,60
RE_FILL2:
PUSHBX
PUSHCX
PUSHDX
CALLDRAW_LINE
POPDX
POPCX
POPBX
DECCX
INCFULL
CMPFULL,9
JNERE_FILL2
RET
FILL_3ENDP
DRAW_LINEPROCNEAR;画直线程序
PUSHBX
CMPSI,0
JZV_LINE1
ADDBX,CX
H_LINE:
MOVAH,0CH
INT10H
CMPDI,0
JZAA0
CMPDI,1
JZAA1
CALLDELAY
AA1:
CALLDELAY
AA0:
INCCX
CMPCX,BX
JNEH_LINE
JMPEXIT_LINE
V_LINE1:
ADDBX,DX
V_LINE:
MOVAH,0CH
CMPDI,0
JZBB0
CMPDI,1
JZBB1
CALLDELAY
BB1:
CALLDELAY
BB0:
INT10H
INCDX
CMPDX,BX
JNEV_LINE
EXIT_LINE:
POPBX
RET
DRAW_LINEENDP
XIE_LINEPROCNEAR;画斜线程序
ADDBX,CX
CMPSI,1
JZXIELINE_1
XIELINE_0:
MOVAH,0CH
INT10H
INCDX
INCCX
CMPCX,BX
JNEXIELINE_0
JMPEXIT_XIE
XIELINE_1:
MOVAH,0CH
INT10H
DECDX
INCCX
CMPCX,BX
JNEXIELINE_1
EXIT_XIE:
RET
XIE_LINEENDP
MID_LINEPROCNEAR;画条直线
ADDBX,CX
CMPSI,2
JZMIDLINE_2
CMPSI,3
JZMIDLINE_3
CMPSI,4
JZMIDLINE_4
MIDLINE_1:
MOVAH,0CH
INT10H
INCDX
ADDCX,2
CMPCX,BX
JNEMIDLINE_1
JMPEXIT_LINES
MIDLINE_2:
MOVAH,0CH
INT10H
ADDDX,2
INCCX
CMPCX,BX
JNEMIDLINE_2
JMPEXIT_LINES
MIDLINE_3:
MOVAH,0CH
INT10H
DECDX
ADDCX,2
CMPCX,BX
JNEMIDLINE_3
JMPEXIT_LINES
MIDLINE_4:
MOVAH,0CH
INT10H
SUBDX,2
INCCX
CMPCX,BX
JNEMIDLINE_4
EXIT_LINES:
RET
MID_LINEENDP
BOXPROCNEAR;画方框
PUSHCX
PUSHDX
PUSHCX
PUSHDX
PUSHCX
PUSHDX
PUSHCX
PUSHDX
MOVSI,1
CALLDRAW_LINE;顶部
POPDX
POPCX
ADDCX,BX
MOVSI,0
CALLDRAW_LINE;右边
POPDX
POPCX
MOVSI,0
CALLDRAW_LINE;左边
POPDX
POPCX
MOVSI,1
ADDDX,BX
CALLDRAW_LINE;底部
POPDX
POPCX
RET
BOXENDP
SPACEPROCNEAR;显示一个空间
MOVAH,02
MOVDL,''
INT21H
RET
SPACEENDP
RETURNPROCNEAR;回车
MOVAH,2
MOVDL,0AH
INT21H
MOVDL,0DH
INT21H
RET
RETURNENDP
TEXTPROCNEAR;显示文本信息
MOVBH,0
MOVDH,0
MOVDL,0
MOVAH,2
INT10H
MOVDX,OFFSETBUFF2
MOVAH,09
INT21H
TEXTENDP
HEARTPROCNEAR
MOVCX,136;画心形
MOVDX,93
MOVSI,0
MOVBX,5
MOVAL,2
CALLDRAW_LINE
MOVCX,137;画心形
MOVDX,91
MOVSI,0
MOVBX,9
CALLDRAW_LINE
MOVCX,138;画心形
MOVDX,90
MOVSI,0
MOVBX,12
CALLDRAW_LINE
MOVCX,139;画心形
MOVDX,89
MOVSI,0
MOVBX,14
CALLDRAW_LINE
MOVCX,140;画心形
MOVDX,88
MOVSI,0
MOVBX,16
CALLDRAW_LINE
MOVCX,141;画心形
MOVDX,88
MOVSI,0
MOVBX,17
CALLDRAW_LINE
MOVCX,142;画心形
MOVDX,87
MOVSI,0
MOVBX,19
CALLDRAW_LINE
MOVCX,143;画心形
MOVDX,87
MOVSI,0
MOVBX,20
CALLDRAW_LINE
MOVCX,144;画心形
MOVDX,87
MOVSI,0
MOVBX,21
CALLDRAW_LINE
MOVCX,145;画心形
MOVDX,88
MOVSI,0
MOVBX,21
CALLDRAW_LINE
MOVCX,146;画心形
MOVDX,88
MOVSI,0
MOVBX,22
CALLDRAW_LINE
MOVCX,147;画心形
MOVDX,89
MOVSI,0
MOVBX,22
CALLDRAW_LINE
MOVCX,148;画心形
MOVDX,90
MOVSI,0
MOVBX,22
CALLDRAW_LINE
MOVCX,149;画心形
MOVDX,91
MOVSI,0
MOVBX,22
CALLDRAW_LINE
MOVCX,150;画心形
MOVDX,91
MOVSI,0
MOVBX,22
CALLDRAW_LINE
MOVCX,151;画心形
MOVDX,90
MOVSI,0
MOVBX,22
CALLDRAW_LINE
MOVCX,152;画心形
MOVDX,89
MOVSI,0
MOVBX,22
CALLDRAW_LINE
MOVCX,153;画心形
MOVDX,88
MOVSI,0
MOVBX,22
CALLDRAW_LINE
MOVCX,154;画心形
MOVDX,88
MOVSI,0
MOVBX,21
CALLDRAW_LINE
MOVCX,155;画心形
MOVDX,87
MOVSI,0
MOVBX,21
CALLDRAW_LINE
MOVCX,156;画心形
MOVDX,87
MOVSI,0
MOVBX,20
CALLDRAW_LINE
MOVCX,157;画心形
MOVDX,87
MOVSI,0
MOVBX,19
CALLDRAW_LINE
MOVCX,158;画心形
MOVDX,88
MOVSI,0
MOVBX,17
CALLDRAW_LINE
MOVCX,159;画心形
MOVDX,88
MOVSI,0
MOVBX,16
CALLDRAW_LINE
MOVCX,160;画心形
MOVDX,89
MOVSI,0
MOVBX,14
CALLDRAW_LINE
MOVCX,161;画心形
MOVDX,90
MOVSI,0
MOVBX,12
CALLDRAW_LINE
MOVCX,162;画心形
MOVDX,91
MOVSI,0
MOVBX,9
CALLDRAW_LINE
MOVCX,163;画心形
MOVDX,93
MOVSI,0
MOVBX,5
CALLDRAW_LINE
RET
HEARTENDP
DELAYPROCNEAR;延迟程序
PUSHCX
PUSHDX
MOVDX,25
DL2:
MOVCX,2801
DL3:
LOOPDL3
DECDX
JNZDL2
POPDX
POPCX
RET
DELAYENDP
CLEARPROCNEAR;清屏
MOVAL,0
MOVBX,0
MOVCX,0
MOVDX,0
LINE:
MOVAH,0CH
INT10H
INCCX
CMPCX,320
JNELINE
MOVCX,0
INCDX
CMPDX,200
JNELINE
RET
CLEARENDP
CLS_BOXPROCNEAR
MOVAL,0
MOVBX,0
MOVCX,131
MOVDX,81
S_LINE:
MOVAH,0CH
INT10H
INCCX
CMPCX,170
JNES_LINE
MOVCX,131
INCDX
CMPDX,120
JNES_LINE
RET
CLS_BOXENDP
CODEENDS
ENDSTART
7参考文献
[1]周佩玲、彭虎、傅忠谦,《微机原理与接口技术》.北京:
电子工业出版社2011.8第三版
[2]姚燕南,《微型计算机原理与接口技术》.北京:
高等教育出版社,2004
[3]马瑞芳,《汇编语言程序设计》.西安:
西北工业大学出版社,2002.3第一版
[4]邹逢兴,《计算机硬件技术及应用基础.下册;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 动画