ぐらめぬ・ぜぷつぇんのはてダ

2008/11/24以降のメインブログはこちらになります。 : http://www.glamenv-septzen.net/

本はてなダイアリにはコメント・トラックバックを受け付ける記事を公開します。

2010-03-16

なぜx86ではMBRが"0x7C00"にロードされるのか?

MBR(Master Boot Record)からのOSロードを解説する書籍やWeb上の記事の殆どでは、「BIOSはPOST後に、MBRを0x7C00にロードしてそこにJMPする」と書いてあります。

しかし、「なぜ0x7C00なのか?0x7C00はどういう意味で、あるいは経緯で、どういう意図で、誰が決定したのか?」については(msakamoto-sf自身が調べた範囲では)誰も語ってくれません。

0x7C00は "32KB - 1024B" という「いかにも何かありげ」な場所に位置します。一方、初期のIBM PC 5150の最小メモリモデルは16KBのRAMしか搭載していません。そのため、「最小メモリモデルではMBRをロード出来ないのでは?」という疑問も出てきます。

MS-DOSのベースとなった 86-DOS(QDOS) の開発者 Tim Paterson, IBM PC 5150 の ROM BIOS を開発した David Bradley 両氏に直接メールで質問した結果、これらの謎が解明されました。

ということで、「なぜx86ではMBRが"0x7C00"にロードされるのか?」、0x7C00の持つ意味、出自、起源について以下のURLにまとめました。もし「0x7C00」について喉に刺さった魚の骨のような感触を抱いているのであれば、ぜひご一読をお奨めします。

no title

English Version:Glamenv Septzen: Why BIOS loads MBR into 0x7C00 in x86 ?

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。

トラックバック - http://d.hatena.ne.jp/msakamoto-sf/20100316/1268714149