目录 上一页 下一页 下一章

-262- PC机汇编语言实战精解





line
code

pop
pop
pop
ret
endp
ends
end
cx
bx
ax



main



;返回主过程



  有关这个程序还有几点需要说明的:
  (1)这个程序中LINE子过程并没有使用Bresenham画线算法,原因是程序所需要画的线都是水平或垂直的,采用Bresenham算法画这样的线反而没有效率。
  (2)这个程序使用两种颜色绘制边框水平线是青色,垂直线是品红色。这样做的原因是由于当运动的点遇到水平线反弹时应该变化Y坐标的增量,遇到垂直线反弹时要变化X坐标的增量,所以程序必须有方法区分水平边框和垂直边框。
  (3)这个程序演示了一种生成"动画"的方法,即先在起始位置画出一幅图,延迟一段时间后将其擦除,随后在相邻的位置画出另一幅图,如此循环就能产生动画效果。
  以上我们给出的绘图程序都是使用CGA提供的彩色组1中的四种色彩,如果大家想看看CGA的另一组彩色,可以使用BIOS提供的一个控制色彩的功能,这就是10H中断的0BH功能:
功能号:0BH
用 途:设置当前的彩色组
参 数:BH=0时,设置背景颜色,其颜色值在BL中定义(用于字符模式)
    BH=1时,BL中的值为调色板号(用于图形模式)
调 用:INT 10H
返 回:无
  利用这个功能将PINGPONG程序修改成"PINGPONG2.ASM"的样子就可以看到彩色组0中的四种
PINGPONG
code


main

mess
start:





;以下同
2.ASM
segment
assume
org
proc
jmp
db
mov
int
mov
mov
mov
int
PINGPON


cs:code,ds:code
100h
near
start
'Press Any Key...',0dh,0ah,'$'
ax,0004
10h
ah,0bh
bh,1
bl,0
10h
G.ASM
色彩了。从直观上看彩色组0中的四种色彩比彩色组1要漂亮些,而且对比修改前后程序的输出我们还可以看到字符串"Press Any Key…"的颜色总是四种颜色中的最后一种,这也可以算是个小规律吧。至于字符的颜色是否可以改变就需要大家自己去研究了。
  以上所讨论的内容就是BIOS为我们提供的几个有关图形的功能调用,熟练掌握这些功能有助于我们更深入的学习8086/88汇编语言图形程序的设计方法。不过如我们在第六章中所讲的那样,BIOS功能虽然应用方便,但是它的一个很大的缺点就是调用速度

Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 下一章