汇编语言课程设计小车动态图形设计

合集下载

在屏幕上显示一个开动的小汽车

在屏幕上显示一个开动的小汽车

《微机原理与接口技术课程设计》实验报告实验名称:在屏幕上显示一个开动的小汽车姓名:学号:专业:实验室:实验时间:2011年11月22日报告时间:2011年12月13日评定成绩:审阅教师:一.实验目的1.掌握汇编语言程序指令编辑、宏汇编、连接、运行基本概念。

2.熟练掌握debug调试程序的常用命令和窗口功能。

3.通过所学的编程知识实现简单的动画显示过程。

4.综合运用多学知识发现、提出、分析和解决问题,锻炼实践能力。

5.最终结果为:在屏幕上显示一个开动的小汽车二.实验内容1.在屏幕上显示图形2.延迟一个时间周期,这样图形更清晰。

3.清除图形、改变图形的行列坐标。

4.在屏幕上显示出动画的效果。

5.返回第一步,重复上述过程。

三.程序流程图备注:(具体程序流程见下页)五.结论程序运行后发现小车移动速度过快,导致观察的不清晰,再次调出程序时对其进行了延时的程序时间参数的修改,反复调试运行才完成的设计的要求,在许多调试程序的细节中容易出错,必定少不了认证二字。

一次不成功的调试并说明不了什么,重要的是从失败中寻找成功的途径和方法。

运行结果见下图:六.收获通过对汇编语言的学习,学到了很多的调试知识,对DEBUG有了一定的认识,通过实践也加深了对理论知识的理解,在这次程序设计中也借鉴了很多的子程序,虽然这些子程序的设计是固定的,但是我能比较熟练的直接调用,也方面了我的设计,我最大的收获就是在这次课程设计中,真正的体会到了个人的能力是有限的,合作的重要性,遇到棘手的问题总是大家一起讨论,把问题解决,直到程序能够正常运行。

值此我不禁加深了课本的知识,同时也增强了自己动手、动脑的能力,我觉得这很新奇,对此我也很有兴趣去研究它。

毕竟是没有受过专业的训练,对程序的流程图的画法还是有所欠缺,对种种步骤还不是很了解,这一点还需反复揣摩。

我也懂的逻辑推理对程序设计的重要性,找到简单、合适的高效率方法可以节约程序运行的时间,从而提高程序的运行效率。

CSCAD大作业——小车运动仿真

CSCAD大作业——小车运动仿真
一.课程设计流程图

仿真下图(图1)所示小车系统的运动,分析阻尼系数C和弹簧弹性系数K对小车运动的影响。仿真四组参数,第一组参数:阻尼系数C=1和弹簧弹性系数K=2,小车质量M=5kg,第二组参数:C=0.5,K=2,M=5 kg;第三组参数:C=1,K=1,M=5 kg;第四组参数:C=0.5,K=1,M=5 kg,要求给出系统数学模型
图8
对比(图7)和(图8),我们可知:
小车的稳定性是随着时间的增加而趋于稳定的。
3.
阻尼系数C=1、弹簧弹性系数K=1、小车质量M=5kg进行仿真,由此可知Gain=0.2,Gain1=0.2,模型如(图9)。
图9
首先我们把仿真时间设置为50,可得到如下所示仿真结果如(图10):
图10
由此图像可知当Gain=0.2,Gain1=0.2时,小车在弹簧弹性系数k和M的比值与阻尼系数c和M的比值分别为0.2和0.2的作用下,其运动过度过程时间减少了,不到40左右就稳定下来。而且振荡次数也减少了
1.3
由力的平衡可知:小车弹簧的拉力(KX),阻尼力(CX)和动力(MX)的合力为0,即:
+ ……………①
变换方程①可得:
将C=1,K=2和M=5带入公式②得:
又知:
由二阶系统可知加速度的一次积分是速度,二次积分是位移,而由上式可看出小车运动的初始位移为1m,系统分析完毕得到系统的数学模型后,就该对其进行仿真了。

1.
根据题目的数学模型可知,在仿真模型中要用到2个 (积分器)、2个 (比例运算)、1个 (求和运算)和1个 (输出仿真结果)等仿真原件。以下则建立系统的仿真模型如(图2)。
2.
2.1 此求和图标代表x的二阶导数,即将List of sign:设置成--。

汇编语言动画程序设计

汇编语言动画程序设计

目录1.设计目的、内容、时间安排 (2)1.1 设计目的: (2)1.2设计内容: (2)1.3 时间安排: (2)2.设计环境与与工具 (2)3.程序设计算法说明、流程图 (2)3.1主程序main proc far (3)3.2 MOVE控制汽车和机器人运动的子程序 (4)3.3 DISP输出图形子程序 (6)3.4 car_disp,man_disp子程序 (6)3.5 car_clear,man_clear子程序 (7)3.6 三个宏定义 (7)3.6.1 clear_car,clear_man (7)3.6.2 DLY 宏定义延时程序 (8)4.运行结果记录 (8)5.设计结果分析测试、分析 (9)6.参考文献及其他 (9)源代码 (10)1.设计目的、内容、时间安排1.1 设计目的:通过该课程设计,熟悉计算机体系结构,DOS操作系统的功能调用及BIOS的功能调用。

进一步了解汇编语言控制计算机硬件的方法,提高应用汇编语言编程的能力。

1.2设计内容:动画程序设计。

自由选择至少两个运动物体(机器人和汽车)在屏幕上运动,可以通过键盘分别控制运动(机器人通过方向键控制方向,汽车通过W,A,S,D控制方向),整个程序包括人机界面控制台和运动中动画的暂停(空格键控制),开始(ENTER键控制),退出(ESC键控制),运动加减速动作(“+”控制逐级加速、“—”控制逐级减速)。

1.3 时间安排:课程设计时间为19周一周。

周一周二理解题目查资料,画出主要程序框图;周三周四编写程序,细化各部分功能,调试运行程序;周五按要求撰写课程设计报告。

2.设计环境与与工具DOS操作系统、文本编辑器,MASM.EXE,LINK,EXE、DEBUG.EXE3.程序设计算法说明、流程图本程序定义了两个图表(汽车和机器人),八个坐标变量(汽车清图坐标car_row0 car_col0 汽车画图坐标car_row1 car_col1机器人清图坐标man_row0 man_col0机器人画图坐标man_row1man_col1),用于控制汽车和机器人清图和画图的坐标,从而实现汽车和机器人的运动及键盘控制,逻辑图如下:本程序由一个主程序和六个子程序组成,具体设计算法说明和流程图见下:3.1主程序main proc far程序开始,设置显示方式为80X25 16色图形方式和提示信息:(SPACE--PAUSE,ENTER--BEGAIN,ESC--EXIT,SPEEDUP-+,SLOWDOWN- -) (CAR:UP--W,DOWN--S,LEFT--A,RIGHT--DMAN:UP--8,DOWN--2,LEFT--4,RIGHT--6)空格暂停,回车开始,ESC退出,“+”按一次速度加快一级,“—”按一次速度减慢一级,WASD控制汽车的上左下右移动,方向键控制机器人的运动方向,调用car_disp和man_disp子程序设置开始图形,起始坐标在数据定义时已给出,然后调用MOVE子程序控制汽车和机器人的运动,实现动画,主程序结束。

汽车动画程序设计微机课程设计说明书

汽车动画程序设计微机课程设计说明书

学号:xxx课程设计题目汽车动画程序学院自动化学院专业自动化班级自动化1304班姓名屈升指导教师石云2015 年12 月25 日课程设计任务书学生姓名:屈升专业班级:自动化1304班指导教师:石云工作单位:自动化学院题目: 汽车动画程序初始条件:显示汽车从屏幕由左向右驶过的程序,按P暂停,按S起动,按B喇叭发声。

按Q退出程序。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)设计任务及要求分析(2)方案比较及认证说明(3)系统原理阐述(4)硬件设计课题需要说明:硬件原理,电路图,采用器件的功能说明(5)软件设计课题需要说明:软件思想,流程图,源程序及程序注释(6)调试记录及结果分析(7)总结(8)参考资料(9)附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图时间安排:12月3日~12月6日:收集资料,方案选择12月7日~12月19日:整体流程,程序细节,调试程序12月21日~12月30日: 课程设计报告撰写1月4:交报告,程序演示,答辩指导教师签名:年月日系主任(或责任教师)签名:年月日摘要 (1)1主程序的编程思路 (2)2主程序流程框图 (2)3各子程序编程思想与流程框图 (3)3.1.1CLEAR_SCREEN编程思想 (3)3.1.2CLEAR_SCREEN流程框图 (3)3.2子程序XIANSHIQICHE (4)3.2.1XIANSHIQICHE编程思想 (4)3.2.2XIANSHIQICHE流程框图 (5)3.3子程序MOVE_SHAPE (7)3.3.1子程序编程思想 (7)3.3.2子程序流程框图 (8)3.4子程序ERASE (11)3.4.1子程序编程思想 (11)3.4.2子程序流程框图 (11)3.5子程序DLY_QRTR (12)3.5.1子程序编程思想 (12)3.5.2子程序流程框图 (12)3.6子程序HORN (13)3.6.1子程序编程思想 (13)3.6.2子程序流程框图 (14)4调试记录与结果分析 (15)参考文献 (16)本科生课程设计成绩评定表 (17)随着计算机的快速发展,用汇编语言来实现动画更简单,直接和便捷,它的目标代码简短,占用内存较少,执行速度较快,是高效的程序设计语言。

动态小车循环课程设计

动态小车循环课程设计

动态小车循环课程设计一、课程目标知识目标:1. 学生能理解并掌握动态小车的基本结构及其工作原理。

2. 学生能够描述并解释循环运动的概念,并将其应用于动态小车的运动分析。

3. 学生能够运用基本的物理知识,分析动态小车在不同条件下的运动状态。

技能目标:1. 学生能够通过小组合作,设计并搭建一个简单的动态小车模型。

2. 学生能够运用控制技术,实现对动态小车的循环运动控制。

3. 学生能够运用科学探究方法,对小车的运动进行观察、记录和分析。

情感态度价值观目标:1. 学生能够发展对科学探究的兴趣,培养好奇心和探究精神。

2. 学生能够培养团队合作意识,提高沟通与协作能力。

3. 学生能够认识到科学知识在实际生活中的应用,增强实践意识和创新意识。

课程性质:本课程为综合实践活动课程,结合物理、技术和工程学科,注重实践性与探究性。

学生特点:六年级学生具有一定的物理知识基础,好奇心强,喜欢动手操作,善于合作交流。

教学要求:课程设计要注重理论与实践相结合,以学生为主体,引导他们通过探究、合作和实践,达成预定的学习目标。

在教学过程中,关注学生的学习过程和方法,培养其科学素养和创新精神。

通过分解课程目标为具体学习成果,为教学设计和评估提供依据。

二、教学内容1. 引入动态小车的基本概念,介绍其结构组成和工作原理。

- 教材章节:第五章《简单机械》第三节《动态小车》- 内容:动态小车的定义、各部分结构功能、动力传递方式。

2. 探究循环运动的特点,分析动态小车循环运动的应用。

- 教材章节:第四章《运动和力》第二节《圆周运动》- 内容:循环运动的定义、圆周运动的力学原理、动态小车循环运动的实现。

3. 设计与搭建动态小车模型。

- 教材章节:第六章《设计与制作》第一节《设计的基本方法》- 内容:设计原则、动态小车模型设计、搭建过程、调试优化。

4. 动态小车循环运动控制技术。

- 教材章节:第八章《控制技术》第二节《简易控制器》- 内容:控制原理、控制器设计、编程与调试、实现动态小车循环运动控制。

汇编语言课程设计动画设计

汇编语言课程设计动画设计

汇编语言课程设计动画设计一、课程目标知识目标:1. 让学生掌握汇编语言的基本概念和原理,理解汇编语言与计算机硬件的紧密联系。

2. 使学生了解动画设计的基本原理,掌握汇编语言在动画设计中的应用方法。

3. 帮助学生掌握汇编语言编程技巧,提高解决实际问题的能力。

技能目标:1. 培养学生运用汇编语言编写简单动画程序的能力。

2. 培养学生运用汇编语言进行程序调试和优化的能力。

3. 提高学生分析问题和解决问题的能力,培养创新思维和团队协作精神。

情感态度价值观目标:1. 培养学生对计算机编程和动画设计的兴趣,激发学习热情。

2. 培养学生勇于尝试、不断探索的精神,增强自信心。

3. 使学生认识到汇编语言在计算机科学中的地位和作用,提高社会责任感。

课程性质分析:本课程为信息技术课程,旨在让学生掌握汇编语言编程技能,培养其在动画设计领域的实际应用能力。

学生特点分析:学生为高中生,具备一定的计算机操作基础和编程知识,对新鲜事物充满好奇,但可能对汇编语言较为陌生。

教学要求:1. 理论与实践相结合,注重培养学生的实际操作能力。

2. 创设情境,激发学生的学习兴趣和主动性。

3. 注重分层教学,关注学生个体差异,提高全体学生的编程素养。

二、教学内容1. 汇编语言基础知识:介绍汇编语言的基本概念、语法和指令系统,重点讲解与动画设计相关的寄存器、内存操作等内容。

- 教材章节:第一章 汇编语言概述,第二章 指令系统与语法- 内容列举:数据类型、寄存器、指令格式、寻址方式等2. 动画设计原理:讲解动画设计的基本原理,如帧动画、逐行绘制等,分析汇编语言在动画设计中的应用。

- 教材章节:第三章 动画设计基础- 内容列举:动画原理、帧动画、逐行绘制、颜色表示等3. 汇编语言编程实践:通过实例教学,让学生掌握汇编语言编程技巧,学会编写简单动画程序。

- 教材章节:第四章 汇编语言编程实践- 内容列举:汇编语言编程环境、编写源程序、编译与链接、程序调试与优化等4. 动画设计实例分析:分析经典动画设计实例,让学生了解汇编语言在实际动画制作中的应用。

微机原理课程设计报告_基于80X86汇编语言的动画图形设计

微机原理课程设计报告_基于80X86汇编语言的动画图形设计

微机原理与接口技术一、课题名称基于80X86汇编语言的动画图形设计二、设计任务书课程设计任务书1 课题名称:基于80X86汇编语言的动画图形设计2 课程设计目的通过本课程设计,初步掌握《微机原理及接口技术》这门课程课堂所学的理论知识具体运用到实践中去的基本方法。

掌握利用BIOS实现微型计算机显示器和键盘接口程序设计的方法;掌握利用CPU汇编语言设计较大程序的一般方法;进一步加深对学习过程中的基本知识、基本理论、基本方法的理解;从而为今后从事微型计算机软硬件的设计、维护、调试和应用等打下良好的基础。

3内容简述利用汇编语言设计一动画图形,具体内容由学生自己确定,原则上应为以下形式之一:⑴图形按照一定规律自行运动且由键盘控制图形的起、停;⑵键盘作为功能键,控制图形的过程运动和功能变化;⑶交互式动画图形,既通过按下键盘上不同的按键后,能使图形按照不同的方向运动和静止。

5设计方案提示⑴利用DOS系统功能调用和BIOS的INT16H实现按键的识别。

⑵利用BIOS的INT10H完成图形绘制。

⑶CRT工作方式04H为:320×200(彩色);CRT工作方式10H为:640×350(16色);CRT工作方式12H为:640×480(16色)(推荐);三、内容提要摘要:本实验主要讲述了基于80X86汇编语言动画的设计。

主要采用了两种BIOS调用:INT 10H(显示中断)和INT 16H(键盘中断)。

在与CPU和其各寄存器的配合工作下,完成动画图形。

关键字:BIOS中断子程序宏调用字符图形Abstract: The present work describes the animation design based on 80X86 assembly language. It mainly uses two BIOS calls: INT 10H (show interrupts) and the INT 16H (keyboard interrupt). With the cooperating of CPU and its various registers, the animation graphics work can be completed.Keywords: BIOS interrupts; subroutine; macro; call; Character Graphics四、目录正文1、概述所作题目的意义、系统的主要功能、及使用方法;2、硬件电路设计及描述;3、软件设计流程及描述;4、源程序代码(要有注释)。

汇编语言动画程序设计报告

汇编语言动画程序设计报告

一、游戏背景介绍随着信息时代的发展,计算机已经变为我们生活中不可缺少的一部分,它作为我们了解世界的一个窗口的同时还可以让我们从中以最快的速度查找学习资源,休闲之余,更多的人选择玩小型的益智游戏来放松,因为它不仅达到了娱乐的目的,而且对自己的思维有一定的帮助作用,根据大多数人的娱乐放松需求,我做出了一款动画游戏——可控的汽车与机器人。

上了一学期的汇编语言课,让我对汇编语言有了一定的认识。

这次课程作业我决定亲自动手用汇编语言编写一个型小程序,熟悉计算机体系结构,加深对汇编语言的了解。

DOS 操作系统的功能调用及BIOS的功能调用。

进一步了解汇编语言控制计算机硬件的方法,以及如何用汇编语言来实现算法,提高应用汇编语言编程的能力,也加深了自己对一些算法的理解,提高了自己的编程能力。

利用汇编语言编写程序,在屏幕上显示动画,还可以通过键盘上的输入来改变图片的位置,实现动画的运动。

动画游戏程序设计的开始屏幕上会出现一辆小车和一个机器人,操作者可自由选择至少两个运动物体(机器人和汽车)在屏幕上运动,一开始汽车与人分别从左向右、从右向左运动,操作者可以通过屏幕上方现实的提示对机器人和小车进行控制。

可以通过键盘上的W、A、S、D和上下左右的方向键来分别控制运动机器人和小车通过W,A,S,D 控制方向,同时整个程序包括人机界面控制台和运动中动画的暂停(空格键控制),开始(ENTER键控制),退出键则由ESC键控制,运动加减速动作(“+”控制逐级加速、“—”控制逐级减速)。

程序插图如图1:图1动画界面示意图屏幕上方是操作提示,用户可与根据提示对汽车和小人进行操控,来改变他俩的运动轨迹。

起先车和小人都是各自运动的一个向左另一个向右,操作者可以通过键盘来改变这两物体的运动轨迹,同时在按键盘上的加号会看见物体的运动速率明显加快,减号则反之。

二、核心算法思想本程序定义了两个图分别表示(汽车和机器人),八个坐标变量(汽车清图坐标car_row0 car_col0 汽车画图坐标car_row1 car_col1机器人清图坐标man_row0 man_col0机器人画图坐标man_row1 man_col1),用于控制汽车和机器人清图和画图的坐标。

汇编动画小汽车程序设计

汇编动画小汽车程序设计

《汇编语言程序设计》综合程序设计实验报告题目:动画小汽车一、项目简介由汇编语言编写程序,进入DOS界面或BIOS界面,汇编语言程序结构有loop循环,子程序调用数据定义等。

有三个界面,主界面,帮助help界面和游戏界面(小车动画)在界面上显示小车图形,并有相应的操作界面的说明。

有玩家通过键盘操作,实现小车的基本功能,小车可以上,下,左,右,或一直匀速移动。

二、小组成员具体分工小组成员:马晓林,杨金川马晓林:主要编写程序,查找错误,学习相关知识,查找相关资料,提出创新思想。

杨金川:编程查相关资料,书籍,查找错误,讨论问题,提出功能等。

三、需求分析与设计1、程序结构有loop循环,BIOS文本显示,子程序等。

2、关键指令分析该程序所涉及的关键指令及分析如下:指令:MOV AH, 02H/01h INT 21HDOS键盘操作(INT 21H)的功能02能等待从键盘输入一个字符,但是输入字符,而且不进行Ctrl_C或Ctrl_Break的检查处理。

让操作者可以通过键盘控制小车,例如上、下、左、右的操纵小车指令:MOV AH,02HMOV BH,0MOV DH,8MOV DL,0INT 10HBIOS中断类型10H的功能2设置光标位置。

光标位置的行号设在DH寄存器中,列号设在DL中。

而BH是包含的页号。

使字符在屏幕的相应位置中输出,同时也能使字符串有相应的位置输出,显示相应界面。

指令:MOV AH,09HLEA DX,STR(或MOV DX,OFFSET STR1)INT 21HDOS显示操作INT 21H的功能9是显示字符串,它要求被显示输出的字符以$字符(24H)作为定界符。

而DS:DX=缓冲区首地址,所以将字符串的首地址附给DX。

显示字符串。

例如:显示出界面的字符串,让玩家知道如何操作界面。

指令:MOV AH,6MOV AL,0MOV BH,09FHMOV CH,0MOV CL,0MOV DH,24MOV DL,79INT 10HINT 10H的功能6能使屏幕内容上卷的行,这个功能需要设置7个参数。

汇编课程设计汽车小鸟动画

汇编课程设计汽车小鸟动画

汇编课程设计汽车小鸟动画集团标准化小组:[VVOPPT-JOPP28-JPPTL98-LOPPNN]运行可执行程序CAR.exe,选择1,小鸟飞过;选择2,汽车开过;选择3,退出。

DATA SEGMENTINFO1 DB 0DH,0AH,'INPUT 1,2,OR 3:(1:bird,2:car,3:exit) $'BUFA DB 200DBDB 200 DUP(0)BUFB DB 200 DUP()BIRD DB 76H,10,0,0 ;小鸟的字符图形表DB 0C4H,07,0,1DB 76H,10,-2,2DB 0C4H,07,0,1DB 76H,10,-2,2DB 0C4H,07,0,1DB 76H,10,-2,2DB 0C4H,07,0,1DB 76H,10,2,-2DB 0C4H,07,0,1DB 76H,10,2,-2DB 0C4H,07,0,1DB 76H,10,2,-2DB 0C4H,07,0,1CAR DB 7 ;小汽车的字符图形表DB 52H,7,0,0DB 0B1H,7,0,1DB 0DBH,7,0,1DB 0DBH,7,0,1DB 4FH,7,1,0DB 4FH,7,0,-3DB 2,7,-2,1CHAR_CNT DWPOINTER DWLINE_ON DBCOL_ON DBDATA ENDSSTACK SEGMENT stackDB 200 DUP(0)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKstart:mov ax,datamov ds,axmov ah,0 ;设置显示方式为320*200彩色图形方式mov al,4int 10hlea dx,info1 ;在显示器上显示字符串提示信息mov ah,9int 21hmov ah,0 ;从键盘读取字符到AL寄存器int 16hCMP AL,31H ;比较AL是否等于1JNE ACALL XIAOA: CMP AL,32H ;比较AL是否等于2JNE BCALL QICHEB: CMP AL,33H ;比较AL是否等于3JNE STARTMOV AH,4CH ;终止当前程序并返回调用程序INT 21HCLEAR MACRO pch,pcl,pdh,pdl,pbh ;清屏宏定义MOV AH,0MOV AL,4INT 10HMOV AH,6 ;调用6号功能MOV AL,0 ;设置整个屏幕为空白MOV CH,pchMOV CL,pcl ;窗口左上角(0行,0列)MOV DH,pdhMOV DL,pdl ;窗口右下角(24行,79列)MOV BH,pbh ;正常属性显示INT 10HENDMxiao proc ;小鸟子程序PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV AH,0MOV AL,4INT 10HMOV AH,0BH ;设置背景色MOV BH,0MOV BL,1INT 10HMOV AH,0BH ;设置彩色组MOV BH,1MOV BL,1INT 10HCLEAR 0,0,24,79,7MOV AH,0FH ;读当前显示状态INT 10HMOV DH,10MOV DL,0BEGIN: MOV SI,2MOV CX,1LEA DI,BIRD ;DI指向小鸟字符表的首字母DISP: CMP DL,80JAE exit1MOV AH,2 ;设置光标位置INT 10HMOV AH,9 ;显示小鸟字符图形MOV AL,[DI]MOV BL,[DI+1]INT 10HCALL DLY ;延时MOV AH,9MOV AL,' 'MOV BL,04INT 10HINC DLADD DI,2DEC SIJNZ DISPJMP BEGINexit1: RETxiao endpDLY PROC NEAR ;延时子程序PUSH CXPUSH DXMOV DX,10000DL1: MOV CX,6801DL2: LOOP DL2DEC DXJNZ DL1POP DXPOP CXRETDLY ENDPQICHE PROC near ;汽车子程序PUSH AXPUSH BXPUSH CXPUSH DXMOV AH,0MOV AL,4INT 10HMOV AH,0BH ;设置彩色组颜色为绿、红、黄MOV BH,01MOV BL,00INT 10HCLEAR 0,0,24,79,7 ;清屏宏调用LEA DI,CAR ;DI指向字符图形表MOV DH,5 ;从第5行5列位置开始显示汽车MOV DL,0CALL MOVE_SHAPERETQICHE ENDPMOVE_SHAPE PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DIMOV AH,0FH ;取当前显示方式INT 10HSUB CH,CHMOV CL,[DI] ;CL放字符个数INC DI ;DI指向字符图形表中的第一个字符MOV CHAR_CNT,CXMOV POINTER,DIMOV LINE_ON,DHMOV COL_ON,DLPLOT_NEXT:ADD DH,[DI+2] ;改变行列坐标ADD DL,[DI+3]CMP DL,80 ;出屏否?JB MOV_CRSRPop DIPop DXPop CXPop BXPop AXjmp exit2MOV_CRSR:MOV AH,2INT 10HMOV AL,[DI] ;取字符值MOV BL,[DI+1] ;取字符属性PUSH CXMOV CX,1MOV AH,09 ;显示字符INT 10HPOP CXADD DI,4 ;DI指向下一个字符LOOP PLOT_NEXTCALL DLYCALL ERASEJMP SHORT PLOT_NEXTMOVE_SHAPE ENDP ERASE PROC NEAR MOV CX,CHAR_CNT MOV DI,POINTER MOV DH,LINE_ON MOV DL,COL_ON ERASE_NEXT: ADD DH,[DI+2] ADD DL,[DI+3] MOV AH,2INT 10HMOV AL,[DI] MOV BL,0PUSH CXMOV CX,1MOV AH,9INT 10HPOP CXLOOP ERASE_NEXT MOV CX,CHAR_CNT MOV DI,POINTER MOV DH,LINE_ON INC COL_ON MOV DL,COL_ON RETERASE ENDP CODE ENDSEND start。

(整理)动态图形设计小车动画

(整理)动态图形设计小车动画

华北科技学院计算机系课程设计报告课程名称汇编语言课程设计设计题目动态图形设计设计时间2008-12-08 至2008-12-19 年级2006 专业班级网络B061 姓名皇甫建杰学号200507024207 指导教师李冬艳成绩评语计算机系制一.课程设计的性质和目的性质:《汇编语言》是计算机科学与技术专业及网络工程本科学生必修的专业课程。

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

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

2.要求程序必须正确。

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

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

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

三.主要仪器设备及软件计算机、MASM汇编软件。

四.设计题目动态图形设计:要求:小车在公路上行驶,从屏幕左侧驶向右侧。

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

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

公路和小车的颜色不样。

也要用INT 10H功能。

五.题目分析图形移动程序,调用CRT显示功能实现。

具体可分5步进行:1.在屏幕上显示图形(单字符或多字符图形)。

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

3.清除图形。

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

5.若没有键按下,则重复以上过程六.运行结果选择操作显示动画七.程序流程本程序主要分三段:数据段,堆栈段及代码段。

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

具体流程图如下八.代码data segmentinfor db 0dh,0ah,'input 1 or 2(1:show a car,2:exit):$' bufa db 200db ?db 200 dup(0)bufb db 200 dup(?)car db 7; 小汽车的字符图形表db 52h,7,0,0db 0b1h,7,0,1db 0dbh,7,0,1db 0dbh,7,0,1db 4fh,7,1,0db 4fh,7,0,-3db 2,7,-2,1char_cnt dw ?pointer dw ?line_on db ?col_on db ?data ends;数据段stack segment stackdb 200 dup(0)stack ends;堆栈段code segmentassume cs:code,ds:data,ss:stackstart: mov ax,datamov ds,axmov ah,0; 设置显示方式为640*350彩色图形方式mov al,10hint 10hlea dx,infor; 在显示器上显示字符串提示信息mov ah,9int 21hmov ah,0;从键盘读取字符到AL寄存器int 16hcmp al,31hjne acall qichesub ax,axa : cmp al,32h;比较al是否等于2jne startb : mov ah,4ch;终止当前程序并返回调用程序int 21hclear macro pch,pcl,pdh,pdl,pbh;清屏宏定义mov ah,0mov al,10hint 10hmov ah,6;调用6号功能设置整个屏幕为bh值所对应的属性sub al,almov al,1;设置滚动行数为1mov ch,pchmov cl,pcl;窗口左上角(0行,0列)mov dh,pdhmov dl,pdl;窗口右下角(24行,79列)mov bh,pbh;正常属性显示:1绿、2青、3蓝、4红、5粉、6黄、7白(高亮)int 10hendmdly proc near; 延时子程序push cxpush dxmov dx,10000dl1 : mov cx,6801dl2 : loop dl2dec dxjnz dl1pop dxpop cxretdly endpqiche proc near;汽车子程序mov ah,0mov al,10hint 10hpush dxpush bxcmp ax,ax;zf标志位置1mov dh,3mov bh,1next: cmp dh,25;公路是否退至屏幕底端?jb next1sub dh,dhmov dh,3next1:mov ah,01h;检查键盘缓冲区中有无输入字符(zf是否等于0)int 16hjne fh;zf等于0则退出程序clear 0,0,dh,79,bh; 清屏宏调用lea di,car ;di指向字符图形表push dx;保护dh源值call move_shapepop dxpop axadd dh,3add bh,1cmp bh,8;循环改变公路的颜色jb bssub bh,bhmov bh,1bs: jmp nextfh: retqiche endpmove_shape proc near ;移动子程序push axpush bxpush cxsub dh,2;从第1行0列位置开始显示汽车mov dl,0push dxpush dimov ah,0fh;取当前显示方式int 10hsub ch,chmov cl,[di]; cl存放字符个数inc di; di指向字符图形表中的第一个字符mov char_cnt,cxmov pointer,dimov line_on,dhmov col_on,dlplot_next:add dh,[di+2];改变行列坐标add dl,[di+3]cmp dl,80;出屏否?jb mov_crsrpop dipop dxpop cxpop bxpop axjmp exit2mov_crsr:mov ah,2int 10hmov al,[di];取字符值mov bl,[di+1];取字符属性push cxmov cx,1mov ah,09;显示字符int 10hpop cxadd di,4; di指向下一个字符loop plot_nextcall dlycall erasejmp short plot_nextexit2 : retmove_shape endperase proc near ;擦除子程序mov cx,char_cntmov di,pointermov dh,line_onmov dl,col_onerase_next :add dh,[di+2]add dl,[di+3]mov ah,2int 10hmov al,[di]mov bl,0push cxmov cx,1mov ah,9int 10hpop cxadd di,4loop erase_nextmov cx,char_cntmov di,pointermov dh,line_oninc col_onmov dl,col_onreterase endpcode ends;代码段end start九.心得体会两周的课程设计,让我基本上掌握了,子程序的调用与运用;它不但大大减化了程序代码,使程序的逻辑性大大加强。

C语言课程设计-运动的小车动画

C语言课程设计-运动的小车动画

XXX航空工业学院课程设计报告课程设计名称:C语言课程设计课程设计题目:运动的小车动画院(系):计算机学院专业:网络工程班级:学号:姓名:指导教师:完成日期:2009年07月17日沈阳航空工业学院课程设计报告目录第1章需求分析 (1)题目的内容与要求 (1)开发工具 (1)题目分析 (1)第2章概要设计 (2)总体结构 (2)第3章详细设计 (3)主函数模块 (3)图形驱动模块 (3)场景游戏模块 (4)游戏过程模块 (5)结束模块模块 (6)第4章调试分析 (8)第5章使用说明 (9)参考文献 (11)附录(程序清单) (12)第1章需求分析内容:实现一个简单动画,屏幕背景为蓝色,画一简单小车。

小车在屏中随意移动。

要求:1)实现简单的游戏界面;2)对小车运动进行控制;3)熟练掌握基本的调试方法,并将程序调试通过;4)采用VC环境进行调试运行。

操作系统:WindowsXP SP2。

硬件环境:CPUAMD3000+内存1G ,硬盘120G。

软件环境:TurboC。

本程序首先分为四个模块即编写四个函数,主程序按顺序调用这四个函数最后掉用关闭图形系统函数,至此整个程序算是真正结束。

题目程序设计思想分析是:先设置背景色和前景色,确定小车的初始位置和车头方向,画出小车,在没有按键的情况下,进入一个循环系统小车自动向前运动,直到撞墙,有按键的情况下,判断按键的性质确定车头的方向,计算小车的新坐标,进入另一个画车循环,一直循环,直到结束。

第2章概要设计2.1总体结构本程序主要分为五个模块:主函数模块,图行驱动模块,场景游戏模块,游戏过程模块,结束模块。

主函数模块实现函数调用。

图行驱动模块对图行操作系统进行初使化。

场景游戏模块建立简单的游戏界面。

游戏过程模块画小车,并通过键盘控制小车的运动。

结束模块关闭作图系统,结束程序(如图2.1)。

图2.1功能模块1 主函数模块:本模块主要实现函数的调用,一共四个函数。

2 图行驱动模块:本模块主要是实现对图形系统进形初始化以及做出简单界面,设置屏幕背景颜色,还有显示游戏开始时的菜单。

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

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

华北科技学院计算机系课程设计报告课程名称汇编语言课程设计设计题目动态图形设计设计时间2008-12-08 至2008-12-19 年级2006 专业班级网络B061 姓名皇甫建杰学号200507024207 指导教师李冬艳成绩评语计算机系制一.课程设计的性质和目的性质:《汇编语言》是计算机科学与技术专业及网络工程本科学生必修的专业课程。

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

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

2.要求程序必须正确。

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

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

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

三.主要仪器设备及软件计算机、MASM汇编软件。

四.设计题目动态图形设计:要求:小车在公路上行驶,从屏幕左侧驶向右侧。

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

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

公路和小车的颜色不样。

也要用INT 10H功能。

五.题目分析图形移动程序,调用CRT显示功能实现。

具体可分5步进行:1.在屏幕上显示图形(单字符或多字符图形)。

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

3.清除图形。

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

5.若没有键按下,则重复以上过程六.运行结果选择操作显示动画七.程序流程本程序主要分三段:数据段,堆栈段及代码段。

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

具体流程图如下八.代码data segmentinfor db 0dh,0ah,'input 1 or 2(1:show a car,2:exit):$' bufa db 200db ?db 200 dup(0)bufb db 200 dup(?)car db 7; 小汽车的字符图形表db 52h,7,0,0db 0b1h,7,0,1db 0dbh,7,0,1db 0dbh,7,0,1db 4fh,7,1,0db 4fh,7,0,-3db 2,7,-2,1char_cnt dw ?pointer dw ?line_on db ?col_on db ?data ends;数据段stack segment stackdb 200 dup(0)stack ends;堆栈段code segmentassume cs:code,ds:data,ss:stackstart: mov ax,datamov ds,axmov ah,0; 设置显示方式为640*350彩色图形方式mov al,10hint 10hlea dx,infor; 在显示器上显示字符串提示信息mov ah,9int 21hmov ah,0;从键盘读取字符到AL寄存器int 16hcmp al,31hjne acall qichesub ax,axa : cmp al,32h;比较al是否等于2jne startb : mov ah,4ch;终止当前程序并返回调用程序int 21hclear macro pch,pcl,pdh,pdl,pbh;清屏宏定义mov ah,0mov al,10hint 10hmov ah,6;调用6号功能设置整个屏幕为bh值所对应的属性sub al,almov al,1;设置滚动行数为1mov ch,pchmov cl,pcl;窗口左上角(0行,0列)mov dh,pdhmov dl,pdl;窗口右下角(24行,79列)mov bh,pbh;正常属性显示:1绿、2青、3蓝、4红、5粉、6黄、7白(高亮)int 10hendmdly proc near; 延时子程序push cxpush dxmov dx,10000dl1 : mov cx,6801dl2 : loop dl2dec dxjnz dl1pop dxpop cxretdly endpqiche proc near;汽车子程序mov ah,0mov al,10hint 10hpush dxpush bxcmp ax,ax;zf标志位置1mov dh,3mov bh,1next: cmp dh,25;公路是否退至屏幕底端?jb next1sub dh,dhmov dh,3next1:mov ah,01h;检查键盘缓冲区中有无输入字符(zf是否等于0)int 16hjne fh;zf等于0则退出程序clear 0,0,dh,79,bh; 清屏宏调用lea di,car ;di指向字符图形表push dx;保护dh源值call move_shapepop dxpop axadd dh,3add bh,1cmp bh,8;循环改变公路的颜色jb bssub bh,bhmov bh,1bs: jmp nextfh: retqiche endpmove_shape proc near ;移动子程序push axpush bxpush cxsub dh,2;从第1行0列位置开始显示汽车mov dl,0push dxpush dimov ah,0fh;取当前显示方式int 10hsub ch,chmov cl,[di]; cl存放字符个数inc di; di指向字符图形表中的第一个字符mov char_cnt,cxmov pointer,dimov line_on,dhmov col_on,dlplot_next:add dh,[di+2];改变行列坐标add dl,[di+3]cmp dl,80;出屏否?jb mov_crsrpop dipop dxpop cxpop bxpop axjmp exit2mov_crsr:mov ah,2int 10hmov al,[di];取字符值mov bl,[di+1];取字符属性push cxmov cx,1mov ah,09;显示字符int 10hpop cxadd di,4; di指向下一个字符loop plot_nextcall dlycall erasejmp short plot_nextexit2 : retmove_shape endperase proc near ;擦除子程序mov cx,char_cntmov di,pointermov dh,line_onmov dl,col_onerase_next :add dh,[di+2]add dl,[di+3]mov ah,2int 10hmov al,[di]mov bl,0push cxmov cx,1mov ah,9int 10hpop cxadd di,4loop erase_nextmov cx,char_cntmov di,pointermov dh,line_oninc col_onmov dl,col_onreterase endpcode ends;代码段end start九.心得体会两周的课程设计,让我基本上掌握了,子程序的调用与运用;它不但大大减化了程序代码,使程序的逻辑性大大加强。

汇编课程设计动态小车

汇编课程设计动态小车

汇编课程设计动态小车一、教学目标本课程的目标是让学生了解和掌握动态小车的基本原理和制作方法。

知识目标要求学生掌握动态小车的结构、工作原理和编程方法;技能目标要求学生能够独立完成动态小车的组装和编程;情感态度价值观目标要求学生培养对科技创新的兴趣和热情,增强团队合作意识。

二、教学内容本课程的教学内容主要包括动态小车的结构与原理、组装方法、编程技巧和实验操作。

具体包括:1. 动态小车的结构及其各部分功能;2. 动态小车的工作原理;3. 动态小车的组装步骤和方法;4. 动态小车的编程方法;5. 动态小车的实验操作及结果分析。

三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式。

主要包括:1.讲授法:讲解动态小车的基本原理、结构和编程方法;2. 讨论法:学生针对动态小车制作过程中遇到的问题进行讨论和交流;3. 案例分析法:分析典型的动态小车案例,让学生了解实际应用场景;4. 实验法:引导学生动手操作,实践动态小车的组装和编程。

四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1. 教材:《汇编课程设计动态小车》;2. 参考书:相关电子技术、编程技术和实验操作书籍;3. 多媒体资料:动态小车的结构和工作原理PPT、实验操作视频等;4. 实验设备:动态小车套件、编程软件、实验桌椅等。

这些教学资源将有助于丰富学生的学习体验,提高学习效果。

五、教学评估本课程的评估方式包括平时表现、作业、考试等多个方面,以全面客观地评价学生的学习成果。

平时表现主要考察学生的课堂参与度、提问回答等情况;作业则主要考察学生对课堂所学知识的掌握和应用能力;考试则是对学生整体学习成果的检验。

评估方式应公正、客观,能够全面反映学生的学习成果。

六、教学安排本课程的教学安排将根据课程内容和学生的实际情况进行合理规划。

教学进度将按照教材的章节和内容进行安排,确保在有限的时间内完成教学任务。

教学时间和地点将根据学生的作息时间和教学资源进行安排,以保证教学的顺利进行。

汇编语言课设图形设计程序完整版【范本模板】

汇编语言课设图形设计程序完整版【范本模板】

目录摘要 (1)1.方案选择 (3)1。

1字符构成图形 (3)1.2在图片模式下直接导入相关图形的图片 (3)1.3在图片模式下采用计算求点写像素的方法绘图 (3)1。

4在图片模式下采用鼠标绘图 (3)2.编程思想 (3)3.程序设计 (4)3。

1主程序设计 (4)3。

2矩形子程序设计 (6)3。

3三角形子程序设计 (8)3.3圆形子程序设计 (10)3.4公共使用子程序设计 (11)4.硬件原理 (11)5.调试结果 (12)结束语 (14)参考文献 (15)附录1 (16)附录2宏文件 (35)摘要本绘图程序人机交互性好,可以方便的调节矩形,三角,圆的大小和形状。

在采用bresenham算法提高了运行速度同时,图形的显示方法是采用写像素的方法定位精确轨迹平滑.同时还增加了动态显示效果,可以直观的看到像素点的移动.程序在编译之后只有2KB大小占用内存小运算快速。

关键字:绘图动态显示任意大小计算机图形显示软件设计1.方案选择1。

1字符构成图形在图形由字符构成时,屏幕的显示模式为为文字型。

编程简单但是图像质量和交互性很差1。

2在图片模式下直接导入相关图形的图片程序较易实现,显示的效果非常好。

但是图片在取模之后很大,在读取像素写像素时较慢。

交互性也不好1。

3在图片模式下采用计算求点写像素的方法绘图程序编程复杂,算法复杂。

绘图效果较好,程序很灵活可以显示各种形状大小的三角,矩形和圆。

交互性很好而且还可以改变颜色,添加动态显示,实现图像移动等效果。

1。

4在图片模式下采用鼠标绘图程序的交互性很好,可以很方便的确定图形绘制的位置和大小。

但是编程太复杂,查阅了有关资料。

是使用dos中断来调用鼠标,之后对鼠标跟踪控制。

在综合比较之下,程序的性能是首要考虑的指标。

方案三和方案四比起来较易编写一些。

所以最终采用的是方案三。

2.编程思想在程序设计时采用先整体再分块,模块化编程的思想.首先整体设计出程序的框架,写好主程序。

汇编语言动态小车课设报告

汇编语言动态小车课设报告

摘要 (1)1动态小车功能简介 (2)1.1功能简介 (2)1.2程序流程图 (2)2.预备知识 (3)3.任务分析 (4)3.1.程序功能分析 (4)3.2程序设计意义 (4)4.程序设计说明 (4)4.1设计小车的形状 (4)4.2完成对小车的一次显示 (4)4.3调用擦除子程序 (5)4.4动态监测键盘输入 (6)4.4延时子程序 (6)5.实际效果显示图 (8)6.总结与体会 (8)附录 (9)摘要本课程设计主要是基于《微机原理与接口技术》的学习的基础上实现的,程序设计主要是由汇编语言完成。

汇编语言(Assembly Language)是面向机器的程序设计语言。

在汇编语言中,用助记符(Memoni)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址,如此就增强了程序的可读性并且降低了编写难度,象这样符号化的程序设计语言就是汇编语言,因此亦称为符号语言。

使用汇编语言编写的程序,机器不能直接识别,还要由汇编程序或者叫汇编语言编译器转换成机器指令。

汇编程序将符号化的操作代码组装成处理器可以识别的机器指令,这个组装的过程称为组合或者汇编。

本设计是根据汇编语言的特性,完成小车的动态显示的功能,并且结合实际情况,增加某些附加功能,以使设计更加完善,形成具有一定功能的完整的应用程序。

关键词:动态小车汇编80861动态小车功能简介1.1功能简介本课程设计采用16位微处理器8086CPU以及86系列微型计算机指令系统,使用Masm for Windows集成实验环境进行汇编并在DOSBox软件中运行,完成了动态小车的显示,实时监测键盘输入,并且根据相应输入完成对应的功能。

1.2程序流程图2.预备知识该程序所涉及的关键指令及分析如下:指令1:MOV AH,09HLEA DX,STR1(或MOV DX,OFFSET STR1)INT21H分析:DOS显示操作INT21H的功能9是显示字符串,它要求被显示输出的字符以$字符(24H)作为定界符。

汇编语言实现动画小鸟和汽车

汇编语言实现动画小鸟和汽车

一、概括自己设计思路:刚开始显示一个选择画面,让用户选择想要看的动画,通过识别用户选择,显示对应的动画,程序整体框架都是自己设计。

具体的动画主要就是清屏程序,延时程序,以及对小鸟。

汽车字符指定(lea指令)得以实现。

二、细节介绍:1.用户选择画面,这部分也是完全依靠自己知识实现的,具体实现的方法就是通过调用21号中断的9号功能,从键盘读取字符到al,接着通过cmp指令比较al是否等于1、2、3,其间通过call调用各个子程序,具体代码以及理解如下:start:movax,datamovds,axmov ah,0 ;设置显示方式为320*200彩色图形方式mov al,4int 10hlea dx,info1 ;在显示器上显示字符串提示信息mov ah,9int 21hmov ah,0 ;从键盘读取字符到AL寄存器int 16hCMP AL,31H ;比较AL是否等于1JNE ACALL XIAOA: CMP AL,32H ;比较AL是否等于2JNE BCALL QICHEB: CMP AL,33H ;比较AL是否等于3JNE STARTMOV AH,4CH ;终止当前程序并返回调用程序INT 21H2、小鸟、汽车动画实现过程,就是不断地一个清屏,延时的过程,这部分中,清屏子程序以及延时子程序都是自己编写的,具体代码解释如下;(清屏子程序):CLEAR MACRO pch,pcl,pdh,pdl,pbh ;清屏宏定义MOV AH,0MOV AL,4MOV AH,6 ;调用6号功能MOV AL,0 ;设置整个屏幕为空白MOV CH,pchMOV CL,pcl ;窗口左上角(0行,0列)MOV DH,pdhMOV DL,pdl ;窗口右下角(24行,79列)MOV BH,pbh ;正常属性显示INT 10HENDM(延时子程序):DLY PROC NEAR ;延时子程序PUSH CXPUSH DXMOV DX,10000DL1: MOV CX,6801 ;6801*15.08DL2: LOOP DL2DEC DXJNZ DL1POP DX ;堆栈操作sp——sp—2POP CXRETDLY ENDP3,小鸟子程序中细节的理解xiaoproc ;小鸟子程序PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV AH,0MOV AL,4INT 10HMOV AH,0BH ;设置背景色MOV BH,0MOV BL,1INT 10HMOV AH,0BH ;设置彩色组MOV BH,1MOV BL,1INT 10HCLEAR 0,0,24,79,7 ;清屏MOV AH,0FH ;读当前显示状态INT 10HMOV DH,10BEGIN: MOV SI,2MOV CX,1LEA DI,BIRD ;DI指向小鸟字符表的首字母DISP: CMP DL,80JAE exit1MOV AH,2 ;设置光标位置INT 10HMOV AH,9 ;显示小鸟字符图形MOV AL,[DI]MOV BL,[DI+1]INT 10HCALL DLY ;调用延时程序MOV AH,9MOV AL,' 'MOV BL,04INT 10HINC DLADD DI,2DEC SIJNZ DISPJMP BEGINexit1: RETxiaoendp4,汽车程序细节理解:QICHE PROC near ;汽车子程序PUSH AXPUSH BXPUSH CXPUSH DXMOV AH,0MOV AL,4INT 10HMOV AH,0BH ;设置彩色组颜色为绿、红、黄MOV BH,01MOV BL,00INT 10HCLEAR 0,0,24,79,7 ;清屏宏调用LEA DI,CAR ;DI指向字符图形表MOV DH,5 ;从第5行5列位置开始显示汽车MOV DL,0CALL MOVE_SHAPERETQICHE ENDPMOVE_SHAPE PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DIMOV AH,0FH ;取当前显示方式INT 10HSUB CH,CHMOV CL,[DI] ;CL放字符个数INC DI ;DI指向字符图形表中的第一个字符MOV CHAR_CNT,CXMOV POINTER,DIMOV LINE_ON,DHMOV COL_ON,DLPLOT_NEXT:ADD DH,[DI+2] ;改变行列坐标ADD DL,[DI+3]CMP DL,80 ;出屏否?JB MOV_CRSRPop DIPop DXPop CXPop BXPop AXjmp exit2MOV_CRSR:MOV AH,2INT 10HMOV AL,[DI] ;取字符值MOV BL,[DI+1] ;取字符属性PUSH CXMOV CX,1MOV AH,09 ;显示字符INT 10HPOP CXADD DI,4 ;DI指向下一个字符LOOP PLOT_NEXTCALL DLY ;调用延时子程序CALL ERASEJMP SHORT PLOT_NEXTexit2: retMOVE_SHAPE ENDPERASE PROC NEARMOV CX,CHAR_CNTMOV DI,POINTERMOV DH,LINE_ONMOV DL,COL_ONERASE_NEXT:ADD DH,[DI+2] ;y坐标加2ADD DL,[DI+3] ;x坐标加3MOV AH,2INT 10H ;10H中2号功能MOV AL,[DI] ;取字符值MOV BL,0PUSH CXMOV CX,1MOV AH,9 ;显示字符INT 10HPOP CXADD DI,4 ;DI指向下一个字符LOOP ERASE_NEXTMOV CX,CHAR_CNTMOV DI,POINTERMOV DH,LINE_ONINC COL_ONMOV DL,COL_ONRETERASE ENDP。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

沈阳大学科技工程学院
机电学院计算机2班尚炎焱
课程设计说明书
设计题目:动态图形设计
一、课程设计目的
进行程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。

二、课程设计要求
1.要求编写并调试通过一个小型软件,实现对软件或硬件的操作。

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

3.要求程序必须正确。

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

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

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

三、课程设计题目:
小车动态图形设计
四、课题分析
该题目看似复杂,其实不然。

具体方式可以按以下步聚进行:
1、确定下车由哪些字符组成
2、在屏幕上显示一个小车,然后再擦除
3、改变一个列坐标,重复步聚2
4、写一个循环子程序,让小车从屏幕的左侧行驶到屏幕的右侧
5、用LOOP指令,改变行坐标,让小车从屏幕的上一端跳到屏幕的下一端,重复执行,显示一屏
6、然后再用LOOP指令,不断重复这一屏
五、流程图:
NO
YES :
NO YES
开始
有无按健 ENTER KEY?
ROW 递增几
行 小车从左边行驶到右边
是否行驶到右下角 终止
ROW,COLUMN 初始化
六、程序源代码
DISPLAY MACRO ROW_OFFSET,COLUMN_OFFSET,CHAR,ATTR MOV BH,0
ADD DH,ROW_OFFSET I;显示一个字符和属性
ADD DL,COLUMN_OFFSET
MOV AH,2H
INT 10H
MOV AL,CHAR
MOV BL,ATTRI
MOV CX,1
MOV AH,9H
INT 10H
ENDM
SETMODE MACRO MODE1 ;设置显示方式
MOV AH,0
MOV AL,MODE1
INT 10H
ENDM
DATA SEGMENT
STRING DB'Please press ENTER key to show my work',0DH,0AH DB'You can press any other keys to end , enter key or any ohter keys?$' CHAR_CNT LABEL WORD
DB 0,0,0DBH,7,0,1,0DBH,3
DB 0,1,0DBH,7,1,-2,4FH,2
DB 0,2,4FH,2,-2,0,2,12
ROW DB?
COLUMN DB?
MODE DB 1
ROAD_COLOR DB?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA ;主程序MOV DS,AX
SETMODE 0DH
LEA DX,STRING
MOV AH,9H
INT 21H
MOV AH,1H
INT 21H
CMP AL,0DH
JNE ESCAPE
SETMODE 0DH
MOV ROW,2
MOV COLUMN,0
MOV ROAD_COLOR,2
MOV CX,5
INWARD:
PUSH CX
CALL ROAD
CALL MOVE_SHAPE
ADD ROW,5
INC ROAD_COLOR
SETMODE 0DH ;重新设置相同的显示方式,相当于清屏POP CX
LOOP INWARD
MOV CX,2
LOOP OUTWARD
ESCAPE:
SETMODE 2
MOV AX,4C00H
INT 21H
DELAY PROC NEAR ;延时子程序
MOV DX,500H
DL1:
MOV CX,0
LOOP $
DEC DX
JNZ DL1
RET
DELAY ENDP
DRAW PROC NEAR ;显示或擦除小车MOV DH,ROW
MOV DL,COLUMN
MOV CX,CHAR_CNT
LEA DI,CAR+2
ONE:
CMP MODE,0
PUSH CX
JNE SKIP
DISPLAY [DI+0],[DI+1],[DI+2],0
JMP ABC
SKIP:
DISPLAY [DI+0],[DI+1],[DI+2],[DI+3]
ABC:
POP CX
ADD DI,4
LOOP ONE
RET
DRAW ENDP
MOVE_SHAPE PROC NEAR ;小车动态图形PLOT:
MOV MODE,1
CALL DRAW
MOV AH,1H
INT 16H
JNE ESCAPE ;检查缓冲区有无按键CALL DELAY
CMP COLUMN,36
JA EXIT
MOV MODE,0
CALL DRAW
INC COLUMN
JMP PLOT
EXIT:
MOV COLUMN,0
RET
MOVE_SHAPE ENDP
ROAD PROC NEAR ;画公路MOV CX,39
MOV DH,ROW
ADD DH,2
MOV DL,0
PUSH CX
DISPLAY 0,0,0DBH,ROAD_COLOR
POP CX
CYCLE:
PUSH CX
DISPLAY 0,1,0DBH,ROAD_COLOR
POP CX
LOOP CYCLE
RET
ROAD ENDP
CODE ENDS
END START
七、结果显示
图(1)
图(2)
八、感想、收获及体会
在临近期末,正值我们带着喜悦回家的时候,我们搞了一个课程设计。

以前还以为这个课程设计很神秘,对它充满着期待。

搞完这个之后,才知道这个东西也没什么,跟平时的大作业差不多,看来课程设计还有待改革。

刚开始选题的时候,我看到这个题目很有意思,因为以前没有用汇编语言做过关于动画这方面的程序,所以就选了这个题目。

说实话,刚开始下手的时候,我还真是一头雾水,不知道该怎么做,老师上课的时候也没有讲过。

于是,我就到图书馆借了一两本关于这方面的书,看完动画设计那块的时候,我才明白了该怎么做。

动画无非分两种动画,一种是逐帧动画,另一种是实时动画,当然,这里是逐帧动画。

逐帧动画设计起来相对来说比较简单,就是一组图像按一定的频度连续播放,给人一种视觉上的效应,好像这个东西真的动起来了!其实,做这个题之前,我也从网上下了一些别人以前做过的关于这方面的程序,我发现他们的程序代码比较多,可读性比较差,代码冗长,于是,我决定自己做一个代码较少,可读性较好的程序。

我写的这个程序按大的方针来说,主要用了三个循环实现了动画整个功能:一、让小车从屏幕的左侧跑到右侧,二、让下车不断从屏幕的上端跳到下端,三、不断重复这一屏。

我这个程序还有一个小技巧,清屏的时候不是像别人那样写一很长串的代码,而是通过重新设置显示方式来清屏,这样比较简单,从而减少了代码。

搞完这次课程设计,我更加明白数学和逻辑推理对程序设计的重要性,找到简单、合适及高效的算法可以大大节约程序运行的时间和空间,优化了程序,提高了程序运行的效率,这对于一个优秀的程序设计员来说非常重要。

不过,我没有想过搞IT行业,因为,我发现在电脑旁边坐久了,会感到很虚脱,尤其对程序员来说,叫我数钱还行。

老师,说实话,你让我们搞课程设计其实是给了我们一个疯狂玩耍的机会。

也许大学的意义不在于整体,而在于个人,看自己怎么学,不可能像中学那样让
老师跟在你屁股后面,毕竟,我们是成年人了!。

相关文档
最新文档