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

为什么从USB启动时汇编编写的引导扇区代码无法显示字符?

问题可能的原因如下:


1. U盘写入方式错误

  • 不能直接把boot.bin复制到U盘的文件系统中,引导扇区需要写入U盘的物理第一个扇区(LBA 0地址)才会被BIOS识别。正确的写入命令是 sudo dd if=boot.bin of=/dev/sdX bs=512 count=1,注意将/dev/sdX替换为你的U盘对应的块设备名,不要误写为硬盘设备,否则会损坏硬盘引导数据。
  • 写入后可执行 sudo hexdump -C /dev/sdX | head 验证,输出末尾两个字节必须为55 aa才说明写入成功。

2. BIOS启动模式不匹配

  • 现在多数新电脑默认开启UEFI安全启动,你的代码是传统Legacy BIOS架构的引导程序,UEFI模式下不会识别无合法签名的Legacy引导扇区。需要进入BIOS关闭安全启动(Secure Boot),并且将启动模式切换为Legacy BIOS/CSM兼容模式,才能正常引导。
  • 部分电脑需要手动在启动项选择列表中选中带Legacy标识的U盘启动项,选择UEFI开头的U盘启动项会引导失败。

3. 显示模式未初始化

  • QEMU启动时默认已经初始化了80x25文本模式,所以int 0x10的0x0e输出功能可以正常运行。但部分实机BIOS引导时可能处于图形模式,或显示页寄存器配置异常,直接调用输出中断没有反应。可以在代码最开头添加文本模式初始化逻辑:
; 初始化80x25 16色文本模式
mov ax, 0x03
int 0x10

重新编译写入后再测试即可。

4. U盘硬件兼容性问题

  • 部分老旧主板对大容量U盘兼容性差,或要求U盘使用MBR分区表、扇区大小为512字节。可以尝试将U盘格式化为MBR分区表的FAT32格式后重新写入引导扇区,或换用2G以内的小容量老U盘测试,兼容性通常更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 11:24:01