我希望MINIX首先执行我的代码,然后继续执行默认的bootloader。
到目前为止我所拥有的是:
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
我的整个代码是here。我通过执行命令来运行它:
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
重新启动后,我的程序启动,但当然系统后来没有加载。我能做些什么来"附加"原始的bootloader到我的代码?
答案 0 :(得分:0)
通常的解决方案是执行所有MBR引导加载程序所做的事情:将自己移出标准位置(00600
是通常的目标位置),然后加载"常规"从磁盘的另一个扇区启动加载程序到07C00
并跳转到它。
您可以在MINIX({3}}中找到使用注释的汇编代码,previous releases of MINIX(ACK语法,关闭但与NASM不同),{{ 3}}如果你坚持使用NASM,SYSLINUX等等。