2

我正在接近 x86 实模式编码,我在这里找到了一些示例代码:http ://www.nondot.org/sabre/os/files/Booting/nasmBoot.txt

该文章中的第三个示例使用实模式下的 BIOS 调用将软盘的几个扇区加载到内存中,然后跳转到它们。它是一个简单的引导加载程序。它从第 2 个扇区加载 5 个扇区。在第二个扇区(第一个扇区的 512 字节之后),有一些用于打印一些文本的指令。

好吧,我编译了它并尝试了二进制文件,但文本没有打印出来。你能重现这个功能障碍并告诉我如何解决它吗?

我感谢您的帮助,并为我的问题平庸表示歉意。(但我不知道哪里出了问题)。

4

2 回答 2

3

如果使用 qemu,则需要将图像填充为扇区大小的整数倍。

在 image.asm 的末尾添加:

times 512*2-($-$$) db 0

并组装和运行:

nasm -f bin -o image.bin image.asm
qemu-system-i386 -fda image.bin

使用另一个模拟器,您可能必须填充到 (1+5)*512 的总长度,甚至是软盘的全长(1474560 字节)。

于 2013-03-28T19:06:23.343 回答
0

我可以立即告诉的一件事是该代码不能确保堆栈不在附近1000h:0000

于 2013-03-28T16:45:06.177 回答