【发布时间】:2014-01-11 06:43:29
【问题描述】:
我很新,对这个引导加载程序感到困惑。我使用 QEMU 引导加载程序。我在实现如何在 NASM 中加载内核或某些 .asm 文件时遇到问题。我已经实现了我的内核文件,我想将它加载到我的引导扇区文件中。
我只是按照互联网所说的建立引导扇区,然后我想出了这个:
[BITS 16]
[ORG 0x7C00]
mov [bootdrv], dl ;put drive number
;disable interrupt, set stack, enable interrupt
cli
mov ax, 0x9000
mov ss, ax
mov sp, 0
sti
...
*some code here nothing to do with loading
...
.load_kernel:
call read_kernel ; Load stuff from the bootdrive
jmp dword KERNEL_SEGMENT:0
read_kernel:
push ds
.reset:
mov ax, 0 ;reset disk
mov dl, [bootdrv] ;drive to reset
int 13h
jc .reset ;try again if fail
pop ds
.read:
*this is where I became confused and lost. I read that you should
locate your kernel and pass around using the bootdrv(drive number)
and return. I can't seem to understand.
任何答案都会很有帮助,因为我真的迷路了。
【问题讨论】:
标签: kernel nasm bootloader