在使用 BIOS 中断进行文本模式显示时,字符的属性值(通常放在 BH
寄存器中)决定了字符的颜色和背景。字符属性是一个 8 位(1 字节)值,其中:
- 高 4 位用于表示背景颜色。
- 低 4 位用于表示前景颜色。
字符属性的格式
| 高4位:背景颜色 | 低4位:前景颜色 |
- 前景颜色(低 4 位):决定字符本身的颜色。
- 背景颜色(高 4 位):决定字符的背景色。
常用颜色编码
颜色代码 | 颜色 | 前景颜色示例 | 背景颜色示例 |
---|---|---|---|
0 | 黑色 | 0x00 |
0x00 |
1 | 蓝色 | 0x01 |
0x10 |
2 | 绿色 | 0x02 |
0x20 |
3 | 青色 | 0x03 |
0x30 |
4 | 红色 | 0x04 |
0x40 |
5 | 洋红色 | 0x05 |
0x50 |
6 | 棕色 | 0x06 |
0x60 |
7 | 浅灰色 | 0x07 |
0x70 |
8 | 深灰色 | 0x08 |
0x80 |
9 | 亮蓝色 | 0x09 |
0x90 |
A(10) | 亮绿色 | 0x0A |
0xA0 |
B(11) | 亮青色 | 0x0B |
0xB0 |
C(12) | 亮红色 | 0x0C |
0xC0 |
D(13) | 亮洋红色 | 0x0D |
0xD0 |
E(14) | 黄色 | 0x0E |
0xE0 |
F(15) | 白色 | 0x0F |
0xF0 |
设置前景和背景颜色的组合
字符属性可以通过组合前景和背景颜色的代码来定义。例如:
黑底白字:
0x0F
- 背景颜色(高 4 位) =
0
(黑色) - 前景颜色(低 4 位) =
F
(白色)
- 背景颜色(高 4 位) =
蓝底黄字:
0x1E
- 背景颜色(高 4 位) =
1
(蓝色) - 前景颜色(低 4 位) =
E
(黄色)
- 背景颜色(高 4 位) =
红底绿字:
0x4A
- 背景颜色(高 4 位) =
4
(红色) - 前景颜色(低 4 位) =
A
(亮绿色)
- 背景颜色(高 4 位) =
注意事项
- 背景颜色的最高位(第 7 位)可以用作闪烁位:如果设置此位为
1
,字符会闪烁。例如,0x8F
表示黑底白字且闪烁。 - 在 BIOS 使用的 16 色文本模式下,颜色选择有限,适用于简单的文本模式显示。
通过组合前景和背景颜色值,可以控制字符显示效果,从而实现丰富的文本显示功能。