自制操作系统-0

来源:互联网 发布:linux文本替换命令 编辑:程序博客网 时间:2024/05/02 01:41

从零开始写一个操作系统相信是很多编程爱好者的梦想。以前也下载过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下运行

在新建的操作系统的设置中添加硬件软盘
floppy

启动
run

五.最后

代码还是不太懂,尤其是那一堆16进制数。加油!