动态图形设计小车动画doc.docx

上传人:b****7 文档编号:9075236 上传时间:2023-02-03 格式:DOCX 页数:12 大小:38.49KB
下载 相关 举报
动态图形设计小车动画doc.docx_第1页
第1页 / 共12页
动态图形设计小车动画doc.docx_第2页
第2页 / 共12页
动态图形设计小车动画doc.docx_第3页
第3页 / 共12页
动态图形设计小车动画doc.docx_第4页
第4页 / 共12页
动态图形设计小车动画doc.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

动态图形设计小车动画doc.docx

《动态图形设计小车动画doc.docx》由会员分享,可在线阅读,更多相关《动态图形设计小车动画doc.docx(12页珍藏版)》请在冰豆网上搜索。

动态图形设计小车动画doc.docx

动态图形设计小车动画doc

 

华北科技学院计算机系

课程设计报告

 

课程名称汇编语言课程设计

设计题目动态图形设计

设计时间2008-12-08至2008-12-19

年级2006专业班级网络B061

姓名皇甫建杰学号200507024207

指导教师李冬艳

成绩

评语

计算机系制

一.课程设计的性质和目的

性质:

《汇编语言》是计算机科学与技术专业及网络工程本科学生必修的专业课程。

目的要求:

进行程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。

二.课程设计的要求

1.遵循模块化、结构化的程序设计方法。

2.要求程序必须正确。

3.程序简明易懂,多运用输入输出提示,出错信息及必要的注释。

4.要求程序结构合理,语句使用得当。

5.适当追求编程技巧和程序运行效率。

三.主要仪器设备及软件

计算机、MASM汇编软件。

四.设计题目

动态图形设计:

要求:

小车在公路上行驶,从屏幕左侧驶向右侧。

在到达屏幕右侧,公路下降一段距离并改变颜色,然后小车继续由左向右行驶驶。

当下降到屏幕底部时,又返回到屏幕顶部重复上述过程,直到有键按下。

公路和小车的颜色不样。

也要用INT10H功能。

五.题目分析

图形移动程序,调用CRT显示功能实现。

具体可分5步进行:

1.在屏幕上显示图形(单字符或多字符图形)。

2.延迟一个时间周期,这样图形更清晰。

3.清除图形。

4.改变图形的行列坐标,修改图形显示位置。

5.若没有键按下,则重复以上过程

六.运行结果

选择操作

显示动画

七.程序流程

本程序主要分三段:

数据段,堆栈段及代码段。

其中数据段定义了小车的图形集,堆栈段定义了堆栈空间,代码段执行各种功能,大体包括显示图形,延时,移动图形,清屏等。

具体流程图如下

八.代码

datasegment

infordb0dh,0ah,'input1or2(1:

showacar,2:

exit):

$'

bufadb200

db?

db200dup(0)

bufbdb200dup(?

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:

movax,data

movds,ax

movah,0;设置显示方式为640*350彩色图形方式

moval,10h

int10h

leadx,infor;在显示器上显示字符串提示信息

movah,9

int21h

movah,0;从键盘读取字符到AL寄存器

int16h

cmpal,31h

jnea

callqiche

subax,ax

a:

cmpal,32h;比较al是否等于2

jnestart

b:

movah,4ch;终止当前程序并返回调用程序

int21h

clearmacropch,pcl,pdh,pdl,pbh

;清屏宏定义

movah,0

moval,10h

int10h

movah,6;调用6号功能设置整个屏幕为bh值所对应的属性

subal,al

moval,1;设置滚动行数为1

movch,pch

movcl,pcl;窗口左上角(0行,0列)

movdh,pdh

movdl,pdl;窗口右下角(24行,79列)

movbh,pbh;正常属性显示:

1绿、2青、3蓝、4红、5粉、6黄、7白(高亮)

int10h

endm

dlyprocnear;延时子程序

pushcx

pushdx

movdx,10000

dl1:

movcx,6801

dl2:

loopdl2

decdx

jnzdl1

popdx

popcx

ret

dlyendp

qicheprocnear;汽车子程序

movah,0

moval,10h

int10h

pushdx

pushbx

cmpax,ax;zf标志位置1

movdh,3

movbh,1

next:

cmpdh,25;公路是否退至屏幕底端?

jbnext1

subdh,dh

movdh,3

next1:

movah,01h;检查键盘缓冲区中有无输入字符(zf是否等于0)

int16h

jnefh;zf等于0则退出程序

clear0,0,dh,79,bh;清屏宏调用

leadi,car;di指向字符图形表

pushdx;保护dh源值

callmove_shape

popdx

popax

adddh,3

addbh,1

cmpbh,8;循环改变公路的颜色

jbbs

subbh,bh

movbh,1

bs:

jmpnext

fh:

ret

qicheendp

move_shapeprocnear;移动子程序

pushax

pushbx

pushcx

subdh,2;从第1行0列位置开始显示汽车

movdl,0

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

九.心得体会

两周的课程设计,让我基本上掌握了,子程序的调用与运用;它不但大大减化了程序代码,使程序的逻辑性大大加强。

汇编语言是一门与硬件直接打交道的语言,因此很多操作功能的使用需要反复调用,为此,程序显得十分烦琐,通过子程序的调用,可将这些重复的步骤,加以简化,为内存节省空间。

可是,子程序也有若点,它的形式参数只能为操作数与地址,当数据交错时,容易出错,于是又引入了一个概念:

宏。

宏必须先定义,后调用,他的形式参数比较灵活,但是它不能节省空间。

因此,我们常常要用宏与子程序相互联系起来。

使我们的程序不断的优化,达到更好的效果,此外,对于数据缓冲区里的内部结构了解掌握也是非常重要的,这将是一个飞跃。

因为它会使得我们对数据的处理更加的精准。

通过编程和对编程过程中遇到的问题的思考,有效的提高了我对汇编的认识和理解,切实的提高了我的编程能力,补全了我的不足。

通过这次课程设计,我巩固所了学过的知识,能用汇编语言熟练地运用顺序、选择、循环三大结构,进一步掌握了各个指令的功能,特别是转向指令,以及正确地运用DEBUG指令。

在整个程序的编写中,调试占了很大部分的时间。

要想写好汇编语言的程序,必须认真对待代码的每一个细节,还必须熟练的掌握debug命令,这对程序的调试是非常重要的。

通过这次实际动手能力的培养,我进一步熟悉了汇编语言的结构和使用方法,基本达到了能独立阅读、编制和调试一定规模的汇编语言程序的水平。

设计过程中暴露出了自己的一些问题,动手和实践能力不足,知识上还有许多漏洞,缺乏大型程序的开发经验,理论联系实际的能力更有待提高。

希望随着以后设计的增多,阅历的增长,能够逐渐弥补这些不足

对我而言,知识上的收获重要,精神上的丰收更加可喜。

让我知道了学无止境的道理。

我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。

挫折是一份财富,经历是一份拥有。

这次课程设计必将成为我人生旅途上一个非常美好的回忆!

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1