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 ...