今天看了前兩章,現將重點記錄如下:
作業系統的啟動,關鍵點時同bios的介面:
這裡有兩個位址很重要,
a, 0x7c00+510=0x7dfe登記標誌位(兩個byte): 0xaa55
b, 0x7c00,作業系統載入的目標位址
系統啟動過程
1 bios清零cpu現場: 傳送reset訊號
2 cpu從0xf ff f0處開始執行指令,該位址在系統的bios位址範圍內
ps: 大部分系統bios廠商在該位址放置的是一條跳轉指令
3 bios啟動**首先要post(power-on self test, 加點自檢)
此時出錯,只有機箱喇叭的發聲警報,因為還未初始化顯示卡。
4 初始化裝置:
顯示卡bios起始位址一般為0xc 00 00處,系統
bios自檢後呼叫該位址的**。
然後呼叫其他裝置的bios程式來進行相關初始化。
5 測試裝置
初始化後,系統bios顯示其自身的資訊,
然後是cpu測試,
然後是記憶體測試,
然後是標準硬體(硬碟,光碟機,串列埠,並口,軟碟機)的檢查與測試
然後是即插即用裝置的檢測,並為該裝置分配中斷,dma通道和i/o埠等資源
6 更新escd
extended system configuration data, 是系統bios用於同作業系統交換硬體配置資訊的一種手段。
這些資料一般存於cmos中。
7 啟動作業系統
將啟動裝置(光碟,軟盤,硬碟)的第乙個山區讀入記憶體,並檢查0x7dfe位址,如果其值為0xaa55,
則跳轉到0x7c00處執行mbr(master boot record),mbr再負責裝載作業系統。
自己動手寫作業系統
virtual pc 5.2 下 dos7.1 中 執行.com檔案相關問題 2009 09 09 12 55 剛才在進入dos後,編譯.asm檔案獲得.com檔案,但系統會出現 emm386 unrecoverable privileged operation error n9.press ent...
自己動手寫作業系統
2 自己動手寫作業系統 3自己動手寫作業系統 如何呼叫bios中斷 在一般的程式語言中,函式的呼叫是一件非常容易的事情。比如在c語言中,如果有乙個名為display的程式,它帶有兩個引數,其中引數 noofchar表示顯示的字元數,引數attr表示顯示字元的屬性。那麼要呼叫它,只需給出程式的名稱即可...
自己動手寫作業系統 二
上一期,我講述了如何在軟盤的啟動扇區寫一些 然後再從軟盤啟動的過程。製作好乙個啟動扇區,在切換到保護模式之前,我們還應該知道如何使用bios中斷。bios中斷是一些由bios提供的 為了使作業系統的建立更容易的低階程式。在本文中,我們將學習處理bios的中斷。為什麼要用bios bios會把啟動扇區...