我正在接近 x86 实模式编码,并且我在这里找到了一些示例代码:http://www.nondot.org/sabre/os/files/Booting/nasmBoot.txt
该文章中的第三个示例使用实模式下的 BIOS 调用将软盘的几个扇区加载到内存中,然后跳转到它们。这是一个简单的引导加载程序。它从第二个扇区加载 5 个扇区。在第二个扇区(第一个扇区的 512 字节之后),有一些用于打印一些文本的指令。
嗯,我编译了它并尝试了二进制文件,但文本没有打印出来。你能重现这个功能障碍并告诉我如何解决它吗?
感谢您的帮助,并对我的问题的平庸表示歉意。 (但我不知道哪里出了问题)。
最佳答案
如果您使用 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 字节)。
关于assembly - i386 实模式 - 从软盘加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15687318/