目录 上一页 下一页 下一章

第6章 文字输出与键盘输入 -121-

    BL=字符的属性字节
    CX=显示字符的个数
调 用:INT 10H
返 回:无
  此功能并不难理解,但有一点需要解释--什么是显示页号?
  这个问题同显示卡上的RAM有关。不同的显示卡所带的RAM量是不同的,MDA卡有4KB RAM,CGA卡有16KB RAM,标准EGA和VGA有256KB RAM。程序要显示一个字符,必须送两个字节数据到显示RAM中,第一个字节是字符的ASCII码,第二个字节就是属性字节。
  如果当前屏幕上最多可以显示80列×25行即2000个字符,那么显示卡就必须具有4KB的RAM才可以放下2000个字符的数据。MDA卡上的4KB RAM就是由此而来,而且由于这4KB存储器仅够存储一个屏幕的字符,所以MDA卡没有分显示页的问题。
  而CGA卡则不同,它有16KB存储器,按刚才讨论的标准它的RAM可以装下4个屏幕的字符数据,所以我们将CGA的存储器分成4个区,每一个区就称为一个显示页。程序可以向不同的显示页中写入字符及属性,不过只有写入当前正被显示卡电路处理的那个显示页的字符才能出现在屏幕上,这个显示页就称为"当前显示页"。
  系统启动时默认当前显示页为第0页,即系统默认使用显示RAM最前面的4KB,当然我们可以通过程序改变当前显示页,这将在后面讨论。
  下面这个程序演示了属性字节的应用,运行这个程序可以观察到不同RGB组合成的色彩,也可以看到属性字节中I位和F位的作用。
data

attrib










data
code

main




segment
assume
db
db
db
db
db
db
db
db
db
db
db
ends
segment
assume
proc
mov
mov
mov
mov

ds:data
00000001b
00000010b
00001010b
00000011b
00100110b
01010011b
01011011b
10000011b
10001011b
11010011b
11011010b


cs:code
far
ax,data
ds,ax
al,41h
ah,09h


;属性字节表














;初始化DS寄存器指向数据段

;准备显示大写字母A
;10H中断的09H功能

Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 下一章