Windows 如何更改胖引导扇区中的代码?
我正在创建一个操作系统,并且能够创建一个简单的多任务内核(尽管代码已经丢失)和一个没有BIOS中断的IDE/ATA PIO驱动程序。我希望创建一个引导加载程序,将系统置于保护模式,禁用分页,创建平面内存模型,然后跳转到FAT32格式硬盘根目录中名为OS.SYS的文件的0x0偏移量。我知道怎么做,除了一件事:改变磁盘的引导扇区。我知道如何将硬盘格式化为FAT32,以便在文件开头获得正确的BPB等,但我不知道如何复制代码,以便BPB不会损坏。即使在DD可用的Linux中,我也无法克服这个障碍——我总是使用自定义文件系统。不过,我现在看到了这样做的缺点,比如不能使用文件管理器之类的简单工具来移动文件进行测试 基本上,总而言之,我要问的是如何在一个已经在工作的FAT32文件系统上更改引导扇区代码,而不会弄乱BPBWindows 如何更改胖引导扇区中的代码?,windows,assembly,x86,osdev,fat,Windows,Assembly,X86,Osdev,Fat,我正在创建一个操作系统,并且能够创建一个简单的多任务内核(尽管代码已经丢失)和一个没有BIOS中断的IDE/ATA PIO驱动程序。我希望创建一个引导加载程序,将系统置于保护模式,禁用分页,创建平面内存模型,然后跳转到FAT32格式硬盘根目录中名为OS.SYS的文件的0x0偏移量。我知道怎么做,除了一件事:改变磁盘的引导扇区。我知道如何将硬盘格式化为FAT32,以便在文件开头获得正确的BPB等,但我不知道如何复制代码,以便BPB不会损坏。即使在DD可用的Linux中,我也无法克服这个障碍——我总
注意:我正在使用Windows 10和NASM,并打算将虚拟硬盘与QEMU或Virtualbox一起使用。这应该是显而易见的。从现有引导扇区读取BPB,用BPB更新引导扇区,写入修改后的引导扇区。编写一个程序来读取现有BPB,并将该BPB写入引导加载程序映像。如果处理分区媒体,则可能还需要保留分区表。我将试着编写一个程序来执行您的建议。因此,基本上我正在编写一个工具,将当前引导记录复制到汇编程序二进制输出的副本中,然后将修改后的引导记录写入diskYes,尽管您只想复制当前引导扇区的一部分(卷引导记录)。这应该是显而易见的。从现有引导扇区读取BPB,用BPB更新引导扇区,写入修改后的引导扇区。编写一个程序来读取现有BPB,并将该BPB写入引导加载程序映像。如果处理分区媒体,则可能还需要保留分区表。我将试着编写一个程序来执行您的建议。因此,基本上我正在编写一个工具,将当前引导记录复制到汇编程序二进制输出的副本中,然后将修改后的引导记录写入diskYes,尽管您只想复制当前引导扇区的一部分(卷引导记录)。