我有一个简单的引导加载程序代码来显示一条 hello world 消息,当从 USB 驱动器闪存到引导扇区时它可以正常工作,但是当访问文件时,磁盘变成 RAW,当格式化为 NTFS 自定义 MBR 时消失 这是我写的代码:
BITS 16
ORG 0x7c00
jmp start
start:
call clear_screen
mov ax,cs
mov ds,ax
mov si,msg
call print
print:
push ax
cld
next:
mov al,[si]
cmp al,0
je done
call printchar
inc si
jmp next
done:
jmp $
printchar:
mov ah,0x0e
int 0x10
ret
clear_screen:
mov ah, 0x07
mov al, 0x00
mov bh, 0x02 ; here goes the foreground color
mov cx, 0x0000
mov dx, 0x184f
int 0x10
ret
msg: db "Hello World"
times 510 - ($-$$) db 0
dw 0xAA55
在 HXD 上,我查看了 MBR 结构并发现了以下内容:
EB 52 90 4E 54 46 53 20 20 20 20
这转化为
???NTFS????
我尝试将其粘贴到引导加载程序的第一个字节中,但它没有启动,我还尝试将代码向右移动并将此标头粘贴到空白处,但什么也没有
我是 OSDev 的新手,所以这看起来像是一个愚蠢的问题