使用 nasm 和 qemu 运行引导加载程序的问题
Posted
技术标签:
【中文标题】使用 nasm 和 qemu 运行引导加载程序的问题【英文标题】:problem running a bootloader using nasm and qemu 【发布时间】:2021-03-30 01:20:59 【问题描述】:我有一个汇编语言代码,我在其中切换到保护模式,然后在屏幕上打印“Hello World”。我已将此代码保存在名为 boot2.asm 的文件中。我需要帮助来运行和测试代码,因为我无法通过原始编码器自己给出的命令来做到这一点。
我使用的命令是:
nasm -f bin boot2.asm && qemu-system-x86_64 -fda boot.bin
我应该在 cmd 中运行这个命令,对吧?我的电脑上也安装了 NASM 和 QEMU。
【问题讨论】:
nasm
将生成一个名为 boot2.bin
的输出文件,但您似乎启动了一个名为 boot.bin
的文件。你确定这是正确的吗?
我尝试创建 boot2.bin 位它说,“qemu-system-x86_64: -fda boot2.bin: 无法打开 'boot2.bin': 系统找不到指定的文件。”在切换到文件所在的桌面文件夹后,我正在使用 cmd 运行这个 btw
它确实创建了一个名为 boot2 的文件,没有 .bin 扩展名,然后我手动添加了扩展名并执行了 qemu 命令,工作正常,除了它应该打印出两件事而不是一个,我正在将代码添加到问题本身,看看您是否可以提供帮助
NASM 需要-o boot2.bin
,否则它会输出到boot2
(没有.bin
)。
@xxxxxxxxxxxxxx 每个问题只问一个问题。你原来的问题已经解决了。考虑为您的新问题提出一个新问题。此外,如果您希望人们帮助您编写代码,请解释代码应该做什么并评论它!没有 cmets,很难理解你的逻辑。
【参考方案1】:
如果您想从文件boot2.asm
创建一个名为boot.bin
的文件,则需要通过-o boot.bin
选项指示nasm
这样做。否则,nasm
只会生成一个名为 boot2
的文件,这不是您想要的。所以固定的命令行是
nasm -f bin -o boot.bin boot2.asm && qemu-system-x86_64 -fda boot.bin
有关详细信息,请参阅nasm manual。
【讨论】:
以上是关于使用 nasm 和 qemu 运行引导加载程序的问题的主要内容,如果未能解决你的问题,请参考以下文章