5 著手開發操作系統
總算寫到這個題目了,這代表我們終于完成了啟動區的制作。
下面,我們先來編寫一個非常短小的程序,就只讓它HLT。
最簡單的操作系統?
fin: HLT JMP fin
將以上內容保存為haribote.nas,用nask編譯,輸出成haribote.sys。到這里沒什么難的。
接下來,將這個文件保存到磁盤映像haribote.img里。可能有人不明白什么叫保存到映像里,其實就是像下面這樣操作:
? 使用make install指令,將磁盤映像文件寫入磁盤。
? 在Windows里打開那個磁盤,把haribote.sys保存到磁盤上。
? 使用工具將磁盤備份為磁盤映像。
大家仔細看,以上操作以磁盤映像文件開始,最終也是以磁盤映像文件結束。我們再來想像一下,如果不用借助磁盤和Windows就可以得到磁盤映像和文件,那多方便啊。這就是“保存到磁盤映像里”的意思。
能夠完成這些工作的工具其實有很多,我們曾經使用過的edimg.exe就是其中之一。所以,這次還用這個工具。
那做這個工作究竟有什么意義呢?我們先做做看,然后再說明。……筆者對程序作了修改,得到了projects/03_day下的harib00e。當然對Makefile也相應做了改動。
■■■■■
接下來用“make img”指令來做個映像文件。執行完命令,映像文件也就做成了。然后我們用二進制編輯器打開剛做成的映像文件“haribote.img”,看一看“haribote.sys”文件在磁盤中是什么樣的。
最先注意到的地方是0x002600附近,磁盤的這個位置好像保存著文件名。

0x002600附近的樣子
再往下看,找到0x004200那里,可以看到“F4 EB FD”。

0x004200附近的樣子
這是什么呢?這就是haribote.sys的內容。因為我們用二進制編輯器看haribote.sys,它恰好也就是這三個字節。好久沒用的二進制編輯器這次又大顯身手了。
以上內容可以總結為:一般向一個空軟盤保存文件時,
(1) 文件名會寫在0x002600以后的地方;
(2) 文件的內容會寫在0x004200以后的地方。
這就是我們一直想知道的東西。
了解了這一點,下面要做的事就簡單了。我們將操作系統本身的內容寫到名為haribote.sys文件中,再把它保存到磁盤映像里,然后我們從啟動區執行這個haribote.sys就行了。接下來我們就來做這件事。