动画心汇编程序设计实验报告

  • 格式:doc
  • 大小:631.00 KB
  • 文档页数:42

武汉理工大学《微机原理与接口技术》课程设计说明书 - 1 - 课程设计任务书

学生姓名: 专业班级: 指导教师: 工作单位: 题 目: 动画心汇编程序设计 初始条件:1、8086指令系统;2、DOS系统功能;3、8086汇编语言; 4、程序设计方法以及一些技法。 要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体

要求):可爱小动画 本动画先显示一些提示信息,然后按任意键进入,只见一个方框

向中间由大变小,并留下痕迹,然后出现一个心,按空格重复出现心,按其他键将重复,按Q键退出程序。提交课程设计报告(格式按学校规范要求),具体内容如下: 目 录 一、概 述 二、设计任务及要求 三、程序设计基本思想 四、设计方案及程序流程图(若有两个备选方案,要进行比较分析) 五、程序源代码与运行结果(源代码附详细注释,屏幕截图或打印) 六、调试记录与分析(屏幕截图) 七、附录:完整的程序源代码 八、参考文献 九、结语及致谢

时间安排:

2007年1月23日 查阅资料 2007年1月24日 方案设计 2007年1月25日~ 28日 编 程 2007年1月29日~ 30日 调试程序 2007年1月31日 撰写微机原理课程设计报告 2007年2月1日~ 2日 答辩,提交报告

指导教师签名: 2007 年 1月 22 日 系主任(或责任教师)签名: 年 月 日 武汉理工大学《微机原理与接口技术》课程设计说明书

- 2 - 动画心汇编程序设计说明书

摘要:此次微机原理课程说明书根据设计任务阐述动画心汇编程序的设计基本思想与方案,绘制程序流程图,运用8086CPU提供的指令、伪指令、宏指令及DOS,BIOS功能调用编写程序源代码,同时给出说明注释。并利用计算机提供的软件调试工具对所编写程序进行调试,记录下整个调试分析的过程与运行结果。 关键词:动画心、汇编语言、方案、程序原代码、调试。

目录: 1设计任务及要求„„„„„„„„„„„„„„„„„„„„„„„„„„„„3 2程序设计基本思想„„„„„„„„„„„„„„„„„„„„„„„„„„„3 2.1汇编程序设计过程„„„„„„„„„„„„„„„„„„„„„„„„„3 2.2本程序设计基本思路„„„„„„„„„„„„„„„„„„„„„„„„4 3设计方案及程序流程图„„„„„„„„„„„„„„„„„„„„„„„„„4 3.1设计方案与扩展„„„„„„„„„„„„„„„„„„„„„„„„„„4 3.1.1方案„„„„„„„„„„„„„„„„„„„„„„„„„„„„„4 3.1.2扩展„„„„„„„„„„„„„„„„„„„„„„„„„„„„„4 3.2动画心程序流程图„„„„„„„„„„„„„„„„„„„„„„„„„5 4程序源代码与运行结果„„„„„„„„„„„„„„„„„„„„„„„„„6 4.1程序源代码„„„„„„„„„„„„„„„„„„„„„„„„„„„„6 4.2程序运行结果„„„„„„„„„„„„„„„„„„„„„„„„„„„17 5调试记录与分析„„„„„„„„„„„„„„„„„„„„„„„„„„„„21 6附录„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„23 7参考文献„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„42 8结语及致谢„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„42 武汉理工大学《微机原理与接口技术》课程设计说明书

- 3 - 给定问题 描述问题 计划解决步骤

用汇编语言实现程序流程图 流程图

写出源程序 用编辑器输入/编辑源程序 汇编源程序文件 用汇编器汇编程序

语法错? 目标模块

Yes

No 用连接器连接程序 可执行的运行模块 用调试器执行和调试

逻辑错? Yes

No 问题得到解决 图1 汇编语言设计总过程流程图

1设计任务及要求 本课程设计要求编写一个完整的程序以实现一个小动画。该动画要求先显示一些提示信息,然后按任意键进入,只见一个方框向中间由大变小,并留下痕迹,然后出现一个心,按空格重复出现心,按其他键将重复,按Q键退出程序。 2程序设计基本思想 2.1汇编程序设计过程 一般汇编语言设计总过程流程图如下图1所示: 武汉理工大学《微机原理与接口技术》课程设计说明书

- 4 - 汇编语言程序设计要求综合以前所学知识,根据设计具体要求分析问题,将问题分解成一个一个的步骤,每步用汇编语言中的指令性语句,按先后顺序表达,设计一个不仅要满足要求,能正常运行,实现指定功能的程序;还应满足结构化、简明、易读、易调试、易维护、执行速度快、占用存储空间尽量少的好程序。

2.2本程序设计基本思路 本程序主要是利用BIOS功能调用的10H中断类型实现的。利用其12号功能,设置像素的颜色、坐标和个数,从而画出图形需要的线段,如画方框、画对角线、画水平垂直线,以及采用行、列坐标连续写像素的方法填充图形等。画完图形之后延时,清屏。同时,利用DOS系统功能调用的08号功能,从键盘输入字符。如果是任意键,则进入图形显示;如果是空格键,则改变“心”的大小;如果是其它键,则重新显示整个图形;如果是“q”键,则退出。

3设计方案及程序流程图 3.1设计方案与扩展 3.1.1方案

由基本设计思路拟订出原方案。先分别编写画方框、画对角线、画水平垂直线,画

斜线,画心型;以及清屏、清除心型、延时和显示文本信息的子程序。然后,通过编写主程序调用这些子程序来实现设计的要求。 3.1.2扩展

扩展一:通过改变BIOS功能调用的10H中断类型的11号功能(BL)的赋值来改变图形与线条以及背景的颜色。 扩展二:将原设计任务要求的方框由大变小改成方框由小变大。同时,也可改变方框变化划过的轨迹变化,使其不在是从大框一直到小框,而是从小框到大框;使改变后的方框变化看上去是移动的不断从小到大变化。 扩展三:为了使运行的动画人眼看上去是连续移动的,我们可以根据人眼的反应时间来设置延时程序。通过计算得出延时程序所需的循环的次数,以达到以上目的。计算武汉理工大学《微机原理与接口技术》课程设计说明书 - 5 - 式为:xrttn的时间延时程序循环一次所需人眼的反应时间循环次数(人眼的反应时间:响应时间如果超过40毫秒,人眼就会出现运动图像的迟滞现象。) 以上扩展方案会在程序源代码中具体说明。

3.2动画心程序流程图 由设计方案画出动画心程序流程图如图2所示:

4

开始 设置显示方式 设置背景色,彩色调板 显示提示信息 从键盘输入任意字符 清屏 从大到小画方框 延时 画十字线 画任意水平垂直线 填充 画“心” 延时 从键盘输入字符

Yes No Yes No Yes 结束

No

图2 动画心程序结构流程图 (al)=任意键? (al)=空格? (al)=q?

清除心/重复出现心 武汉理工大学《微机原理与接口技术》课程设计说明书 - 6 - 程序源代码与运行结果 4.1程序源代码 根据程序设计基本思路与方案,由于小组的分工合作,在此主要负责编写主程序源代码与画斜线子程序源代码。 主程序: data segment buff1 db ' Welcome you to run this program!' db ' ' db ' *****Please press any key *****$' buff2 db ' My heart beats with yours!' db ' ***** Please press q to quit *****$' data ends stack segment stack ;定义堆栈段 stack ends

code segment main proc far assume cs:code,ds:data start: push ds sub ax,ax push ax mov ax,data mov ds,ax mov ah,00 ;设置显示方式为320*200彩色图形方式 mov al,04 int 10h mov ah,0bh ;利用BIOS调用的10H中断类型11号功能设定背景色 mov bh,00 武汉理工大学《微机原理与接口技术》课程设计说明书 - 7 - mov bl,1 ;通过(bl)的赋值0-15设定颜色,此为蓝色 int 10h mov ah,0bh ;设置彩色组 mov bh,1 mov bl,2 int 10h mov dx,offset buff1 ;显示提示信息,即buff1的字符串内容 mov ah,09 int 21h mov ah,08 ;从键盘输入1个字符,但不送显示器显示 int 21h call clear ;调用清屏子程序 sss: call text ;显示文本信息

mov di,2 ;开始画大方框 mov al,1 mov cx,70 ;显示点所在列号 mov dx,20 ;显示点所在行号 mov bx,160 ;确定方框大小 call box ;调用画方框子程序 mov cx,71 ;画方框移动轨迹,使方框变化看上去是移动的 mov dx,21 mov bx,158 again: ;由大到小画轨迹方框 mov al,1 mov di,0 call box call delay