【发布时间】:2019-09-17 22:01:54
【问题描述】:
我在学习 2 阶段引导加载程序时编写了一个引导加载程序和基本内核作为一个有趣的项目,我想在 USB 的第 1 扇区(或 MBR)加载我的引导加载程序,在第 2 扇区加载内核。我已经使用 NASM 将它们编译到 Bootloader.bin 和 Kernel.bin 中。我只需要一点帮助就可以将它们实际写入 USB。我可以访问 Windows 和 Linux,所以任何答案都值得赞赏。
Bootloader.asm
[BITS 16]
[ORG 0x7C00]
ResetDisk:
XOR AH, AH
INT 0x13
JC ResetDisk
ReadDisk:
MOV BX, 0x8000
MOV ES, BX
MOV BX, 0x0000
MOV AH, 0x02
MOV AL, 1
MOV CH, 0x00
MOV CL, 0x02
MOV DH, 0x00
INT 0x13
JC ResetDisk
JMP 0x8000:0x0000
TIMES 510-($-$$) DB 0
DW 0xAA55
内核.asm
[BITS 16]
[ORG 0x8000]
MOV SI, HelloString
CALL PrintString
JMP $
PrintChar:
MOV AH, 0x0E
MOV BH, 0x00
MOV BL, 0x0F
RET
PrintString:
MOV AL, [SI]
INC SI
OR AL, AL
JZ Exit
CALL PrintChar
JMP PrintString
Exit:
RET
HelloString DB 'Hello World!',0
TIMES 512-($-$$) DB 0
【问题讨论】:
-
也许这个 SO 答案可能会有所帮助:stackoverflow.com/questions/36044706/…
标签: x86 usb nasm bootloader osdev