从零开始写一个操作系统相信是很多编程爱好者的梦想。以前也下载过linux0.11的源代码,看过一部分,虽然代码不多,但还是看不懂。
这次借助30天自制操作系统这本书,一定要写出一个属于自己独一无二的操作系统。
一.环境搭建
我自己的系统是linux的,所以整个过程也是在linux下面完成的。
第一步需要一个文本编辑器,我使用的是sublime text3。
第二步需要一个汇编器,nasm。
第三步需要一个虚拟机或者模拟器,qemu,vmware都可以,正好电脑上装了vmware。
二.编写代码
;FAT12格式文件系统头部分
DB 0xeb, 0x4e, 0x90
DB "HELLOIPL"
DW 512
DB 1
DW 1
DB 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 "
DB "FAT12 "
RESB 18
;程序主体
DB 0xb8, 0x00, 0x00, 0x8e, 0xd0, 0xbc, 0x00, 0x7c
DB 0x8e, 0xd8, 0x8e, 0xc0, 0xbe, 0x74, 0x7c, 0x8a
DB 0x04, 0x83, 0xc6, 0x01, 0x3c, 0x00, 0x74, 0x09
DB 0xb4, 0x0e, 0xbb, 0x0f, 0x00, 0xcd, 0x10, 0xeb
DB 0xee, 0xf4, 0xeb, 0xfd
;信息显示部分
DB 0x0a, 0x0a
DB "my operating system"
DB 0x0a
DB 0
;原书中使用下面指令,但这个在nasm中不通过,故使用times
;这里的指令还没有细细研究
;RESB 0x1fe - $
times 510 - ($-$$) DB 0
DB 0x55, 0xaa
;以下是启动区外输出部分
DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
RESB 4600
DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
RESB 1469432
三.汇编
nasm boot.asm -o boot.img
四.在vmware下运行
在新建的操作系统的设置中添加硬件软盘
启动
五.最后
代码还是不太懂,尤其是那一堆16进制数。加油!