。
我希望MINIX首先执行我的代码,然后继续执行默认引导加载程序。
到目前为止,我所拥有的是:
org 0x7c00
jmp 0:start
start:
mov ax, cs
mov ds, ax
mov es, ax
mov ss, ax
mov sp, 0x8000
; ... my code ... ;
; that is supposed to mark code as bootloader:
times 510-$+$$ db 0
dw 0xaa55
我的整个代码都在这里。我通过执行命令来运行它:
pkgin -y in nasm
nasm -f bin my_bootloader.asm -o my_bootloader
dd bs=512 count=1 if=my_bootloader of=/dev/c0d0
reboot
重新启动后,我的程序启动,但当然之后系统不会加载。我该怎么做才能将原始引导加载程序"附加"到我的代码中?
通常的解决方案是执行所有 MBR 引导加载程序所做的事情:将自己移出标准位置(00600
是通常的目标位置(,然后将"常规"引导加载程序从磁盘的另一个扇区加载到07C00
并跳转到它。
你可以在MINIX(GAS汇编程序(中找到带有注释的汇编代码,无论是在MINIX(GAS汇编程序(中,在MINIX的先前版本中(ACK语法,接近但与NASM不同(,如果你坚持使用NASM,在Web上等