You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

x86图形模式下如何清屏?使用int 10h/ah=06h清屏后内容复现

问题分析与解决方案

你的问题核心是清屏操作没有彻底切断旧内容的显示触发源,常见原因和解决办法如下:

  • 未同步更新光标位置
    int 10h ah=06h al=00h只是滚动窗口填充空白,但如果光标还停留在之前的位置,后续的输出或者某些中断可能会把旧缓冲区的内容带出来。清屏后必须强制把光标移到左上角(0行0列),用这条指令:

    mov ah, 02h
    mov bh, 0h    ; 视频页号,默认用0即可
    mov dh, 0h    ; 目标行号
    mov dl, 0h    ; 目标列号
    int 10h
    
  • 程序逻辑重复输出旧内容
    检查你的代码,有没有在清屏后又执行了循环打印旧文本、读取未覆盖的内存区域再输出的逻辑——很多时候是自己的代码不小心把内容又打回去了,不是清屏指令的问题。

  • BIOS内部缓冲区未被彻底清空
    如果调用BIOS中断清屏不彻底,可以直接操作显存(B800h段)来覆盖所有显示内容,这种方式更直接:

    mov ax, 0B800h
    mov es, ax
    mov di, 0h
    mov cx, 80*25*2  ; 80列25行的文本模式,每个字符占2字节(ASCII码+显示属性)
    mov al, ' '      ; 空白字符
    mov ah, 07h      ; 黑底白字的默认属性,可根据需求修改
    rep stosw        ; 批量填充显存
    

内容的提问来源于stack exchange,提问作者Scipio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 00:05:26