gpt4 book ai didi

assembly - bios 如何知道存在什么类型的 BPB?

转载 作者:行者123 更新时间:2023-12-04 21:07:29 24 4
gpt4 key购买 nike

如果我希望我的引导加载程序从 U 盘启动,我必须包含一个 BPB。 U 盘在软盘仿真模式下运行。如所见 here ,有许多不同的 BPB 版本。 bios 如何知道存在什么类型的 BPB? GRUB 0.97 似乎正在使用另一个 BPB格式 ?

我可以从偏移量 0xb 稍微填充我的引导加载程序,然后它也可以工作。
是否有标准/通用尺寸可供使用?我没有在我的 USB 上使用任何文件系统,只是原始的。

我想我需要 BPB,因为 bios 试图更新一些值,这会覆盖一些代码。既然每个 BPB 看起来都有点不同,那么 bios 怎么知道在哪里更新什么值呢?

最佳答案

并非所有 BIOS 实现都关心您是否有 BPB。以 MBR 引导扇区开头的 BPB 的一般格式如下:

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,验证它的方式就是简单地解析它。

关于assembly - bios 如何知道存在什么类型的 BPB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42141662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com