私はAssembly Worldの初心者です16ビットx86リアルモードでBIOSからUSBポートにアクセスするにはどうすればよいですか?
シリアル、パラレル、VGA、キーボードなどのハードウェアデバイスと通信するためのアセンブリコードをいくつか記述しようとしています。
私は、自分のアセンブリコードをロードするために私が個人的に書いたブーストラップから自分のコードを起動して、x86 Intelプロセッサのリアルモードにいる間にこれをやっています。
私は読書のチュートリアルから集まったので、私にとって最も簡単な方法はBIOS INTsサービスルーチン(ISR)を使用することでしたが、その一方で最も長い方法はハードウェアのさまざまなレジスタにアクセスし、例えば、シリアルポートのステータスレジスタとコントロールレジスタのように。
Q1:私はこれについて正しいですか?
BIOS INTを使ってVGAとシリアルハードウェアと通信できましたが、USBコントローラのBIOS割り込みが見つかりませんでした。
Q2:これでUSBポートと通信できるようにすることができますか?その他の残りのポートは一般的にすることができますか?
Q3:
なぜアセンブリでコードしますか?オペレーティングシステム(つまり、Linux用のプログラム)の上にコーディングしないでください。あなたの目標は何ですか(アセンブリの学習、オペレーティングシステムの作成)?今日のコンパイラは、ほとんどの人間が書くことができるよりも優れたアセンブリコードを生成します。 –
これは、人間が恐竜と戦っているのを見る映画のようなものです。時代遅れの時代、USBは32ビットのオペレーティングシステムが普及してからずっと長く発明されました。 16ビットのサポートはありませんでしたが、ポイントはありませんでした。 –
OPの質問は深刻です。私は、「何らかのソフトウェアがインストールされていれば、何とかやってみてはどうですか?アセンブリー・プログラマーとしては、ソフトウェアがOSやBIOSであっても、インストールされているソフトウェアはほとんどありません。 BIOSモジュールを作成しているとします。 – xmllmx