二進位制編譯與文字編譯器大家用自己順手的就可以,今天通過兩種方法執行虛擬機器,第一種通過作者提供的工具執行在qemu中,第二種方法執行到vmware中,直接上效果圖。(將"hello,world"換成了"welcom to flashingos!")
qemu效果圖
vmware效果圖
第一步首先要建立乙個磁碟映像檔案.img檔案,用於啟動我們的作業系統,我將這個作業系統命名為flashinos。首先需要乙個二進位制編譯器,這裡用到圖書中作者推薦的binary editor即可。安裝好之後就可以編輯二進位制檔案了,如圖所示。
其他地方都為0,一直到168000位址結束。
在建立好了二進位制檔案之後另存為flashingos.img檔案,然後使用作者提供的qemu軟體進行虛擬演示就行。
在執行之前需要在此目錄下寫兩個批處理檔案用來方便執行命令。
第乙個為run.bat,內容如下
這是呼叫作者提供的工具資料夾中的qemu用來載入img映像檔案的。
第二個檔案是install.bat,內容如下,這個功能我們之後再來介紹,暫時還沒有用到
這些準備工作完成之後開啟命令列(作者也提供了批處理檔案!cons_nt.bat),輸入run命令就能看到自己的「作業系統」成功載入了。
顯然這種直接打二進位制的方法是很麻煩的,所以在此基礎上我們使用組合語言來使操作更加簡單。
直接編譯文字flashingos.nas檔案,使用作者提供的nask對nas檔案進行編譯生成img映像檔案,這裡用到了asm.bat的批處理檔案。
;flashingos.nas
;這段**是標準的fat12格式軟盤專用的**
db 0xeb, 0x4e, 0x90
db "helloipl" ;啟動區的名稱8位元組任意字元
dw 512 ;每個扇區的大小512個字(1024位元組)
;字 = 2位元組 dw指令為define word
db 1 ;簇的大小,1位元組
dw 1 ;fat的起始位置(一般從第乙個扇區開始)
db 2 ;fat的個數(必須為2)
dw 224 ;根目錄大小
dw 2880 ;磁碟大小(2880個扇區)
db 0xf0 ;磁碟的種類
dw 9 ;fat的長度(固定值9)
dw 18 ;1個磁軌有幾個扇區(必須是18)
dw 2 ;磁頭數2
dd 0 ;不使用分割槽
dd 2880 ;重寫磁碟大小
db 0,0,0x29 ;固定值
dd 0xffffffff ;固定值(卷標號碼)
db "flash-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 "welcome to flashingos!"
db 0x0a ;換行
db 0
resb 0x1fe-$ ;填寫0x00到0x001fe
;$代表引數,這裡用於計算需要再輸出多少個0,
;$表示在此之前輸出的位元組數,由此可以補充0的個數
db 0x55, 0xaa
;啟動區以外部分的輸出
db 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00 ,0x00, 0x00
resb 4600 ;填充4600個0x00
db 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00 ,0x00, 0x00
resb 1469432
批處理檔案asm.bat,將flashingos.nas 編譯生成 flashingos.img 檔案
之後只要執行命令列,輸入asm,機會生成falshingos.img檔案,然後輸入run就可以啟動系統了。
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天自製作業系統 第一天
因為咱們的目的是為了研究作業系統的組成,所以暫時略過bootloader的啟動部分。直接從系統啟動的第二階段的主引導記錄開始。前提是將編譯工具放在該檔案目錄的同級目錄下,該工具為日本人川合秀實自製的編譯程式,優化過的nasm編譯工具。寫入以下彙編 生成img檔案,然後使用qemu虛擬機器啟動。hel...