我正在接近x86实模式编码,我在这里找到了一些示例代码:http://www.nondot.org/sabre/os/files/Booting/nasmBoot.txt
本文中的第三个示例在实模式下使用BIOS调用将软盘的几个扇区加载到内存中,然后跳转到它们。它是一个简单的引导加载程序。它从第二个扇区加载5个扇区。在第二个扇区(在第一个扇区的512个字节之后),有一些用于打印某些文本的指令。
好吧,我编译了它并尝试了二进制,但是文本没有打印出来。你能重现这个功能障碍并告诉我如何修复它吗?
我感谢您的帮助,并为我的问题的平淡无奇道歉。(但我不知道哪里出了问题)。
发布于 2013-03-29 03:06:23
如果使用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-29 00:45:06
我可以直接说的一件事是,该代码不能确保堆栈不在1000h:0000附近。
https://stackoverflow.com/questions/15687318
复制相似问题