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

汇编操作VGA显存打印HelloWorld追加文本出现多余空格如何解决

问题原因

  • VGA文本模式下每个显示字符占用2字节显存,低8位存字符ASCII码,高8位存颜色属性,所有显示内容在显存中是连续排列的。
  • 原代码里Hello,world!的最后一个字符!写入的偏移地址是18h,下一个字符的正确起始偏移应该是18h + 2 = 1Ah。你追加的姓名首字符直接从20h开始写入,中间1Ah、1Ch、1Eh三个偏移位置没有写入有效字符,默认显示为空白,就出现了多余的空格。
  • 另有一个隐藏问题:你设置字符颜色时给cx赋值为12,仅能覆盖原有12个Hello,world!字符,后续追加的字符不会应用你设置的黄底亮红色样式。

修复方案

  1. 调整追加字符的写入偏移地址,紧跟在!之后写入:
; 原有代码保持不变
mov [18h], '!'

; 替换原有追加字符的代码
mov [1Ah], 't'
mov [1Ch], 'e'
mov [1Eh], 's'
mov [20h], 't'
  1. 修改颜色循环的计数,把mov cx, 12改为mov cx, 16,确保新增的4个字符也能应用正确配色。

修改完成后重新编译运行即可消除多余空格,同时姓名也会显示为和前文一致的配色。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:18:03