30天自制操作系统:第一天

因为咱们的目的是为了研究操作系统的组成 , 所以暂时略过bootloader的启动部分 。直接从系统启动的第二阶段的主引导记录开始 。
前提是将编译工具放在该文件目录的同级目录下 , 该工具为日本人川合秀实自制的编译程序 , 优化过的nasm编译工具 。 写入以下汇编代码生成img文件 , 然后使用qemu虚拟机启动 。
【30天自制操作系统:第一天】; hello-os; TAB=4 DB 0xeb, 0x4e, 0x90 DB "HELLOIPL";必须是8个字节 DW 512;一个扇区的大小 DB 1 DW 1;fat的起始位置 DB 2;fat的个数 , 必须为2 DW 224 DW 2880 DB 0xf0 DW 9 dw 18 dw 2 dd 0 dd 2880 db 0,0,0x29 dd 0xffffffff db "HELLO-OS";必须是11字节 , 磁盘的名称 db "FAT12";必须是8字节 磁盘格式名称 resb 18; 程序主体 DB0xb8, 0x00, 0x00, 0x8e, 0xd0, 0xbc, 0x00, 0x7c DB0x8e, 0xd8, 0x8e, 0xc0, 0xbe, 0x74, 0x7c, 0x8a DB0x04, 0x83, 0xc6, 0x01, 0x3c, 0x00, 0x74, 0x09 DB0xb4, 0x0e, 0xbb, 0x0f, 0x00, 0xcd, 0x10, 0xeb DB0xee, 0xf4, 0xeb, 0xfd ; 信息显示部分 db 0x0a, 0x0a;两个换行 db "hello, uos" db 0x0a db 0resb 0x1fe-$ ;$:表示前面已经输出多少个字节 ,这里的$等于132 db 0x55,0xaa ; 以下是启动区以外部分的输出 DB0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 RESB 4600 DB0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 RESB 14694321234567891011121314151617181920212223242526272829303132333435363738394041424344启动运行脚本:…\z_tools\nask.exe helloos.nas helloos.imgcopy helloos.img …\z_tools\qemu\fdimage0.bin…\z_tools\make.exe -C …\z_tools\qemu
30天自制操作系统:第一天文章插图