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

BIOS引导加载程序Hello World在VMware中无法显示问题求助

问题分析与解决

你的引导加载程序在VMware中仅显示单个字符,核心原因是实模式下未正确设置段寄存器DS。

实模式里,使用[bx]寻址时默认以DS段寄存器的值作为段基址。BIOS会把引导扇区加载到物理地址0x7c00(对应逻辑地址0x0000:0x7c00),但不同虚拟机对DS初始值的处理存在差异:

  • BOCHS默认DS为0,和org 0x7c00的偏移地址配合,[bx]能准确定位到字符串
  • VMware的DS初始值可能不为0,导致读取第一个字符后,inc bx的后续寻址偏离了字符串实际位置,无法读取剩余字符
修复后的代码
[org 0x7c00]

; 初始化DS寄存器,确保段基址正确匹配org指定的偏移
mov ax, 0
mov ds, ax

mov bp, 0x7c00
mov sp, bp

mov bx, TestString
call PrintString

jmp $

PrintString:
    mov ah, 0x0e
    .Loop:
    cmp [bx], byte 0
    je .Exit
        mov al, [bx]
        int 0x10
        inc bx
        jmp .Loop
    .Exit:
    ret

TestString:
    db 'Hello World',0

times 510-($-$$) db 0

dw 0xaa55
关键修改说明
  • 新增mov ax, 0和mov ds, ax:手动将DS设置为0,和org 0x7c00指定的偏移地址配合,保证[bx]能精准访问到TestString所在的内存区域
  • 其余逻辑保持不变,修复后在VMware和BOCHS中都能正常显示完整字符串

内容的提问来源于stack exchange,提问作者Tomás

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 18:35:15