由於操作系統本身時存放在硬盤中,並非能在bios引導後直接在內存中運行,所以才有了BIOS引導操作系統的這個步驟。

在主板上電之後,BIOS需要去找到引導程序的位置,這個位置固定在(0磁頭0柱面1扇區)的位置,這個扇區也被稱為主引導扇區(MBR)。一個扇區大小固定為512字節。也就是boot_loader的大小也必須在512字節以內。

有趣的是主引導扇區有一個約定,那就是最後兩個字節必須是0xAA55, 也就是實際留給bootloader的大小隻有510字節,不過這也非常夠用了。

上文一直有說到一個詞叫做BootLoader,這個其實按照字面意思理解就可以,就是一個啟動操作系統的程序。BootLoader主要就寫一些控制硬盤的代碼,把硬盤裡的一些數據給放在內存裡。不過內存也不是什麼位置都可以放的,有些內存是給顯卡用,有些是硬件保留的。留給開發者使用的內存當然也是定死的辣。默認執行完引導扇區的代碼後,就會去指向0x7c00該內存地址的指令。所以操作系統都是寫入在0x7c00這個內存地址裡的。

後面的東西以後在說,不過知道這些之後,恭喜你,至少你已經知道了怎麼在計算機上編寫一個裸機程序了,配合中斷表寫個helloworld完全不是問題。