-120- | PC机汇编语言实战精解 | ![]() |
|||||||||||||||||||
有关显示系统还有一些更多的内容,但是这些知识离程序设计比较远,所以不再深入讨论。有了这些基本知识,我们就可以开始研究有关显示系统的程序设计了,在本章的后面我们将按照Video BIOS,Video RAM和Port Program的顺序来详细讨论PC电脑的显示系统。 | |||||||||||||||||||||
6.2 Video BIOS的应用 | |||||||||||||||||||||
所谓Video BIOS,其核心就是前面曾经提到过的INT 10H中断服务程序。在上一章中我们曾使用过10H中断的0EH功能在屏幕上显示字符,这个功能的能力还是很强的,但有一点令人不太满意的地方,那就是这个功能不能使字符具有颜色。那么有什么方法可以使字符有颜色呢?在讨论这个问题前我们先要讨论一个术语--字符属性。 直觉告诉我们显示在屏幕上的那些字符是具有"个性"的。最明显的,不同的字符可以有不同的颜色,有时候我们会在屏幕上看到一闪一闪的字符,如果使用一块老式的MDA卡,还能看到具有下划线的字符。 这里所说的"个性"指得就是每个字符可以具有的各种不同显示形式,这些不同的形式就是一般所说的"字符属性"。对于一个具体的字符是如何表示它的属性呢?在PC机的显示系统中,属性是由一个字节的数据表示的(图6-3):① 上一节提到过各种颜色都是由RGB三种基本颜色合成的,所以属性字节中的低3位指出了组成字符颜色的RGB值。如果这三位是001,那么表示字符的颜色是蓝色;若这三位是011,那么字符的颜色就是蓝+绿,即青色。 |
|||||||||||||||||||||
![]() 图6-3 属性字节的位定义 |
"I"位是字符加亮位,这一位置1时则字符的颜色会变亮。如果认为"RGB"位控制了CRT电子枪的开关,那么"I"位相当于控制了加在电子枪上的信号电压,"I"位置1时信号电压加强了一倍,所以屏幕上的字符颜色会更亮。 Bit4-Bit6位控制了背影颜色的RGB值,"F"位的定义和"I"位不同,它表示字符是否闪烁,若F位为1,则屏幕上的字 |
||||||||||||||||||||
符将一闪一闪的。下面不妨来看两个实际属性字节: | |||||||||||||||||||||
(1)00100110 (2)11011010 | |||||||||||||||||||||
第一个字节反映了字符的颜色是红+绿=棕色,不加亮;背影颜色是绿色,字符正常显示。第二个字节反映了字符的颜色是加亮的绿色;背影颜色是红+蓝=洋红,字符闪烁显示。这些只是理论上的分析,如果想验证这些分析带还要学习一个新的BIOS INT 10H功能调用--09H功能。 | |||||||||||||||||||||
![]() |
功能号:09H 用 途:在当前光标位置写有属性的字符 参 数:AL=将要显示字符的ASCII码 BH=显示页号 |
||||||||||||||||||||
① 由于MDA与HGC卡不支持彩色显示,因此以下讨论不适用于这两种显示系统。 | |||||||||||||||||||||
Copyright © 2004-2015 Reanimator | www.cookmoon.org |