动画心控制汇编语言 第3页

动画心控制汇编语言 第3页

结束

1  动画“心”程序结构图

 

先设置图形显示方式,用点像素形式来显示图形。接着设置背景色和彩色组,利用其12号功能,设置像素点的颜色、坐标和个数,从而画出图形所需要的线段,如画方框、画斜线、画水平垂直线,以及采用行、列坐标连续写像素的方法填充图形等。完成图形之后延时,清屏。同时,利用DOS系统功能调用的08号功能,从键盘输入字符。如果是任意键,则进入图形显示;如果是回车键,则重新显示整个图形;如果是空格键,则改变“心”的大小;如果是“q”键,则退出。

4.3  子程序设计

为了实现程序效果,程序中还调用了不少的子程序,如填充子程序、画线子程序、画“十”字线子程序、画方框子程序、画“心”子程序、延时子程序、清屏子程序。下面具体分析延时与清屏两子程序的设计。

1)延时子程序

push cxdx,即先让cxdx进栈,接着设置dx寄存器的初值为25,利用其12号功能设置cx的初值为2801,利用其13号功能使之循环。在进行循环次数计数(即dx←dx-1)后,判断循环是否结束:如dx≠0,继续循环,转移到目标地址d12所在的指令,否则顺序执行。然后dxcx顺序出栈。最后返回。其流程图如下图2所示。

2  延时子程序流程图

其延时子程序的关键代码如下:

delay proc near     ;延时子程序

push cx

push dx

dl3:

loop dl3

dec dx

jnz dl2

pop dx

pop cx

ret

delay endp

2)清屏子程序

先设置功能号al及寄存器bxcxdx的初值,接着进入line循环程序。在line循环程序中,先清除缓冲区并请求指定的输入功能,接着利用BIOS功能调用的10H中断类型实现显示器输出控制。。在进行循环次数计数(即cx←cx+1)后,判断循环是否结束:如cx≠320,则继续循环,转移到目标地址line所在的指令,否则再设置寄存器cx初值,在进行循环次数计数(即dx←dx+1)后,判断循环是否结束:如dx≠200,则继续循环,转移到目标地址line所在的指令,否则顺序执行。最后返回。其关键代码如下,清屏子程序的流程图如下图3所示。

clear proc near     ;清屏子程序

mov al,0

mov bx,0

mov cx,0

mov dx,0

上一页  [1] [2] [3] [4] [5] [6] 下一页

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有