内存管理实战:直接访问显存与 VGA 文本模式
VGA 文本模式
DOS 默认运行在 80×25 文本模式。显存起始地址:B800:0000。
显存结构
每个字符占 2 字节:
偏移 0: 'H'(48h) 属性 (07h) → 白字黑底 'H'
偏移 2: 'e'(65h) 属性 (07h) → 白字黑底 'e'
...
属性字节
| 位 | 含义 |
|:--|:--|
| 0-2 | 前景色(0-7)|
| 3 | 前景高亮 |
| 4-6 | 背景色(0-7)|
| 7 | 闪烁 |
颜色值:0=黑 1=蓝 2=绿 3=青 4=红 5=紫 6=棕 7=白
实战:彩色输出
MOV AX, 0B800h
MOV ES, AX ; ES 指向显存段
MOV DI, 0 ; 屏幕左上角
MOV AL, 'A' ; 字符
MOV AH, 1Ch ; 属性:红底白字
MOV ES:[DI], AX ; 写入显存
; 清屏
CLEAR_SCREEN PROC
MOV AX, 0B800h
MOV ES, AX
MOV DI, 0
MOV CX, 2000 ; 80*25 = 2000 字符
MOV AX, 0720h ; 空格 + 白字黑底
CLD
REP STOSW ; 重复写入
RET
CLEAR_SCREEN ENDP
实战:滚动窗口
SCROLL_UP PROC
MOV AH, 06h ; BIOS 滚动功能
MOV AL, 1 ; 滚动行数
MOV BH, 07h ; 空白行属性
MOV CH, 0 ; 左上角行
MOV CL, 0 ; 左上角列
MOV DH, 24 ; 右下角行
MOV DL, 79 ; 右下角列
INT 10h
RET
SCROLL_UP ENDP
总结
直接操作显存让你理解图形系统的底层逻辑。现代 GUI 虽然复杂,但核心思想不变:内存映射到像素。
下一篇:《10 个经典汇编程序实例:从排序到字符串处理》
原文链接:https://wenyiblog.top/2026/06/asm-16-memory-vga/
首发于文艺技术笔记(wenyiblog.top),转载请注明出处。

浙公网安备 33010602011771号