时间:2022.11.20
-
确定字符显示的位置
- 在80*25的彩色字符模式显示缓冲区在内存地址的B8000H~BFFFFH共32KB的空间中
- 在该模式下,显示器可以显示25行,80列,所以在一行中就有80个字符,共占据160个字节,每个字符低位字节存储字符的ASCII码,高位字节存储字符的颜色属性
- 偏移0000~009F对应的就是显示器上的第一行;
- 偏移0A00~13F0对应的就是显示器上的第二行;
-
确定字符显示的颜色
- 属性字节的格式如下
7 (6 5 4) 3 (2 1 0)
BL (R G B) I (R G B)
BL: 1表示闪烁,0表示不闪烁
I: 1表示反色,0表示正常
R G B: 3位二进制数,表示红绿蓝三种颜色的强度,0表示强度最低,1表示强度最高
例如:0FH表示白色,0BH表示蓝色,0DH表示绿色,0EH表示红色
- 颜色例子
- 绿底黑色 0 010 0 000B (20H)
- 绿底红色 0 010 0 100B (24H)
- 白底蓝色 0 111 0 001B (71H)
-
清屏功能
- 将显示缓冲区的内容清零,即将显示缓冲区的每个字节都设置为0
-
显示字符串功能
- 设置颜色
- 将字符串中的每个字符显示到显示缓冲区中
- DATA段中定义多个字符串,EQU不能获得正确的字符串长度
STR1 DB 'Hello World!',0
STR2 DB 'Hello World!',0
STR3 DB 'Hello World!',0
STR1_LEN EQU $-STR1
STR2_LEN EQU $-STR2
STR3_LEN EQU $-STR3
- 使用MACRO时,其中存在循环的标签时,多次调用该宏,会出现重定义问题