1. 文本模式下图形字符显示的核心原理
在DOS时代的文本模式下,屏幕被划分为80列×25行的字符单元,每个单元由两个字节组成:一个存储字符码,另一个存储属性(颜色、闪烁等)。这种模式下显示的"图形"实际上是由扩展ASCII码中的块状字符(如█、▒、░等)组合而成的伪图形效果。
BIOS中断INT 10H是控制显示输出的关键入口,其AH=09H功能可直接向屏幕写入带属性的字符。例如显示一个红色背景的实心方块(ASCII码219)的典型调用方式:
assembly复制MOV AH, 09H ; 功能号:写字符和属性
MOV AL, 219 ; 字符代码(实心方块)
MOV BH, 00H ; 显示页号
MOV BL, 4EH ; 属性字节(红底黄字)
MOV CX, 1 ; 重复次数
INT 10H
关键细节:文本模式下的颜色属性字节格式为KRGB IRGB(K=闪烁,I=高亮,RGB=红绿蓝),背景色使用高4位,前景色使用低4位
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 图形字符集的深度解析
IBM PC扩展字符集(代码页437)包含丰富的图形符号,主要分为几个功能组:
-
框线字符(179-218):用于绘制表格和方框
- 单线:│(179)、─(196)、┌(218)等
- 双线:║(186)、═(205)、╔(201)等
-
填充字符(176-223):用于创建灰度效果
- ░(176)、▒(177)、▓(178) - 不同密度的点阵
- █(219) - 实心块
-
特殊符号(1-31):箭头、卡片符号等
- ↑(24)、↓(25)、→(26)、←(27)
- ♠(6)、♣(5)、♥(3)、♦(4)
实际编程时需要特别注意:
- 某些字符在不同代码页可能显示不同
- 直接写入显存比调用BIOS中断更快
- 组合使用不同密度的填充字符可以模拟灰度渐变
3. 高效显示技术实战
3.1 直接显存操作
文本模式下显存起始地址为B800:0000(彩色)或B000:0000(单色),每个字符占2字节:
assembly复制; 在(5,10)位置显示绿色笑脸(ASCII 1)
MOV AX, 0B800H
