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

如何清除BIOS屏幕信息后正常打印消息,解决文本拉伸问题

问题根源

你现有代码的核心错误是误调用了int 10h的设置显示模式功能:

  • 当你执行xor ax, ax后AH=0,触发int 10h的0号功能,用于切换显示模式
  • 此时AL=0对应40×25低分辨率文本模式,比常用的80×25模式每行字符数少一半,所以会出现字符横向拉伸的问题
  • 代码中对BX寄存器的两次赋值属于冗余操作,对清屏逻辑没有任何作用

正确清屏实现方案

方案1:使用int 10h 07h中断清屏

这是BIOS原生支持的清屏方案,参数设置如下:

; 配置清屏参数
mov ah, 07h     ; 功能号:窗口向上滚动
mov al, 0       ; 滚动行数:0表示清空整个窗口
mov bh, 07h     ; 空白区域属性:黑底白字
mov ch, 0       ; 窗口左上角行号
mov cl, 0       ; 窗口左上角列号
mov dh, 24      ; 窗口右下角行号(80×25模式下最大行号为24)
mov dl, 79      ; 窗口右下角列号(80×25模式下最大列号为79)
int 10h         ; 调用BIOS中断执行清屏

方案2:直接写VGA文本显存清屏

这种方案无需调用BIOS中断,执行速度更快,适合bootloader场景:

vram_seg equ 0xb800 ; VGA文本模式显存段地址
mov ax, vram_seg
mov es, ax          ; 设置ES段寄存器指向显存
xor di, di          ; 显存偏移从0开始
mov cx, 80*25       ; 总字符数:80列×25行
mov ax, 0x0720      ; 每个字符单元内容:07为黑底白字属性,20为空格ASCII码
rep stosw           ; 批量写入显存完成清屏

使用该方案不会修改当前显示模式,不会出现字符拉伸问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:54:04