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

2021-06-20 02:15:19 字數 2755 閱讀 1864

1. c語言與畫面顯示的練習

彙編與c

語言結合時能自由使用的寄存區只有

eax,

ecx,

edx3

個,其他寄存區用於記憶非常重要的值,只能讀不能寫。

intel系列

cpu:

8086->80186->286->386->486

->pentium->pentiumpro->pentium2->pentium3->pentium4->.....

286是

16位,

386以後是

32位。

2. char i;是類似al的

1位元組變數,

shorti;

是類似ax

,int i 

;是類似

eax4

位元組變數。

char *p;

p = (char *)i;    //mov eax,i  ;給暫存器賦值

*p = i&0x0f;    //mov byte[ecx],i&oxff  ;給記憶體位址賦值

3. *p並是不什麼變數,變數只有

p,所謂

*p,就相當於彙編中

byte[p]

這種語句的替換。

char *p;宣告的是

p而不是*p。

char *p

不必看做指標,

p不是指標,而是位址變數!!!他表示的是記憶體的位址。

4.  *(

p+i)等同於

p[i];

同樣可寫為

i[p]; 

都是byte[ ecx+i]

,  p[2]

和2[p]

是一樣的。

char a[3]; //resb 3

char a[3]=; //db 1,2,3

cpu的管腳與記憶體相連,可通過管腳讀寫資料。

!cons_nt.bat make clean,make run.

編寫作業系統開始是對bios

控制,取出儲存在

rom裡的程式。

bios

是用來執行

post(power on self test

,自檢)

的。自檢是檢查計算機的完整性

(比如外設是否工作正常、鍵盤是否連線等

)。這一切完成以後,你就會聽到

pc喇叭發出一聲清脆的響聲。如果一切正常,

bios

就會選擇乙個啟動裝置,並且讀取該裝置的第一扇區

(即啟動扇區

),然後控制過程就會轉移到指定位置。啟動裝置可能是乙個軟盤、光碟、硬碟,或者其它所選擇的裝置。在此我們把軟盤作為啟動裝置。如果我們已經在軟盤的啟動扇區裡寫了一些**,這時它就被執行。因此,我們的目的很明確,就是往軟盤的啟動扇區寫一些程式。 

web伺服器是什麼?首先,他是乙個伺服器,給終端(客戶端)提高服務。客戶端想伺服器發出請求,伺服器返回相應的資料。

web伺服器在某個埠監聽服務,有請求就回應。 。

5. cyls equ 10 ;定義常量

我們先用bios

設定啟動的顏色模式等,然後我們需要儲存設定值,放入記憶體某個區域

vmode  equ 0x0ff2

mov byte[vmode],8 ;8位彩色模式儲存到記憶體

0x0ff2

處。而後我們就可以在此記憶體處讀取顏色模式了(

32位系統不好訪問

bios

函式中斷)。同樣可以儲存解析度以及影象緩衝區的起始位址(

0xa000

)等。不能畫面模式使用的顯示卡記憶體(

vram

)不一樣。

至此啟動區**ipl10.nas

不變了,開始

os編寫,

asmhead.nas, naskfunc.nas 

彙編編寫的函式,供

c呼叫。

bootpack.c

:呼叫彙編函式的包。

8086加電或復位後,處理器會執行乙個硬體初始化,將**段暫存器

cs內容設為

0xffff

,其他所有暫存器都設為

0,包括指令指標暫存器ip。

8086的

20根位址線

0000-9ffff

用於訪問

dram

記憶體,f0000-fffff

(頂部64k

)用於訪問

rom。

rom裡固化了開機時要執行的指令。開機第一條指令位址位於cs:

ip=0xffff0

,正好位於

rom裡,那裡固化了開機時需要執行的指令。這個

rom就是

bios-rom,

他執行開機自檢

,然後查詢主引導扇區並主載入主引導扇區的

512位元組內容到記憶體位址

0x7c00-0x7dff。

每個扇區以扇區頭開始,然後是512個位元組的資料區。扇區頭包含了每個扇區自己的資訊,主要有本扇區的磁軌號、磁頭號和扇區號,用來供硬碟定位機構使用。現代的硬碟還會在扇區頭部包括乙個指示扇區是否健康的標誌,以及用來替換該扇區的扇區位址。用於替換扇區的,是一些保留和隱藏的磁軌。 

6. 學習了微控制器後對cpu

的運作更容易理解,因為微控制器就是乙個簡單的

cpu。

in,out外部輸入輸出指令。

pushfd :

push flag double-world...

popfd : pop  flag double-world...

2013-12-24

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

30天自製作業系統 第0天

hello os tab 4 標準fat12格式軟盤專用 db 0xeb 0x4e 0x90 db helloipl 啟動區的名稱 可為任意字串 dw 512 每個扇區的大小 必須為512位元組 db 1 簇的大小 必須為1個扇區 dw 1 fat的起始位置 一般從第乙個扇區開始 db 2 fat的...