《30天自製作業系統》學習筆記 day01

2021-10-23 01:34:31 字數 2505 閱讀 2905

1.二進位制編輯器檢視作業系統源**並編寫

博主未採用書中推薦二進位制編輯器,而是使用notepad++和hexeditor外掛程式。

參考:新版notepad++加十六進製制檢視的外掛程式hexeditor

000000:helloipl啟動區的名稱可以是任意的字串(8位元組)

啟動區:軟盤的第乙個扇區為啟動區,計算機讀取軟盤512個位元組為乙個扇區單位。軟盤大小1440kb共2880個扇區,計算機從第一扇區讀取內容,如果最後兩個位元組內容不是0x55aa計算機會認為沒有啟動程式。

000020:hello-os磁碟的名稱(11位元組)

000030:fat12磁碟格式名稱(8位元組)

在第9行二進位制資料後的資料,全部都是0000 0000 0000 0000,這些資料僅僅是為了湊夠1440kb資料,湊夠乙個3.5英吋軟盤大小。

2.執行軟盤映像

img字尾的檔案

在作者給出的os檔案中day1->helloos0 的helloos.img是用上述寫機器碼方法寫的作業系統映像檔案,在vmware虛擬機器中可以直接執行。

新建虛擬機器

在虛擬機器設定中刪去cd/***設定,而選用軟盤設定,軟盤檔案位址及上述helloos0中的helloos.img

啟動虛擬機器

3.初識彙編**

用notepad++在helloos1中開啟helloos.nas,發現是匯程式設計序,

其中resb指令是"reserve byte「的簡寫表示空出來位元組,nask匯程式設計序會自動填上0x00,這樣就省去位元組寫18萬行**。這段nask**定義的位元組數剛好1440kb也就是我們作業系統的大小。

編譯執行

將匯程式設計序編譯成映像檔案需要使用作者提供的程式軟體,在tolset檔案下新建helloos1資料夾,將剛剛的helloos.nas複製進去

我們在helloos1資料夾下:

新建文字,輸入文字 cmd.exe,儲存檔案,檔名修改為!cons_nt.bat。

新建文字輸入: …\z_tools\nask.exe helloos.nas helloos.img 檔名修改為asm.bat,

新建文字輸入:

copy helloos.img …\z_tools\qemu\fdimage0.bin

…\z_tools\make.exe -c …/z_tools/qemu

檔名修改為run.bat。

!cons_nt.bat的功能是在當前目錄開啟cmd命令列,

asm.bat的功能是使用helloos1資料夾的同級資料夾z_tools資料夾下的nask.exe根據helloos.nas生成helloos.img。

run.bat的功能是複製當前生成的hellloos.img映象檔案,使用qemu執行。

開啟!cons_nt.bat在命令列中輸入asm.bat可以發現在同級目錄下生成了helloos.img

繼續在命令列中輸入run.bat會使用作者的qume虛擬機器執行(當然也可以按照上文的使用vmvare虛擬機器)

加工潤色彙編**

作者修改完的彙編**位於helloos2檔案下

因為注釋是日文的,所以博主去github上找了中文版的。

相當於使匯程式設計序更加有邏輯性。

有一行命令需要注意,在資訊顯示部分中的resb 0x1fe-$ 預留位元組命令,$ 變數可以告訴我們當前行數的位元組數,在這個程式裡前面已經輸入了132個位元組,所以這裡的 $ 就是132因此用 0x1fe-132得到378位元組,連續輸出378個位元組的0x00,保證從0x1f位元組(510)開始輸出55aa。

這樣的好處是我們可以修改hello world的輸出內容,而不必考慮因為輸出內容變化而帶來的位元組數問題。

《30天自製作業系統》學習筆記 helloos0

本文 一 軟體 檔案 說明 1.cons nt.bat檔案 這是一種批處理檔案,可以直接執行指令。本檔案在這裡的作用相當於cmd,用記事本檢視其內容是,也即是cmd。2.cons 9x.bat檔案 和 cons nt.bat作用相同,只是用於windows95平台,所以相應的程式為command。3...

《30天自製作業系統》學習筆記(一)

一 組合語言 一 暫存器 ax accumulator 累加暫存器 al ah cx counter 計數暫存器 cl ch dx data 資料暫存器 dl dh bx base 基址暫存器 bl bh sp stack pointer 棧指標暫存器 bp base pointer 基址指標暫存器...

《30天自製作業系統》學習筆記(三)

一 指標相關 目的 達到效果 mov byte i i 0x0f 使用c語言直接操作記憶體 做法 int i char p p char i p i 0x0f 二 顯示控制 一 色號設定。採用調色盤模式,有程式設計師自己指定顏色編號。二 調色盤使用步驟。禁止中斷 將想要設定的調色盤號碼寫入0x03c...