《30天自製作業系統》之 第1 2天

2021-08-27 15:02:24 字數 2107 閱讀 9317

今年的國慶長假真是熱鬧,各個景區真可謂是人滿為患。回趟家真心都不容易,路上各種堵,今天折騰了一天終於算是回到學校了。這個國慶啥都沒乾,死宅在家看電視、看書、碼**神馬的感覺真心不錯。假期開始看一本小日本的書《30天自製作業系統》,今天看到了書中內容的第八天,感覺書寫的不錯。但我只是看書+讀**,並沒有自己維護乙份**,看到書中的第八天,前面的東西又忘了,所以今天開始做讀書筆記並且自己維護乙份**。親自敲一遍**的好處不用多說,再者隨書光碟中的**注釋並沒有翻譯成中文,所以說維護乙份帶中文注釋的**好處多多!

下面切入正題!

第零天對什麼作業系統、書中將要用到的技術做了介紹,同時給出了各章節的主要內容。

第一天的內容其實沒有什麼好記錄的,但其中的一些概念還是了解一下為妙。

第二天才是後面內容的乙個鋪墊,程式功能和第一天的一樣(讓程式在電腦開機的時候自行啟動),只不過比第一天的更加容易閱讀和理解。下面直接上**,當然這一天當中一些概念還是需要了解的。

ipl.nas

0102

0304

0506

0708

0910

1112

1314

1516

1718

1920

2122

2324

2526

2728

2930

3132

3334

3536

3738

3940

4142

4344

4546

4748

4950

5152

5354

5556

5758

5960

6162

6364

; ipl.nas

;tab=4

org0x7c00;程式的裝載位址

;以下的記述用於標準fat12格式的軟盤

jmpentry

db0x90

db"helloipl" ;啟動區的名稱可以是任意的字元(8字元)

dw512;每個扇區的大小

db1 ;簇(cluster)的大小(必須為1個扇區)

dw1 ;fat的起始位置(一般從第乙個扇區開始)

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

dw224;根目錄的大小(一般設成224項)

dw2880 ;該磁碟的大小(必須為2880扇區)

db0xf0 ;磁碟的種類(必須是0xf0)

dw9 ;fat的長度(必須是9扇區)

dw18 ;1個磁軌(track)有幾個扇區(必須是18)

dw2 ;磁頭數(必須是2)

dd0 ;不使用分割槽,必須是0

dd2880 ;重寫一次磁碟大小

db0,0,0x29 ;意義不明,固定

dd0xffffffff ;(可能是)卷標號碼

db"hello-os" ;磁碟的名稱(11位元組)

db"fat12" ;磁碟格式名稱(8位元組)

resb18 ;先空出18位元組

;程式核心

entry:

movax,0 ;初始化暫存器

movss,ax

movsp,0x7c00

movds,ax

moves,ax

movsi,msg

putloop:

moval,[si]

addsi,1 ; 給si加1

cmpal,0

jefin

movah,0x0e;顯示乙個文字

movbx,15 ;指定字元顏色

int0x10 ;呼叫顯示卡bios

jmpputloop

fin:

hlt ;讓cpu停止,等待指令

jmpfin;無限迴圈

msg:

db0x0a,0x0a ;換行2次

db"dukeos"

db0x0a ;換行

db0resb0x7dfe-$ ;填寫0x00,直到0x07dfe($代表將要讀入的記憶體位址)

db0x55,0xaa

ps:如果你想在linux上做同樣的事情,那麼你可以參考一下面連線出的部落格(作者是在ubuntu上開發的,寫的很不錯哦!)

h397916230的專欄

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

1.c語言與畫面顯示的練習 彙編與c 語言結合時能自由使用的寄存區只有 eax,ecx,edx3 個,其他寄存區用於記憶非常重要的值,只能讀不能寫。intel系列 cpu 8086 80186 286 386 486 pentium pentiumpro pentium2 pentium3 pent...

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

1.pic 可程式設計中斷控制器 pic 連線 8個中斷訊號,監視輸入管腳的 8個中斷訊號。主 pic irq0 irq7 irq2 連線到從 pic irq8 irq15 中斷發生後,cpu 命令pic傳送2 個位元組的資料,格式是 0xcd 0 cpu收到2 個位元組後把資料當做指令來執行。0x...

30天自製作業系統 第3天

cf 進製標誌,1位暫存器 jc 若進製標誌是1,則跳轉 int 0x13 呼叫磁碟bios ah 0x00 系統復位 0x02 讀盤 0x03 寫盤 0x04 校驗 0x0c 尋道 al 處理物件的扇區數 ch 柱面號 0xff cl 扇區號 0 5位 柱面號 0x300 2 dh 磁頭號 dl ...