i386实模式 - 从软盘加载

时间:2013-03-28 16:34:25

标签: assembly x86 nasm real-mode floppy

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

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

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

我感谢你的帮助,我为我的问题的平庸而道歉。 (但我无法弄清楚出了什么问题)。

2 个答案:

答案 0 :(得分: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字节)。

答案 1 :(得分:0)

我可以立即判断的一点是,该代码无法确保堆栈不在1000h:0000附近。

相关问题