入手一本《30天自制操作系统》,内容诙谐有趣,很适合对操作系统一窍不通的新手。

据作者所言,这本书的最终目标是从零开始编写一个五脏俱全的图形操作系统,不用什么基础,而且只需30天!!

没有看错,只需30天,看着真的心动了。编写一个操作系统应该是很多程序员的梦想吧,可能很多人想都不敢想,觉得太难了。

但是作者却说这是一件很简单的事,那么挑战一次也未尝不可吧。

顺便一提,文中用到的软件、文件都在文章最后的网盘连接里,可以直接下载。

那么就正式开始第一天——

一、制作软盘映像文件helloos.img

首先要用到一种直接对二进制数进行编辑的软件,Binary Editor,用它来进行软盘映像文件的制作。

缥缈的夕阳、直接输入十六进制数

打开编辑器,直接从键盘上输入EB4E904845…

要敲好多内容,虽说是二进制编辑器,输入的都是十六进制的数,如果敲101010…这种的很容易出错而且敲的量更多了。 最终文件大小是1474560(1440X1024)字节,然后将内容另存为helloos.img,这样软盘映像文件就制作好了。

兴奋的心锁、使用汇编程序生成

使用汇编程序helloos.nas生成helloos.img,helloos.nas程序 只有22行。

汇编程序虽然只有22行,但是很难看出来这个程序是干什么的。对程序员来说,写代码怎么能不加注释呢,那么把上面的程序润色一下——

简单复习一下汇编指令吧:

DB(define byte)指令是往文件里写入一个字节的指令,也可以直接用它来写字符串。在写字符串时,汇编语言会查找字符串中每个字符对应的编码,然后一个字节一个字节的排列起来。

RESB(reserve byte)指令略写预约字节,比如RESB 16,就是从现在开始的地址空出来16个字节,使用编译器nask.exe,不仅会将16个字节空出来,还会在空出来的地址上填入0x00,节省了大量代码。

RESB 0x1fe- 中 的 中的 中的符号,在这里它是一个变量,可以告诉我们这一行的字节数。比如在这个程序中,前面已经输出了132字节,这里$就是132。编译器nask.exe先用0x1fe减去132得出378,然后连续输出378个字节的0x00。

;命令,是注释命令,相当于C语言中和Java中的“//”。

DW(define word)和DD(define double-world)指令类似于DB,前者是2个字节,后者是4个字节。

将编译器nask.exe和源代码helloos.nas放在同一目录下,在命令行窗口输入如下指令,生成helloos.img:

二、使用helloos.img启动电脑

将这个helloos.img软盘映像文件写入软盘,用它来启动电脑,画面上会出现“hello,world”。

可能有00后的小伙伴会问,软盘是什么,没见过这东西?它长这样——

用途跟U盘差不多,但它的存储容量太小,现在已经基本不用软盘了。现在很多电脑也没有读软盘的软驱,笔者电脑也没有软驱。不过现在我们有更方便的工具——虚拟机,可以用虚拟机来读取软盘映像文件。

这里使用常用的VMware Workstation Pro,安装好后,新建一个虚拟机myos。右击新建的虚拟机,在设置里选择软盘,选中helloos.img文件的位置。(若没有软盘选项,点击下方的添加,加载软盘的驱动即可)

准备工作完成后,点击运行就可以。

界面显示了hello world,如果想要显示其他内容,更改一下helloos.img的内容就可以了,还是蛮简单的~

百度网盘链接:
链接:https://pan.baidu.com/s/1JU2csFnN-QyiIGmOJgRhlw
提取码:f2zf