30天自製作業系統 第一天

2021-07-26 09:40:42 字數 1922 閱讀 3930

* virtual box

* nasm

新建乙個名為「helloos.asm」的彙編檔案,**如下:

;hello-os

;tab=4

;以下這段是標準的fat12格式軟盤專用**

db 0xeb, 0x4e, 0x90

db "helloipl" ;(8位元組)啟動器名稱,任意值。字串長度固定

dw 512 ;每個扇區的大小,大小為512位元組

db 1 ;簇的大小,大小為乙個扇區

dw 1 ;fat的起始位置(一般從第一扇區起)

db 2 ;fat的個數(必須為2)

dw 224 ;根目錄大小(一般設定成224項)

dw 2880 ;磁碟大小(必須為2880扇區,1.44m)

db 0xf0 ;磁碟種類(必須為0xf0)

dw 9 ;fat長度,(必須為9扇區)

dw 18 ;每個磁軌扇區數(必須為18個扇區)

dw 2 ;磁頭數,(必須為2)

dd 0 ;不使用分割槽,(必須為0)

dd 2880 ;重寫磁碟大小

db 0,0,0x29 ;簽名,固定

dd 0xffffffff ;序列號

db "hello-os " ;(11位元組)磁碟名稱,任意值。字串長度固定

db "fat12 " ;(8位元組)磁碟格式名稱,任意值。字串長度固定

resb 18 ;空出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 ;2個換行

db "hello,world"

db 0x0a ;換行

db 0

resb 510-($-$$) ;填入0x00,直到510位元組

db 0x55, 0xaa ;即第一扇區最後倆位元組是55aa

;啟動區以外部分的輸出

db 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00

resb 4600

db 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00

resb 1469432

通過nasm將上述檔案編譯成img檔案,**如下:

nasm -o helloos.img helloos.asm
在virtual box中新建乙個作業系統,加入乙個軟盤,軟盤的內容為上面生成的img檔案

執行虛擬機器,結果如下:

參考:

30天自製作業系統(第一天)

30天自製作業系統 書中說閱讀本書不需要相關儲備知識,但實際上我認為該書還是需要很多儲備知識的。書的第零天主要是介紹開發前的準備,我認為是心理上的準備更多。好了,不說這麼多,到第1天。直接著手開發。第1天上來書上就叫使用乙個二進位制編輯器,直接用二進位制編寫乙個可以直接在啟動區執行的顯示hello ...

30天自製作業系統 第一天

因為咱們的目的是為了研究作業系統的組成,所以暫時略過bootloader的啟動部分。直接從系統啟動的第二階段的主引導記錄開始。前提是將編譯工具放在該檔案目錄的同級目錄下,該工具為日本人川合秀實自製的編譯程式,優化過的nasm編譯工具。寫入以下彙編 生成img檔案,然後使用qemu虛擬機器啟動。hel...

《30天自製作業系統》 第一天

二進位制編譯與文字編譯器大家用自己順手的就可以,今天通過兩種方法執行虛擬機器,第一種通過作者提供的工具執行在qemu中,第二種方法執行到vmware中,直接上效果圖。將 hello,world 換成了 welcom to flashingos qemu效果圖 vmware效果圖 第一步首先要建立乙個...