-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 |