BIOS (Basic Input Output System)

久々のエントリ。
前回、起動後に画面に文字列を表示できたわけですが、
今回はその内容について。


ソフトウェアで文字を画面に表示するためにはフォントも必要ですし、
ビデオの操作をおこなう処理も実装する必要があるわけですが、
たかだか 500 Bytes 程度のプログラムでそれができているのはなぜか。


そこで出てくるのが BIOS (Basic Input Output System) です。


BIOS は OS 開発のような低いレイヤでよく使うプログラムを
PC メーカがあらかじめ ROM 上に焼いてくれているものです。


BIOS を利用するには INT 命令を利用します。
INT のうしろに数字を指定することでどの関数を呼び出すかを指定できます。


たとえば文字を表示するためには INT 0x10 を利用します。
INT 0x10 を実行するには、各レジスタに以下のような値を
あらかじめ設定しておく必要があります。

http://community.osdev.info/index.php?(AT)BIOS

一文字表示

* AH = 0x0e;
* AL = キャラクターコード;
* BH = 0;
* BL = カラーコード;
* 戻り値:なし
* 註:ビープ、バックスペース、CR、LFは制御コードとして認識される

RubyPerl などでライブラリを使って楽できるのと同様に、
OS 開発では BIOS を使って楽ができるわけですね。