汽车动画设计.docx
《汽车动画设计.docx》由会员分享,可在线阅读,更多相关《汽车动画设计.docx(15页珍藏版)》请在冰豆网上搜索。
![汽车动画设计.docx](https://file1.bdocx.com/fileroot1/2023-7/8/6378f8a0-8fec-49f3-8534-a23e57394cfb/6378f8a0-8fec-49f3-8534-a23e57394cfb1.gif)
汽车动画设计
汽车动画设计
1概述
电子计算机是20世纪科学技术最卓越的成就之一。
计算机技术的发展所带来的信息技术的飞速发展,给人类社会带来了进步,是人们的生产、生活发生了深刻的变化。
计算机知识与应用技术已经成为了人类知识生活十分重要的组成部分。
自从1946年世界上第一台电子计算机由美国宾夕法尼亚大学研制成功,时至今日计算机已经进入了第五代计算机时代。
在此过程中计算机经历了电子管、晶体管、集成电路、超大规模集成电路四个阶段,现在各国都在致力开发第五代即智能计算机。
以微处理器为核心的微型计算机,也从4位、8位、16位发展到32位、64位,计算机的应用范围也从最初的科学计算发展到目前的无所不及。
微型计算机是第四代计算机的典型代表。
随着VLSI技术的发展,构成微型计算机的核心单元CPU不断更新换代,但是计算机的原理基本上没有变。
所以通过学习8086CPU的系统结构、基本原理、指令系统、中断及接口等知识,也可以在实践中掌握和运用计算机知识。
2程序设计过程
2.1程序设计方法步骤
程序设计首先要将问题分解成一个一个的步骤,每步都可以用汇编语言中的指令性语句,按照先后顺序表达。
设计一个好的程序,不仅要满足设计要求,能正常运行,实现预定功能,还应满足:
1)结构化、简明、易读、易调试、易维护;
2)执行速度快;
3)占用存储空间尽量少。
汇编语言程序设计步骤如下:
1)分析问题,抽象出问题的数学模型,确定解决问题的合理算法;
2)将问题分解成若干模块,理清各部分之间关系;
3)绘制流程图或写出程序步骤,可以从粗到细地把算法逐步具体化;
4)分配存储空间及工作单元,根据流程图编写程序;
5)静态检查,仔细阅读程序尽量找出诸如语法、逻辑等错误;
6)上机调试。
2.2设计任务及要求
运用汇编语言编写程序完成以下任务:
1、运行可执行程序,显示汽车来过。
2、设计适当的背景变化。
3、按Q键退出程序。
要完成以上任务,首先要掌握汇编语言的结构、指令及语句格式分类,还要熟悉BIOS及DOS的功能调用,如在设计的程序中用到的对屏幕操作的“INT10H”,对键盘操作的“INT16H”等。
2.3汽车图形绘制
小汽车的图形是由一些字母和符号组成,字符图形表如下:
CARDB7;
DB52H,7,0,0
DB0B1H,7,0,1
DB0DBH,7,0,1
DB0DBH,7,0,1
DB4FH,7,1,0
DB4FH,7,0,-3
DB2,7,-2,1
2.4程序流程图
2.4.1主程序流程图
通过对题目任务的分析,画出主程序流程图如图1所示:
AL是否为C
汽车子程序运行
AL是否为Q
程序结束
运动子程序运行
设置屏幕显示方式,并从键盘读取字符存入AL
开始
建立汽车字符图形表,并初始化
N
N
Y
Y
图1主程序流程图
2.4.2子程序流程图
汽车子程序流程图如图2所示:
运动子程序流程图如图3所示:
结束
开始
入栈保护
设置屏幕显示方式
设置色彩组颜色
清屏宏调用
CAR的首址DI
汽车显示位置
运动子程序运行
显示字符
DI+4指向下一个字符
结束
开始
入栈保护
设置显示方式
字符个数存放入CL
DI指向字符图形表
改变行列坐标
取字符并字符属性
图2汽车子程序流程图图3运动子程序流程图
3源程序代码
题目源程序如下:
DATASEGMENT
INFO1DB0DH,0AH,'INPUTcORq:
(c:
car,q:
exit)$'
CARDB7;小汽车的字符图形表
DB52H,7,0,0
DB0B1H,7,0,1
DB0DBH,7,0,1
DB0DBH,7,0,1
DB4FH,7,1,0
DB4FH,7,0,-3
DB2,7,-2,1
CHAR_CNTDW?
POINTERDW?
LINE_ONDB?
COL_ONDB?
DATAENDS
STACKSEGMENTstack
DB200DUP(0)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
START:
MOVAH,DATA
MOVDS,AH
MOVAH,0;设置显示方式为320*200彩色图形方式
MOVAH,4
INT10H
LEDDX,INFO1;在显示器上显示字符串提示信息
MOVAH,9
INT21H
MOVAH,0;从键盘读取字符到AL寄存器
INT16H
CMPAL,43H;比较AL是否等于c
JNEA
CALLQICHE
A:
CMPAL,63H
JNEB
CALLQICHE
B:
CMPAL,51H
JNED
JMPE
D:
CMPAL,71H
JNESTART
E:
MOVAH,4CH;终止当前程序并返回调用程序
INT21H
CLEARMACROpch,pcl,pdh,pdl,pbh;清屏宏定义
MOVAH,0
MOVAL,4
INT10H
MOVAH,6;调用6号功能
MOVAL,0;设置整个屏幕为空白
MOVCH,pch
MOVCL,pcl;窗口左上角(0行,0列)
MOVDH,pdh
MOVDL,pdl;窗口右下角(24行,79列)
MOVBH,pbh;正常属性显示
INT10H
ENDM
DLYPROCNEAR;延时子程序
PUSHCX
PUSHDX
MOVDX,10000
DL1:
MOVCX,6801
DL2:
LOOPDL2
DECDX
JNZDL1
POPDX
POPCX
RET
DLYENDP
QICHEPROCNEAR;汽车子程序
PUSHAX
PUSHBX
PUSHCX
PUSHDX
MOVAH,0
MOVAL,4
INT10H
MOVAH,0BH;设置彩色组颜色为绿、红、黄
MOVBH,01
MOVBL,00
INT10H
CLEAR0,0,24,79,7;清屏宏调用
LEADI,CAR;DI指向字符图形表
MOVDH,5;从第5行5列位置开始显示汽车
MOVDL,0
CALLMOVE_SHAPE
RET
QICHEENDP
MOVE_SHAPEPROCNEAR
PUSHAX
PUSHBX
PUSHCX
PUSHDX
PUSHDI
MOVAH,0FH;取当前显示方式
INT10H
SUBCH,CH
MOVCL,[DI];CL放字符个数
INCDI;DI指向字符图形表中的第一个字符
MOVCHAR_CNT,CX
MOVPOINTER,DI
MOVLINE_ON,DH
MOVCOL_ON,DL
PLOT_NEXT:
ADDDH,[DI+2];改变行列坐标
ADDDL,[DI+3]
CMPDL,80;出屏否?
JBMOV_CRSR
POPDI
POPDX
POPCX
POPBX
POPAX
JMPEXIT2
MOV_CRSR:
MOVAH,2
INT10H
MOVAL,[DI];取字符值
MOVBL,[DI+1];取字符属性
PUSHCX
MOVCX,1
MOVAH,09;显示字符
INT10H
POPCX
ADDDI,4;DI指向下一个字符
LOOPPLOT_NEXT
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
MOVDL,COL_ON
RET
ERASEENDP
CODEENDS
ENDSTART
4程序调试
在设计完每个模块后,都单独的运行调试,发现有问题则找到问题并且解决后再进行下一步的设计工作。
在每个模块单独的调试中基本上没有遇到什么大的问题,只是有一些语法上的错误,在各个模块分别设计完成后,将它们按照通信关系组合在一起,一步步再进行调试。
程序调试过程中遇到了一些问题。
执行中断时屏幕上显示提示字符后,无法显示小车。
经过检查思考后发现,在程序中将模块间的关系搞混乱了,重新调整各个模块间的关系,以及中断处理的关系后,程序能够正确的执行了,进行运算检验,程序都可以正确的执行。
通过调试,发现了设计中存在的漏洞,经过修改,成功地完成了设计任务的要求。
总结
通过这次为期两周的微机原理课程设计,我深深的感觉到这次的课设是比较难的,比较复杂的,让我深深的感觉到自己的不足。
这次课设是一次具有挑战性的实践课程,在整个课程设计过程中我遇到很多困难。
首先是在处理题目上遇到一些问题,在理解题意分析时,出现偏差,导致错误,从中明白到要做到理论联系实际是相当困难的。
而且在写报告过程中发现自己对于课本的理论知识的理解是多么的匮乏,以致在报告中对于理论的阐述和自己的见解是很寥少的。
但是正是这次极具挑战性的课设,使我得到了锻炼和学习。
通过对于汇编语言的应用,我学会了一些编程方法,知道了课堂知识运用与实践的困难,而这些对自身的以后的学习都有很大帮助。
通过这次的课程设计我学会了很多东西,了解到理论联系实际是多么重要,同时又是多么的困难,还有平时学习一定要认真踏实,把理论知识要弄懂要理解消化为自己的知识,同时要学会在理论学习时善于思考,多得一些自己的想法和思路,并且多读一些课外书,开阔视野增长一些课外知识。
感谢这次课设过程中给予我帮助同学和老师,并且感谢学校给予我们这次机会提高自己的实践能力。
这次的课设终于结束了,我感到什么事都不应该轻易放弃,只要努力就会有结果。
再次深深的感谢老师对于我的帮助与指导,使我学到这么多东西,也再次感谢给予我帮助的同学们!
参考文献
[1]彭虎,周佩玲.傅忠谦编著.2006.微机原理与接口技术.第二版.北京:
电子工业出版社
[2](美)RandallHyde著.陈曙晖译.毛希平校.2005.汇编语言编程艺术.北京:
清华大学出版社
[3](美)KipR.Irvine著.温玉杰、张家生、罗云彬等译.罗云彬校.2004.Intel汇编语言程序设计.第四版.北京:
电子工业出版社
[4]金汉均、金洋编著.2007.5.汇编语言程序设计.武汉:
武汉大学出版社
[5]荆淑霞编著.2005.9.微机原理与汇编语言程序设计.北京:
清华大学出版社,北京交通大学出版社
附录1:
INT10H中断
功能号:
00H
功能:
设置显示模式
入口参数:
AH=00H
AL=显示模式
显示模式列表:
显示模式显示模式属性
00H40×2516色文本
01H40×2516色文本
02H80×2516色文本
04H320×2004色
05H320×2004色
06H640×2002色
07H80×252色文本
08H160×20016色
09H320×20016色
0AH640×2004色
0BH保留
0CH保留
0DH320×20016色
0EH640×20016色
0FH640×3502色(单色)
10H640×3504色
11H640×4802色
12H640×48016色
13H320×200256色
功能号:
02H
功能:
用文本坐标下设置光标位置
入口参数:
AH=02H
BH=显示页码
DH=行(Y坐标)
DL=列(X坐标)出口参数:
无
功能号:
09H
功能:
在当前光标处按指定属性显示字符
入口参数:
AH=09H
AL=字符
BH=显示页码
BL=属性(文本模式)或颜色(图形模式)
CX=重复输出字符的次数出口参数:
无
功能号:
0BH
功能:
设置调色板、背景色或边框
入口参数:
AH=0BH
设置颜色:
BH=00H,BL=颜色
选择调色板:
BH=01H,BL=调色板(320×200、4种颜色的图形模式)出口参数:
无
功能号:
0FH
功能:
读取显示器模式
入口参数:
AH=0FH
出口参数:
AH=屏幕字符的列数
AL=显示模式(参见功能00H中的说明)
BH=页码
附录2:
INT16H中断
功能号:
00H和10H
功能:
从键盘读入字符
入口参数:
AH
=00H—读键盘
=10H—读扩展键盘,可根据0000:
0496H单元的内容判断:
扩展键盘是否有效
出口参数:
AH=键盘的扫描码
AL=字符的ASCII码
本文来自新动力影视传媒转载请注明