内存管理实战:直接访问显存与 VGA 文本模式

VGA 文本模式

DOS 默认运行在 80×25 文本模式。显存起始地址:B800:0000

显存结构

每个字符占 2 字节:

  • 字节 1:ASCII 码
  • 字节 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),转载请注明出处。

    posted @ 2026-06-22 19:28  软件工程师文艺  阅读(1)  评论(0)    收藏  举报