硬碟主引導扇區引導程式

2021-09-08 10:53:42 字數 4730 閱讀 6648

硬碟主引導扇區的引導程式只佔139個位元組(不同版本的fdisk、不同的分割槽程式寫入的主引導記錄會不相同,但其基本功能一樣),經過反彙編後的引導程式的彙編**如下:

1000:0600

fa cli ;自舉,將0000:7c00開始的硬碟主引導記錄本身轉移到0000:0600處,空出0000:7c00開始的空間給將讀入活動分割槽的作業系統的引導扇區

1000:0601

33c0 xor ax,ax

1000:0603

8ed0 mov ss,ax

1000:0605

bc007c mov sp,7c00

1000:0608

8bf4 mov si,sp

1000:060a 50

push ax

1000:060b 07

pop es

1000:060c 50

push ax

1000

:060d 1f pop ds

1000

:060e fb sti

1000

:060f fc cld

1000:0610 bf0006 mov di,0600

1000:0613 b90001 mov cx,0100

1000:0616

f2 repn2

1000:0617

a5 movsw

1000:0618 ea1d060000 jmp 0000

:061d

1000

:061d bebe07 mov si,07be ;si指向第一硬碟分割槽表

1000:0620 b304 mov bl,04

;硬碟分割槽表個數送往bl處

1000:0622 803c80 cmp byte ptr[si],80

;si所指分割槽是活動分割槽

1000:0625 740e jz 0635

;是,轉0635

1000:0627 803c00 cmp byte ptr[si],00

;否,分割槽標誌位元組是00

1000:062a 751c jnz 0648

;否,轉顯示錯誤資訊

1000:062c 83c610 add si,+10

;是,si加16以檢查下乙個分割槽

1000

:062f fecb dec bl ;計數器減一

1000:0631 75ef jnz 0622

;計數器不為0,轉0622

1000:0633 cd18 int 18

;沒有活動分割槽就啟動rom basic

1000:0635

8b14 mov dx,[si]

1000:0637 8b4c02 mov cx,[si+02

] ;若找到了活動分割槽,則將該分割槽的起始磁頭、柱面、扇區號送dx和cx

1000

:063a 8bee mov bp,si ;將活動分割槽起始位置儲存到bp

1000:063c 83c610 add si,+10

;si指向下一分割槽

1000

:063f pecb dec bl ;計數器減一

1000:0641

741a jz 065d ;分割槽檢測完畢,轉讀系統引導區

1000:0643 803c00 cmp byte ptr[si],00

;否則,檢查分割槽標誌位元組00

1000:0646

74f4 jz 063c ;是,轉而檢測下一分割槽

1000:0648

be8b06 mov si,068b ;否,顯示錯誤資訊

1000

:064b ac lodsb

1000:064c 3c00 cmp al,00

;錯誤資訊顯示完畢

1000

:064e 740b jz 065b ;是,迴圈

1000:0650

56push si ;否,繼續顯示錯誤資訊

1000:0651 bb0700 mov bx,0007

1000:0654

b40e mov ah,0e ;顯示乙個字元

1000:0656 cd10 int 10

1000:0658

5e pop si

1000:0659

ebf0 jmp 064b

1000

:065b ebfe jmp 065b ;迴圈

1000:065d bf0500 mov di,0005

;5送計數器di,最多讀盤五次

1000:0660

bb007c mov bx,7c00 ;將活動分割槽中的系統引導扇區讀入0000:7c00處

1000:0663 b80102 mov ax,0201

1000:0666

57push di

1000:0667 cd13 int 13

1000:0669

5f pop di

1000:066a 730c jnb 0678

;讀盤成功轉0678

1000

:066c 33c0 xor ax,ax ;否則,磁碟復位

1000:066e cd13 int 13

1000:0670

4f dec di ;計數器減一

1000:0671 75ed jnz 0660

;計數器不為0,轉重新讀盤

1000:0673 bea306 mov si,06a3 ;計數器為0,轉顯示資訊"

error loading

operating system

"1000:0676

ebd3 jmp 064b

1000:0678 bec206 mov si,06c2 ;si指向"

missing operating system

",di指向自舉標誌

1000

:067b bffe7d mov di,7dfe

1000

:067e 813d55aa cmp word ptr[di],aa55 ;自舉標誌是aa55

1000:0682

75c7 jnz 064b ;否,顯示錯誤資訊

1000:0684

8bf5 mov si,bp ;是,恢復活動分割槽指標到si

1000:0686 ea007c0000 jmp 0000:7c00 ;轉去執行活動分割槽的系統引導程式

從上面的匯程式設計序可以看出,主引導程式在尋找活動分割槽標記"80"的同時,也判斷非活動分割槽的標記是否為"00",如果兩者都不是,系統就會報錯。當所有分割槽檢查完畢以後,就將系統控制權交給活動分割槽的引導記錄dbr,通過一步一步地程式調入和交接,完成整個系統的引導過程。當然,也有一些磁碟的主引導程式首先檢查是否有標記"55aa",然後才查詢分割槽表。

05 主引導扇區

計算機加電或者復位後將讀取0磁軌 0磁頭 1扇區共512位元組到0x0000 0x7c00 處,然後判斷它是否有效。乙個有效的主引導扇區最後2位元組是0x55,0xaa。文字模式和圖形模式是顯示卡的2中基本工作模式。訪問視訊記憶體需要和顯示卡這個外圍裝置打交道,外圍裝置相對cpu都是慢速 低效率的。...

主引導扇區的理解

什麼是主引導扇區?master boot record 它是硬碟上的第乙個扇區,由硬碟廠商就預留了。乙個扇區的大小通常是512個位元組。主引導扇區,不依賴於具體的作業系統,也就是說主引導扇區可以啟動任何一種作業系統。它的作用是什麼?裡面儲存了什麼資訊?裡面儲存的是硬碟的基本資訊,包括硬碟分成幾個區,...

硬碟和軟盤的引導扇區結構

一 硬碟mbr mbr master boot record,或main boot record 中文意為主引導區記錄,位於磁碟0磁軌的第乙個扇區,大小正好為512位元組,所以又稱為主引導扇區。mbr構成如下圖所示 從圖中看出,mbr被分為三個部分 1 第一部分為bootloader 主引導資訊 佔...