作業系統引導扇區

2021-10-23 06:31:23 字數 2103 閱讀 7621

作業系統全部筆記目錄見:

作業系統筆記整理

load_setup: //載入setup模組

mov dx,#0x0000 mov cx,#0x0002 mov bx,#0x0200

mov ax,#0x0200+setuplen int 0x13 //bios中斷

jnc ok_load_setup

mov dx,#0x0000

mov ax,#0x0000 //復位

int 0x13

j load_setup //重讀

0x13是bios讀磁碟扇區的中斷: ah=0x02-讀磁碟,al= 扇區數量(setuplen=4), ch=柱面號,cl=開始扇區(即cx的低八位,這裡是2,因為第乙個扇區是引導扇區,要從第2個扇區開始讀), dh=磁頭號,dl=驅動器號, es:bx=記憶體位址

讀磁碟讀到**?肯定是bootset的上面,bootset從90000開始,偏移512位元組,為90200。es:bx從上面的程式確實可以看出,是90200。

讀完四個扇區還需要讀進去作業系統。

ok_load_setup: //載入setup模組

mov dl,#0x00 mov ax,#0x0800 //ah=8獲得磁碟引數

int 0x13 mov ch,#0x00 mov sectors,cx

mov ah,#0x03 xor bh,bh int 0x10 //讀游標

mov cx,#24 mov bx,#0x0007

mov bp,#msg1 mov ax,#1301 int 0x10 //顯示字元

mov ax,#sysseg //sysseg=0x1000

mov es,ax

call read_it //讀入system模組

jmpi 0,setupseg

int 0x10  是顯示字元,bp告訴你要顯示的東西在記憶體中什麼區域,例如:

bootsect.s中的資料 //在檔案末尾

sectors: .word 0 //磁軌扇區數

msg1:.byte 13,10

.ascii 「loading system...」

.byte 13,10,13,10

肯定是要把字元列印到游標位置,所以前面有乙個讀游標位置的操作。

如果我們想替換一下字串,還需要改一些配置,例如如果mov cx,#24這裡的24表示要輸出的字元個數,則把前面的mov cx,#24修改一下。

boot的工作:讀setup, 讀system。注意,為什麼讀入 要跨越磁軌! system模組還需要定義乙個函式?

因為system模組可能很大,讀入要跨越磁軌。

read_it: mov ax,es cmp ax,#endseg jb ok1_read

retok1_read:

mov ax,sectors

sub ax,sread //sread是當前磁軌已讀扇區數,ax未讀扇區數

call read_track //讀磁軌...

endseg=sysseg+syssize syssize=0x8000 //該變數可根據 image大小設定(編譯作業系統時)

引導扇區的末尾 //bios用以識別引導扇區:

.org 510

.word 0xaa55 //扇區的最後兩個位元組

.org 510 指定乙個位址,後面的程式或資料從這個位址值開始分配,即以後語句從位址510(0x1fe)開始存放

.word 0xaa55 表示有效引導扇區標誌,供bios載入引導扇區使用

可以轉入setup執行了:

jmpi 0, setupseg

自己動手寫作業系統 編寫引導扇區

計算機電源開啟時,會先進行加點自檢 post 然後尋找啟動盤,如果選擇是從軟盤驅動,計算機就會檢查軟盤的0面0磁軌1扇區,如果它以0xaa55結束,則bios則認為它是乙個引導扇區。這一段 總共為512位元組。一旦bios發現來引導扇區,就會將這512位元組的內容裝載到記憶體中0000 7c00去,...

作業系統引導

1.系統開機或者重啟。2.bios 加電自檢 power on self test post bios執行記憶體位址為ffff 0000h 處的跳轉指令,跳轉到固化在rom中的自檢程式處,對系統硬體 包括記憶體 進行檢查。3.當bios檢查到硬體正常並與cmos 中的設定相符後,按照cmos 中對啟...

作業系統引導

作業系統是如何引導的呢?當系統加電自檢通過以後,硬碟被復位,bios 將根據使用者指定的啟動順序從軟盤 硬碟或光碟機進行啟動。以從硬碟啟動為例,系統 bios 將主引導記錄讀入記憶體。然後,將控制權交給主引導程式,然後檢查分割槽表的狀態,尋找活動的分割槽。最後,由主引導程式將控制權交給活動分割槽的引...