30天自製作業系統 第一天

2021-10-24 17:00:50 字數 1473 閱讀 7767

因為咱們的目的是為了研究作業系統的組成,所以暫時略過bootloader的啟動部分。 直接從系統啟動的第二階段的主引導記錄開始。

前提是將編譯工具放在該檔案目錄的同級目錄下,該工具為日本人川合秀實自製的編譯程式,優化過的nasm編譯工具。

寫入以下彙編**生成img檔案,然後使用qemu虛擬機器啟動。

; hello-os

; tab=4

db 0xeb, 0x4e, 0x90

db "helloipl" ;必須是8個位元組

dw 512 ;乙個扇區的大小

db 1

dw 1 ;fat的起始位置

db 2 ;fat的個數,必須為2

dw 224

dw 2880

db 0xf0

dw 9

dw 18

dw 2

dd 0

dd 2880

db 0,0,0x29

dd 0xffffffff

db "hello-os " ;必須是11位元組,磁碟的名稱

db "fat12 " ;必須是8位元組 磁碟格式名稱

resb 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 ;兩個換行

db "hello, uos"

db 0x0a

db 0

resb 0x1fe-$ ;$:表示前面已經輸出多少個位元組, 這裡的$等於132

db 0x55,0xaa

; 以下是啟動區以外部分的輸出

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

resb 4600

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

resb 1469432

啟動執行指令碼:

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

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

30天自製作業系統 第一天

virtual box nasm 新建乙個名為 helloos.asm 的彙編檔案,如下 hello os tab 4 以下這段是標準的fat12格式軟盤專用 db 0xeb,0x4e,0x90 db helloipl 8位元組 啟動器名稱,任意值。字串長度固定 dw 512 每個扇區的大小,大小為...

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

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