简介
我已经开发好了boot.asm汇编程序(引导程序),我想要再开发一个loader.asm用于实现一些信息的初始化,以及跳转到操作系统内核,那么我该如何将这两个程序文件组织到一起,并进行跳转调用呢?
Fat12文件系统
这是我们就可以用到fat12文件系统的组织方式来进行寻址,并加载相应的程序了。
#我们先将两个文件编译成二进制文件
nasm boot.asm -o boot.bin
nasm loader.asm -o loader.bin
#创建img软盘,并将boot.bin拷贝进去
bximage #选1.44mb, fd(软盘),boot.img
dd if=boot.bin of=boot.img bs=512 count=1 conv=notrunc
#将boot.img使用fat12的方式挂载进linux
mount boot.img /media/ -t -vfat -o loop
#将loader.bin写入fat12文件系统
cp loader.bin /media/
sync
umount /media/ #卸载完成之后,loader.bin已经以fat12的文件系统组织方式进入boot.img了
boot程序跳转到loader程序的方式
既然loader.bin已经以fat12的文件系统方式加入了软盘,那么我们boot寻址的时候就可以按照fat12的方式进行查找该文件,先通过根目录进行遍历,直到搜索到了这个文件,将这个文件加载进入到内存就好,这样我们就可以进行跳转到loader程序啦