如果我想让引导程序从USB记忆棒引导,则必须包括BPB。 USB记忆棒正在软盘仿真模式下运行。如here所示,有许多不同的BPB版本。 BIOS如何知道存在哪种类型的BPB? GRUB 0.97似乎正在使用另一种BPB格式?
我可以从偏移量0xb稍微填充我的引导程序,然后它也将起作用。
是否有标准尺寸/通用尺寸?我没有在USB上使用任何文件系统,只是原始文件。
我想我需要BPB,因为BIOS试图更新一些值,这会覆盖一些代码。由于每个BPB似乎都有些不同,因此BIOS如何知道在哪里更新什么值?
最佳答案
如果您有BPB,并非所有BIOS实施都在意。 BPB以MBR引导扇区开头的一般格式如下:
bits 16
org 0 ; BIOS will load the MBR to this location.
bootStart:
jmp _start
nop
osType db 'MSDOS6.0'
bpb
bps dw 512
spc db 8
rs dw 1
fats db 2
re dw 512
ss dw 0
media db 0xf8
spfat dw 0xc900
spt dw 0x3f00
heads dw 0x1000
hidden dw 0x3f00, 0
ls dw 0x5142,0x0600
pdn db 0x80
cheads db 0
sig db 0x29
serialno dw 0xce13, 0x4630
label db 'NO NAME'
fattype db "FAT32"
_start:
; set up the registers
mov ax, 0x07c0
mov ds, ax
mov fs, ax
mov gs, ax
mov ax, 0x0700
mov es, ax
这些字段始终位于同一位置。.如果系统关心BPB,则只需对其进行解析即可对其进行验证。