こんにちは、DTOS!(下)

どのように書かれたマスターブートプログラムを確認するには?
溶液デザイン:
バイナリマシンコード(NASM)にコンパイルされたアセンブラソースコード
、仮想ディスク(bximage)作成する
仮想ディスク(DD)の開始位置にバイナリコードを
仮想ディスクのブートディスクが実行される仮想マシンで(VMware社)

コンパイラはそれを強制するためのハードウェアを取得するために上記の方法をバイナリマシンコードに、バイナリコードされている場合でも?
オペレーティングシステムが存在しないので、例えばCD-ROMのために、実際の記憶媒体を使用する必要があります。私たちは、ディスクへのバイナリコードをコンパイルし、コンピュータをCDから起動するようにしましょうしまいます。しかし、これはあまりにも面倒です。
その後、仮想マシンが便利になることができ、簡単な方法を使用する必要があります。それは仮想マシンがあるので、単純に、少しを完了した仮想ディスクを作成します。仮想マシンの仮想ディスクは、バイナリコードを読み取るようにしましょうこの場合、それは便利です。
仮想ディスクにどのようにバイナリコードをコンパイル取得するために書かれていますか?
ddコマンドを完了するために使用することができます

実験原材料
のnasm .nasm boot.asm -o次にboot.bin bximage仮想フロッピーを作成し、仮想フロッピーディスクが作成されて表し-fd、仮想フロッピーのサイズは1.44Mである、-q我々は1オフを作成するために、対話する必要がないことを意味それをは* .img。 -size = -q -fd a.img .bximage 1.44仮想フロッピーに書き込ま-ddバイナリマシンコード DD = IF = a.img次にboot.bin BS = 512 1 CONV = NOTRUNCのCOUNT =いる IF入力であり、入力されます我々は、バイナリマシンコードをコンパイルします; の出力、最大仮想フロッピーa.imgへの出力を表し、BSは、各ユニットの大きさを表し、私たちが書くとき、この場所で、私たちは必要なだけで、その上に512のバイトを書き込みます。;このように、バイト512で指定されている= 1をカウントし、CONV = NOTRUNCが連続した書き込みで表現されている任意の間隔がありません上記のコマンドは、実験に使用されています。
  

 

 





要約:

マスターブートプログラムコード量が512バイト超えることができない
マスターブートプログラムを使用する必要があり、アセンブリ言語の開発
マスターブートプログラムは、BIOSによって使用され得るハードウェア機能割り込み
マスタブートプログラム上で実行されているリアルモードをアドレスは、実際の物理アドレスです

おすすめ

転載: www.cnblogs.com/-glb/p/11701274.html