动画心控制汇编语言 第3页
结束
先设置图形显示方式,用点像素形式来显示图形。接着设置背景色和彩色组,利用其12号功能,设置像素点的颜色、坐标和个数,从而画出图形所需要的线段,如画方框、画斜线、画水平垂直线,以及采用行、列坐标连续写像素的方法填充图形等。完成图形之后延时,清屏。同时,利用DOS系统功能调用的08号功能,从键盘输入字符。如果是任意键,则进入图形显示;如果是回车键,则重新显示整个图形;如果是空格键,则改变“心”的大小;如果是“q”键,则退出。
4.3 子程序设计
为了实现程序效果,程序中还调用了不少的子程序,如填充子程序、画线子程序、画“十”字线子程序、画方框子程序、画“心”子程序、延时子程序、清屏子程序。下面具体分析延时与清屏两子程序的设计。
(1)延时子程序
先push cx,dx,即先让cx,dx进栈,接着设置dx寄存器的初值为25,利用其12号功能设置cx的初值为2801,利用其13号功能使之循环。在进行循环次数计数(即dx←dx-1)后,判断循环是否结束:如(dx)≠0,继续循环,转移到目标地址d12所在的指令,否则顺序执行。然后dx,cx顺序出栈。最后返回。其流程图如下图2所示。
图2 延时子程序流程图
其延时子程序的关键代码如下:
delay proc near ;延时子程序
push cx
push dx
loop dl3
dec dx
jnz dl2
pop dx
pop cx
ret
delay endp
(2)清屏子程序
先设置功能号al及寄存器bx,cx,dx的初值,接着进入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] 下一页