幾年前學生時代的筆記,不確定正確性


PA: physical address
VA: virture address

按下開機紐,送出signal給主機板叫他開始power supply
在所有裝置都收到正確的power後,主機板送Power OK signal給Bios

當BIOS收到Power OK signal,BIOS開始執行POST(Power On Self Test):
檢查是否所有裝置都有正確power與是否有memory corrupted

執行完POST後,BIOS開始尋找512 bytes的Bootsector(ex:開機碟)

BIOS藉由檢查Bootsector的第511 byte為0x55,512 byte為0xAA來確定該Bootsector是bootable

確定後bios會將bootsector load進memory的0x7c00(PA) == 0x0000:0x7c00(cs:ip VA)

所以bootsector程式通常會有兩段程式

1
2
3
4
5
6
start:
jmpi go, 0x07c0 !設定CS:IP=0x07c0:0x0005(VA)
go:
load OS
.org 510 !將511byte設為0x55, 512byte設為0xAA
.word 0xAA55

需注意的是0x07c0:0x0000(VA)與0x0000:0x7c00(VA)是指相同的0x7c00(PA)
因為在real mode下,0X007C0<<4 + 0X00000 == 0X00000<<4 + 0X07C00
(real mode下VA與PA轉換方式CS<<4+IP == PA)