最初のセクタを読み込む電源を入れてからBIOSはハード周辺をチェックして、フロッピーやCD、HDDなどの最初のセクタを読み込むことがわかりましたではどうやって読み込んでいるのでしょうか?先ほどの説明に出てきましたように割り込みベクタからフロッピーの読込み処理を呼び出して最初のセクタを読込ますフロッピーの読込処理フロッピーの読込処理を呼び出すためにはアセンブラ言語のINT命令を使いますINT命令をプログラムで実行させると割り込みベクタから割り込み処理(フロッピーの読込処理)のアドレスを読んでそこに勝手にジャンプして割り込み処理(フロッピーの読込処理)してくれます割り込みベクタの何番目にフロッピーの読込処理のアドレスが入っているのかはあらかじめ決まっていて、割り込みベクタの25番目(16進数では0x19と表します)にあります割り込みベクタの25番目(0x19)上で”フロッピーの読込処理”と書いておりますが、何やらこの割り込み処理はいろいろしてくれます。起動時にBIOSから呼び出されてCDやらHDDなどの読込もしてくれるようです(細かいことはあほなのでわかっておりません。)この割り込み処理では”ブートローダその1”で説明しましたヘッド、シリンダ(トラック)を指定して起動ディスク(フロッピーやCDやHDD)の最初のセクタ(ヘッドの0番目、シリンダの0番目、セクタの1番目)である512バイト(フロッピーの場合)を読み込みます。わかりませんが、ヘッドとシリンダは0番目から始まり、セクタは1番目から始まります読み込んだ512バイトの最後の511バイト目と512バイト目がそれぞれ0x55と0xAAであればメモリの0x7C00番地に最初のセクタがコピーされます511バイト目と512バイト目が他の値の場合は次のディスクデバイスの最初のセクタを読みに行きます0x7C00にブートローダがコピーされると0x7C00から処理を開始しますここまではBIOSが勝手にやってくますこれから作るのはこの0x7C00に読み込まれる512バイトのプログラムになりますさて、いよいよ次からブートローダを作ってみますが、その前に使用するアセンブラについて少しアセンブラ言語について環境準備の段階でアセンブラ言語としてGASとNASMをインストールしましたが、NASMのプログラムのほうがちょっとばかし簡単に見えるので(もちろん簡単ではありませんが。)ここではアセンブラ言語としてNASMを使いたいとおもいますしかし、本当はGASのほうが後々役に立つと思いますGCCでC言語をやっているとアセンブラ言語でしかできないところもあり、そこはGCCのアセンブラであるGASのほうが断然親和性が高いからですですので、我こそはという方はGASでやってみてはいかがでしょうか(C言語でソースを作る段階ではGASに移行します。