硬碟主引導扇區的引導程式只佔139個位元組(不同版本的fdisk、不同的分割槽程式寫入的主引導記錄會不相同,但其基本功能一樣),經過反彙編後的引導程式的彙編**如下:
1000:0600fa 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 主引導資訊 佔...