Assembly i386实模式-从软盘加载

Assembly i386实模式-从软盘加载,assembly,x86,nasm,real-mode,floppy,Assembly,X86,Nasm,Real Mode,Floppy,我正在接近x86实模式编码,我在这里找到了一些示例代码: 文章中的第三个例子在实模式下使用BIOS调用加载内存中软盘的几个扇区,然后跳转到它们。它是一个简单的引导加载程序。它从第二个扇区加载5个扇区。在第二个扇区上(第一个扇区的512字节之后),有一些用于打印某些文本的指令 嗯,我编译了它并尝试了二进制,但是文本没有打印出来。你能重现这种功能障碍并告诉我如何修复它吗 谢谢你的帮助,我为我的问题平庸而道歉。(但我不知道哪里出了问题。)我能马上告诉你的一件事是,该代码不能确保堆栈不接近1000h:0

我正在接近x86实模式编码,我在这里找到了一些示例代码:

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

嗯,我编译了它并尝试了二进制,但是文本没有打印出来。你能重现这种功能障碍并告诉我如何修复它吗


谢谢你的帮助,我为我的问题平庸而道歉。(但我不知道哪里出了问题。)

我能马上告诉你的一件事是,该代码不能确保堆栈不接近
1000h:0000

如果使用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字节)。

谢谢您:它可以工作!你知道qemu为什么需要这种填充物吗?@mghis我不知道。这是邮件列表的问题。