BIOS割り込みルーチン

BIOS割込みルーチンは、コンピュータの基本的な入出力制御を行うBIOS(Basic Input/Output System|Basic Input_Output System)プログラムの一部として組み込まれた、特定の処理を実行するためのソフトウェアです。これは、ハードウェアを直接操作するためのサービスルーチンであり、機械語の割込み命令(INT、TRAP、RSTなど)によって呼び出されます。

主な役割は、コンピュータの起動時にオペレーティングシステム(OS)を初期化し、システムを準備することです。BIOS割込みルーチンは、OSが起動する前の段階で、ハードウェアの基本的な設定やテストを行い、OSがスムーズに動作できるように環境を整えます。これにより、OSはハードウェアの複雑な制御を意識することなく、アプリケーションの実行やユーザーインターフェースの提供に専念できます。

利用方法の例(x86系CPUの場合)

以下に、x86系CPUを搭載したコンピュータにおけるBIOS割込みルーチンの利用例を示します。この例では、ディスクからのデータ読み込みを試みる処理を想定しています。

assembly
READ_ATTEMPT:
PUSH ES ; 必要に応じてレジスタ値を退避
PUSH AX
PUSH BX
PUSH DX
MOV AX,0x07e0 ; パラメータセット(読み込み先アドレス)
MOV ES,AX
MOV AH,2 ; 読み込み機能を示す番号
MOV AL,1 ; 読み込むセクタ数
XOR BX,BX ; ディスクドライブ番号
MOV DL,1 ; ドライブ番号
INT 13H ; プログラムから割り込み発生(呼び出し)
POP DX ; 退避したレジスタ値を復元
POP BX
POP AX
POP ES
JC READ_ERR ; フラグや戻り値を判定・利用(エラーチェック)
READ_OK:
...
READ_ERR:
...


このアセンブリコードでは、`INT 13H`という命令によってBIOS割込みルーチンが呼び出されています。`AH`レジスタに機能番号(ここではディスク読み込み)、その他のレジスタに読み込みに必要なパラメータを設定し、割込みが発生することで、BIOS内のディスク読み込みルーチンが実行されます。実行後、フラグや戻り値を確認して、エラーが発生したかどうかを判断し、後続の処理を行います。

BIOS割込みルーチンの例

BIOS割込みルーチンの割り当てや機能は、コンピュータの機種ごとに異なります。しかし、互換機同士であれば、同じ割り当てや機能が使用されることが一般的です。これは、ソフトウェアの互換性を保つために重要です。例えば、PC/AT互換機では、同じBIOS割込みルーチンを使用することで、異なるメーカーのコンピュータでも同じようにプログラムを実行できます。

割り込み番号と主な機能

  • - `INT 10H`:ビデオ出力関連の機能(文字表示、グラフィック描画など)
  • - `INT 13H`:ディスク入出力関連の機能(ディスク読み込み、書き込みなど)
  • - `INT 16H`:キーボード入力関連の機能(キー押下検出、キーコード取得など)
  • - `INT 17H`:プリンタ出力関連の機能(プリンタへのデータ送信など)

これらの割込みルーチンは、OSが起動する前の段階で、基本的な入出力操作を行うために利用されます。OSが起動した後は、OSが提供するAPI(Application Programming Interface)を利用してハードウェアを制御するのが一般的です。しかし、OSが起動する前のブートローダーなどでは、BIOS割込みルーチンが不可欠な役割を担っています。

関連項目

  • - 割り込み:CPUが特定のイベントに対応するために、実行中の処理を一時中断して別の処理を実行する仕組み。
  • - CPUコンピュータの中央処理装置。命令を実行し、データ処理を行います。
  • - PC/AT:IBMが開発したPC/AT互換機の規格。今日のパソコンの基礎となっています。

外部リンク

  • - Intterupts List - Ralf Brown: 詳細なBIOS割り込みリストが掲載されているサイト。各種割り込みとその機能について詳しく知ることができます。

BIOS割込みルーチンは、コンピュータの動作を支える基礎的なソフトウェアであり、その仕組みを理解することは、コンピュータの動作原理を深く理解する上で非常に重要です。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。