查看系列文章点这里: 操作系统真象还原
前言
本文介绍了如何在文本模式下在显示器上打印字符。
一、显存、显卡、显示器
无论图像还是文字都显示在显示器上,显示器都由显卡来控制,而CPU只需要将需要显示的信息存储在内存的某个地方,显卡就会定时去这个地方获取要显示的内容,并显示出来。而能显示的内容不会是无限的,决定能存储多少内容的就是显存,通常显存的大小会比实际显示屏能显示内容的上限还要高,其主要用于屏幕内容的快速切换。
我们现在知道了,只要向内存中某个区域写入我们要现实的内容就行了,首先这个区域就是 B8000~BFFFF ,共计32KB。而内容就是字符,它可以是数字、字母、控制符等等,具体可以参考ACSLL表。下面来看看具体如何设置要显示的字符。
二、字符及其属性
一个字符占2个字节,共计16位,各位的含义如下:
位置 | 0~7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
---|---|---|---|---|---|---|---|---|---|
含义 | ASCLL码 | B | G | R | I | B | G | R | K |
其中,8~11设置前景色,也就是字的颜色,I为亮度(1为高亮,0为正常);12 ~ 15位设置背景色,K为是否闪烁(1为闪烁,0为不闪烁)。
其实总上述表格我们也能看出来,文本模式支持的颜色非常有限,因此,直接为大家列出来,如下表所示:
R | G | B | I=0 | I=1 |
---|---|---|---|---|
0 | 0 | 0 | 黑 | 灰 |
0 | 0 | 1 | 蓝 | 浅蓝 |
0 | 1 | 0 | 绿 | 浅绿 |
0 | 1 | 1 | 青 | 浅青 |
1 | 0 | 0 | 红 | 浅红 |
1 | 0 | 1 | 品红 | 浅品红 |
1 | 1 | 0 | 棕 | 黄 |
1 | 1 | 1 | 白 | 亮白 |
三、示例
;图形卡文本模式的起始地址
mov ax, 0xb800
mov gs, ax
mov byte [gs:0x00], '1' ;设置ASCLL码值
mov byte [gs:0x01], 0xA4 ;0x1010 0100 -> 前景色(字的颜色)为红色,背景色为绿色,闪烁(字闪烁)
持续更新中~~