制作真正的IPL(启动程序记载器)
考虑到以后的开发,我们只需要利用nask制作一个512字节的启动区即可,剩下的部分我们用磁盘映像管理用具来做,这样开发就方便了
day2/helloos4/ipl.nas修改了msg标号的指向的汇编指令,修改后如下:
msg:
DB 0x0a, 0x0a ; 换行
DB "hello, world"
DB 0x0a ; 换行
DB 0
RESB 0x7dfe-$ ; 到0x7dfe在0x00中填补的命令
DB 0x55, 0xaa
我们进一步改造asm.bat,输入…\tolset\z_tools\nask.exe ipl.nas ipl.bin ipl.lst(这个是根据自己电脑中的文件所在的实际目录来输入的,否则会出现找不到路径的错误)
双击!cons_nt.bat文件输入asm我们发现并没有直接helloos.img镜像文件,而是生成一个ipl.bin和ipl.lst文件,我们查看其中的ipl.lst,这是一个文本文件,用来确认每个指令是怎么翻译成机器语言的。
继续!我们需要的是.img映射文件,makeimg.bat中的代码为…\tolset\z_tools\edimg.exe imgin:…/…/…/tolset/z_tools/fdimg0at.tek wbinimg src:ipl.bin len:512 from:0 to:0 imgout:helloos.img(同样是根据实际的目录来的)
在cmd窗口中继续输makeimg,我们可以看到文件夹中多了一个helloos.img,这个就是我们所需要的.img映射文件
接着,在控制台中输入run
可以看到我们写的hello world操作系统成功跑起来了。
这里的edimg.exe是一个磁盘映射管理工具,用来管理生成的img映射文件。
Makefile的入门
我们在helloos4中生成helloos.img镜像文件,并且使用qemu虚拟机运行这个文件,其中涉及到的批处理文件甚至比我们实际需要的文件还多,我们可以将这些单步的命令写到一个文件中去执行。
新建一个文件,文件名为Makefile,不使用后缀,在记事本中打开这个文件,输入如下语句:
#默认动作
default :
../../../tolset/z_tools/make.exe img
#文件生成规则
ipl.bin : ipl.nas Makefile
../../../tolset/z_tools/nask.exe ipl.nas ipl.bin ipl.lst
helloos.img : ipl.bin Makefile
../../../tolset/z_tools/edimg.exe imgin:../../../tolset/z_tools/fdimg0at.tek \
wbinimg src:ipl.bin len:512 from:0 to:0 imgout:helloos.img
#命令
asm :
../../../tolset/z_tools/make.exe -r ipl.bin
img :
../../../tolset/z_tools/make.exe -r helloos.img
run :
../../../tolset/z_tools/make.exe img
copy helloos.img ..\..\..\tolset\z_tools\qemu\fdimage0.bin
../../../tolset/z_tools/make.exe -C ../../../tolset/z_tools/qemu
install :
../../../tolset/z_tools/make.exe img
../../../tolset/z_tools/imgtol.com w a: helloos.img
clean :
-del ipl.bin
-del ipl.lst
src_only :
../../../tolset/z_tools/make.exe clean
-del helloos.img
接着,新建一个文件名为make.bat,在里面输入内容:
…\tolset\z_tools\make.exe %1 %2 %3 %4 %5 %6 %7 %8 %9
这个时候双击icons_nt_bat,在cmd中输入make run,就会自动帮我们生成好lst,bin,还有img文件,并将img映射文件装载到虚拟机中运行。
文件夹的目录内容如下
QEMU虚拟机运行结果(ipl.nas中的输出语句可以自己去修改)