Informationen zum CGA Bildschirm (关于 CGA 显示器的资料)

Video-RAM显存


每个计算机显卡都有一个自己的存储空间-Video-RAM,可以用来编程。在图像模式编程过程
中,每个像素的可能的颜色都必须在Video-RAM中被设置。但是在文本模式编程中就相对简
单,只需要向Video-RAM中传送所设置的字符相应的ASCII码以及其属性就可以了。ASCII码
向一个像素矩阵的转换,会在显卡中独立的被执行。

操作系统1的实习课要求是完成CGA文本模式编程下的所有输出。这个模式基本上所有的显卡
都支持,而且比较容易编程,很适合练习操作系统的编程。

在CGA的文本模式编程中,每一个屏幕位置需要占用2个字节的Video-RAM。第一个字节(偶数
的偏移地址)为字符所对应的ASCII码,第二个字节(奇数的偏移地址)为定义前景色、后景
色以及闪烁。在Video-RAM中规定,屏幕位置图像按照行列来排序的。按照每行80个字符,一
屏25行的分辨率为例,左上角的位置是第0和1字节,向右是第2和3字节,第一行的最后是第
158和159字节。然后顺着第一行最后的字节数,从第二行开始继续加。

由于Video-RAM是叠加出现在计算机主存中的,所以可以通过一般的对存储器的存储操作来执
行对显存操作。显存Video-RAM 0的偏移地址存放在0xb8000地址中。

显示属性


对于每个字,都有前景色、背景色和闪烁的属性。这是通过字节来设置的。
如下表:

Darstellungsattribute
Bits 0-3 前景色
Bits 4-6 背景色
Bit 7 闪烁


CGA文本模式中,有以下16种颜色可以显示:

Farbpalette
0 8 深灰
1 9 浅蓝
2 绿 10 浅绿
3 11 浅青
4 12 浅红
5 红紫 13 浅红紫
6 棕褐 14
7 淡灰 15


因为设置背景色的位置只有3Bit,所以只有前8个颜色可以被设置。

光标的控制


为了能够控制当前光标的位置,需要对显卡的显示控制器进行编码。此时,需要使用数据寄
存器、索引寄存器以及18个控制寄存器。在本次实验中,需要用到的是数据寄存器、索引寄
存器以及第14和15控制寄存器。

编号寄存器含义
14 Cursor (high) 显存中光标位置偏移量
15 Cursor (low)


Daten- und Indexregister können direkt mit Hilfe der in und out Befehle angesprochen werden, da ihnen eigenständige Portadressen zugeordnet sind:

端口寄存器存取方式
3d4 索引寄存器 只写
3d5 数据寄存器 读写


控制寄存器的读写操作的成本很高。为了访问和设置图像控制器,必须先用索引寄存器,然
后再用数据寄存器通过控制寄存器进行读写操作。

posted @ 2011-05-08 01:25  Kaffeeck  阅读(394)  评论(0编辑  收藏  举报