《30天自製作業系統》DAY15 DAY 21

2021-09-27 09:45:17 字數 1279 閱讀 3790

day 20

day 19

day 18

day 17

day 16

day 15

3.補充學習

通過區分應用程式與作業系統的**段、資料段來保護作業系統。

對異常的支援

用途段號

作業系統**段

2作業系統資料段

1應用程式**段

1003

應用程式資料段

1004

tss使用

3~1002

將 asm_hrb_api 註冊到 idt(0x40),應用程式將通過中斷號呼叫asm_hrb_api。同時asm_hrb_api使用edx作為功能號暫存器,因此在呼叫時可指定功能號以呼叫不同功能。

asm_hrb_api 呼叫 _hrb_api

hrb_api 根據 edx 呼叫不同api

中斷返回:iretd

功能號功能1

顯示單個字元(al=字元編碼)

2顯示字串(ebx=字串位址)

3顯示字串(ebx=字串位址,ecx=字串長度)

相當於exe,為了與exe區分

範圍dsctbl.c

1~2mtask.c

3~1002

應用程式

1003~

將hello.nas 翻譯成 hello.hrb, 並寫入磁碟中

根據名稱找到檔案控制塊

根據檔案控制塊和fat找到所在所在磁碟並寫入記憶體

分配乙個段(記憶體位址和長度等資訊),註冊到gdt中

farcall 執行這個段的程式

struct fileinfo ;

型別0x01

唯讀檔案

0x02

隱藏檔案

0x04

系統檔案

0x08

非檔案資訊(比如磁碟名稱)

0x10目錄注

當同時具有多個屬性,只需相加即可

呼叫函式,如farjmp(int eps, int cs) 時,[esp+4]存放第乙個 引數的值,[esp+8存放第二個引數的值]

30天自製作業系統

第一天的內容很少,是一些簡單的基礎知識,在這裡我就沒有必要寫出來了,只說出大概的輪廓了,然後我會對其中的幾點進行詳細的解釋。文章的第一天的輪廓大概是這樣的,作者首先用二進位制編輯器做了乙個顯示二進位制的程式,然後用彙編完全db的形式,後又進行改善,最後以比較標準的組合語言編寫,但程式主體部分還沒有翻...

30天自製作業系統day01

第一天的標題,從計算機結構到匯程式設計序入門。這一天作者共講了一下內容 1.作者上來就用二進位制編輯器製作了乙個軟盤映象boot.img。像作者一樣,現在已經不需要再去購買軟盤,再說就算想買也不一定買得到。本人使用qemu載入軟盤映象,命令 qemu system i386 fda boot.img...

30天自製作業系統day02

組合語言學習與makefile入門 作者共講了幾個簡答的指令 org jmp mov add cmp je int hlt。標號的使用,的使用 8個16位暫存器,他們各自意義不同,雖然差不多可以通用,但效果不一樣,如add cx,0x1234和add ax,0x1234指令長度就不一樣。前者為81 ...