use*_*948 5 x86 assembly bootloader
如果我希望我的引导加载程序从usb棒启动,我必须包含一个BPB.usb棒在软盘模拟模式下运行.正如所看到这里,有许多不同版本的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
Run Code Online (Sandbox Code Playgroud)
这些字段总是在同一个地方。如果系统关心 BPB,那么它验证它的方式就是简单地解析它。
| 归档时间: |
|
| 查看次数: |
247 次 |
| 最近记录: |