Assembler/なぜx86ではMBRが"0x7C00"にロードされるのか?(完全版)
DRANK
English Version: " Why BIOS loads MBR into 0x7C00 in x86 ? "Assembler/なぜx86ではMBRが"0x7C00"にロードされるのか?で調査が不十分だった点を補った完全版です。対象読者x86アーキテクチャとアセンブラの基礎知識があり、MBRからのOSのロードに興味がある人("割り込みベクタ"や"INT xxx"と言われても「???」とならない人)。自分がx86アーキテクチャの、特にOSのブートする仕組みやプロテクトモードを学習した時、MBR(Master Boot Record)で最初の一歩を踏み出した。MBRはフロッピーディスク(FDD)やHDDの最初の1セクタ:512バイトブロックである。OSをブートする機械語のプログラムと、ディスクの論理パーティション情報が格納されている。Interlの80x86系列のCPUを採用しているPCは、電源投入後、まずBIOSのPOST(Power On Self Test)が行われ、周辺機器が認識された後、MBRを読み込んでOSのブート処理を開始する。BIOSはROMチップに書き込まれている為通常は変更出来ない(EEPROMなど、書き換え可能なROMを使っており、BIOSアップデートなどの特殊なソフトウェアを使うことで書き換えることができる)。一方のMBRはFDD/HDDの最初の1セクタということで、プログラマ…
1 comments