官术网_书友最值得收藏!

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就行了。接下來我們就來做這件事。

主站蜘蛛池模板: 饶河县| 长治县| 观塘区| 渝中区| 兴和县| 双鸭山市| 长宁县| 霍州市| 无极县| 古交市| 长寿区| 永嘉县| 伊宁市| 绥芬河市| 乐都县| 湖南省| 乌什县| 岢岚县| 嘉义市| 普定县| 宕昌县| 隆安县| 陆良县| 常宁市| 上杭县| 五寨县| 湘阴县| 灵丘县| 湘阴县| 扬州市| 阳山县| 广东省| 霸州市| 棋牌| 吴堡县| 江都市| 宿迁市| 郓城县| 盱眙县| 静安区| 临潭县|