こんにちは、DTOS!(上)

マスターブートプログラムのソフトウェアまたはファームウェア?それがソフトウェアであれば、誰によって開発されましたか?どのように開発するには?
マスターブートプログラムは、ソフトウェアです。それは内部のハードウェアを燃やしています前に、それはハードウェアの中ではなく、工場で治療されていないため。
だから、ソフトウェアでなければなりません。それはそれを行う開発者であるソフトウェアですので、?
マスターブートプログラムは、オペレーティング・システム・コードの一部に正規化されているので、今のところは、オペレーティングシステムのプログラマーの開発は、マスターブートプログラムを開発するための責任を負わなければなりません。
それは、これが何を意味するのか、私たちは、マスターブートプログラムを開発する方法を検討する必要があることを意味します。

マスターブートプログラム
-いくつかの有効なコードのためのマスターブートレコード(MBR)に保存されている
ハードウェアの部分は、オペレーティングシステムのコードの一部を硬化されていません-
-ブリッジは、アセンブラで記述されたオペレーティング・システム・カーネル、起動
コードの量を-これは、(0x55AAを含む)512バイトを超えることはできません

マスターブートプログラムの開発:

 

 

あなたがCまたはC ++言語を使用してアプリケーションを開発する場合は、その入り口は間違いなくメインです。主な機能が実行を開始する、次のステップは、オペレーティング・システムを呼び出すことです
、それは、関数の全体としてのアプリケーションを完成、機能が提供する機能を。
最重要指名手配二つの場所:入場メイン、パフォーマンスの機能のうち、オペレーティング・システム。
左のこの写真のコントラストを見ては、マスターブートプログラムの概略図を開発することです。0x7c00エントリは、物理アドレス、マスターブートプログラムは、このアドレスから開始され
、実行。エントランスは知っている、あなたは答えはBIOS割り込みで、何の既製の機能を使用することができますがありません知っている必要があります。BIOSのプライマリブートプログラムの開発にある使用される
割り込みは、BIOSを使用して、ベクタテーブルの割り込みサービスルーチンの機能を利用するために、割り込みを使用することができ、そこで作成されたベクタテーブルを中断します。
二つの最も重要な場所:入り口0x7c00、BIOS割り込み
2つのマップ、非常によく似た程度のコントラストを。

コースの実験
-マスターブートプログラム(アセンブリ言語)を書くために
- x86アーキテクチャは、独立してホスト(オペレーティング・システム)の実行することができます
-画面の後に実行印刷を「こんにちは、DTOSを」

アイデアの実現
1.鍵レジスタの値が0(MOV斧、0)に設定されている
データ(DB「こんにちは、DTOS!」 )2. 印刷定義が必要です
(int型の0x10)3あらかじめ定義された文字印刷データを
編集のヒント市
--mov:割り当て、左オペランドに割り当てオペランド
0がレジスタAXに割り当てられているのMOV斧、
--int:割込みトリガ
.INTが0x10、0x10の割込みをトリガし、画面上の指示
--hlt。実行を停止し、CPUポーズ状態、何のアクションは
プログラムがスリープ状態に行かせるん.hlt
、アプリケーション開発を行う場合、あなたがしたい場合は、文字列の上に印刷し、他のことをする必要はありません。アプリケーションを実行するために、オペレーティング・システムに基づいており、
オペレーティングシステムは、私たちは多くのことを行うのに役立ちますが、今のマスターブートプログラムではなく、オペレーティングシステムを書きたいので、問題は少なからず考慮されます。

ヒント2つのコンパイル
-アドレスでコンパイル・アクセス・モード:アドレスセグメント:セグメント内のオフセットアドレス
のMOVのバイト[0xb800:0×01]、0x07の; 0xb800:0x01の- > 0x01の0xB8000 +
-タグ
後続識別するために使用されます。命令のアドレス(タグC言語と同等であってもよい)
- $ VS $$
現在の命令アドレス$を識別し、$$セグメントが現在のアセンブリの開始アドレスを示します。

中断调用VS函数调用
在屏幕上打印一个字符

 

おすすめ

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