2012-03-03 3 views
4

コンピュータアーキテクチャプロジェクトでは、簡単なことをするためのブート可能なコードを書いておきたい(あまりにも複雑でないなら、私は蛇のゲームを考えた)。私は、Cプログラムにコントロールを渡すための小さなブートローダを書くのはあまり難しくありませんが、正確な情報は見つかりませんでした。ブートローダを書くための高度なアセンブリガイド

保護モードを正しく説明しているx86アセンブリの高度なガイドを探しています(切り替えが必要かどうかわかりませんが、最初の本能は私には分かりません)、コンピュータの起動方法、キーボードからの読み取りとスクリーンへの印刷。

私はアセンブリで書くことができ、小さなプログラムを書くためにgccを渡すことができます。ちょうどブートとインターフェイスの情報が必要です。書籍を含むあらゆる情報が評価されます。

+1

私の知識によれば、最高のOSDevと関連情報のウェブサイトはhttp://wiki.osdev.orgです。そして、[このリソース](http://www.brokenthorn.com/Resources/OSDev8.html)は、保護モードについても説明しています。 – sransara

答えて

3

私はthisウェブサイトをお勧めします。あなたが知る必要があるすべてのものがあります(特に「紹介」のカテゴリにあります)。

保護モードに切り替えていない限り、画面に印刷したり、キーボードから読み取ったりするために、BIOS割り込みを使用することができます。たとえば、interrupt 0x10, function 0x0e。別のプログラムを使用したい場合は、ブートローダとは別に、手動でメモリにロードする必要があります。ハードディスク(またはハードディスクをエミュレートするpendrive)から読み込むためのBIOS機能がありますが、ファイルシステムを自分で処理する必要があります。おそらく、あなたの場合、最良の解決策は何も使用せず、固定アドレスに書かれた追加のプログラムを持っていて、ブートローダがそのハードコーディングされた位置からロードするようにします。

また、gccでコンパイルしたコードをリアルモードで実行する場合は、.code16gccディレクティブを使用する必要があります。ガスジェネレーターコードを32ビットマシン上で16ビットリアルモードで実行できるようにします。

2

Hereはしばらく前に出てきたリンクですので、面白かったので、お気に入りに追加しました。おそらくそれが役に立ちます。

関連する問題