《30天自制操作系统》第一天

首先,,这本书的操作系统需要用软驱来装载,但是当今都什么年代了,哪儿来的软驱,所以大家可以用虚拟机实现这本书里的所有东西,我用的是Virtual box,这是一款免费的虚拟机,个人感觉vmware太笨重了(虽然功能很全),言归正传,新建一个虚拟机神马的自己google,下面是添加一个软驱

然后就可以把软驱文件img文件加载进去了,前期工作已完成,下面是hello.img的编写,书上用2进制编辑器写太扯淡了,直接看一下原理就跳过了,

下面是hello.asm的代码

DB0xeb, 0x4e, 0x90, 0x48, 0x45, 0x4c, 0x4c, 0x4fDB0x49, 0x50, 0x4c, 0x00, 0x02, 0x01, 0x01, 0x00DB0x02, 0xe0, 0x00, 0x40, 0x0b, 0xf0, 0x09, 0x00DB0x12, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00DB0x40, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x29, 0xffDB0xff, 0xff, 0xff, 0x48, 0x45, 0x4c, 0x4c, 0x4fDB0x2d, 0x4f, 0x53, 0x20, 0x20, 0x20, 0x46, 0x41DB0x54, 0x31, 0x32, 0x20, 0x20, 0x20, 0x00, 0x00RESB 16 ;预留空间指令DB0xb8, 0x00, 0x00, 0x8e, 0xd0, 0xbc, 0x00, 0x7cDB0x8e, 0xd8, 0x8e, 0xc0, 0xbe, 0x74, 0x7c, 0x8aDB0x04, 0x83, 0xc6, 0x01, 0x3c, 0x00, 0x74, 0x09DB0xb4, 0x0e, 0xbb, 0x0f, 0x00, 0xcd, 0x10, 0xebDB0xee, 0xf4, 0xeb, 0xfd, 0x0a, 0x0a, 0x68, 0x65DB0x6c, 0x6c, 0x6f, 0x2c, 0x20, 0x77, 0x6f, 0x72DB0x6c, 0x64, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00RESB368DB0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0xaaDB0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00RESB4600DB0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00RESB1469432然后 使用nasm编译(80×86汇编编译器),直接生成软盘映像成软盘映像nasm -o helloos.img helloos.asm最后是8086汇编写的源程序,和书上有点出入:;hello-os;TAB=4;FAT12格式文件系统头部分DB0xeb, 0x4e, 0x90DB"HELLOIPL"DW512DB1DW1DB2DW224DW2880DB0xf0DW9DW18DW2DD0DD2880DB0,0,0x29DD0xffffffffDB"HELLO-OS "DB"FAT12 "RESB18;程序主体DB0xb8, 0x00, 0x00, 0x8e, 0xd0, 0xbc, 0x00, 0x7cDB0x8e, 0xd8, 0x8e, 0xc0, 0xbe, 0x74, 0x7c, 0x8aDB0x04, 0x83, 0xc6, 0x01, 0x3c, 0x00, 0x74, 0x09DB0xb4, 0x0e, 0xbb, 0x0f, 0x00, 0xcd, 0x10, 0xebDB0xee, 0xf4, 0xeb, 0xfd;信息显示部分DB0x0a, 0x0aDB"hello, world"DB0x0aDB0;原书中使用下面指令,但这个在nasm中不通过,故使用times;RESB0x1fe – $times 510 – ($-$$) DB 0DB0x55, 0xaa;以下是启动区外输出部分DB0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00RESB4600DB0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00RESB1469432

版权声明:本文为博主原创文章,未经博主允许不得转载。

对于沙漠中的旅行者,最可怕的不是眼前无尽的荒漠,而是心中没有绿洲。

《30天自制操作系统》第一天

相关文章:

你感兴趣的文章:

标签云: