Assembly 如何使用超过512字节的可引导软盘

Assembly 如何使用超过512字节的可引导软盘,assembly,bootable,floppy,Assembly,Bootable,Floppy,我正在学习汇编语言,我遵循了制作可引导图形游戏的步骤,但我有一个问题:我的程序不能使用超过512字节的内存 我怎样才能解决这个问题 谢谢你的帮助 这里是我的代码(仍然小于512字节): 编辑:我解决了我的问题,这里有一个用汇编语言16位制作的软盘引导加载程序的最小示例: 最后,这个链接非常有用:这不容易做到: 事实上,BIOS只将磁盘的前512字节加载到内存中 然后,您要做的是将其余数据加载到内存中。这通常使用中断13h(子功能AH=2或AH=42h)完成 如果您确切地知道数据在磁盘上的位置,这

我正在学习汇编语言,我遵循了制作可引导图形游戏的步骤,但我有一个问题:我的程序不能使用超过512字节的内存

我怎样才能解决这个问题

谢谢你的帮助

这里是我的代码(仍然小于512字节):

编辑:我解决了我的问题,这里有一个用汇编语言16位制作的软盘引导加载程序的最小示例:


最后,这个链接非常有用:

这不容易做到:

事实上,BIOS只将磁盘的前512字节加载到内存中

然后,您要做的是将其余数据加载到内存中。这通常使用中断13h(子功能AH=2或AH=42h)完成

如果您确切地知道数据在磁盘上的位置,这是非常容易的。出于这个原因,像GRUB这样的引导加载程序使用众所周知的位置——不幸的是,这些位置有时会被其他程序(如复制保护驱动程序)覆盖


如果您需要从定义良好的文件系统(例如FAT或NTFS)加载,这将更加棘手:您只有约450字节的空间(因为文件系统内部使用了512字节中的约60字节)用于解释文件系统数据的代码,查找包含代码的文件并将其加载到内存中

链接文章的底部包含您的问题的详细答案。感谢您的回答,我将尝试了解此信息,并在其他时间编写代码。感谢您的回答,现在我遵循以下url www.nondot.org/sabre/os/files/Booting/nasmBoot.txt最后一个示例,但它不起作用。