ハードウェア割り込みとソフトウェア割り込みがある.
割り込みを発生させる装置に対して,番号を与えてあり(この番号を「割り込みタイプ」と呼ぶ), 割り込みが発生するとその装置の番号がCPUに伝わる仕組みになっている. 割り込みが発生すると,CPUは割り込みベクタテーブルを参照して,実行すべき手続きのアドレスを得る. 割り込みベクタテーブルは,物理アドレス00000Hから始まる1KB(400Hバイト)のテーブルで, 2バイト×2個ずつがペアになって, 割り込み処理ルーチンのセグメントアドレスとオフセットアドレスをあらわすようになっている. すなわち,割り込みタイプ(番号)がnの場合,4×nのスロットから割り込み処理ルーチンのアドレスを取得し, サブルーチンとして実行する.
int
命令を使うと,ソフトウェア的に任意の割り込みを発生させることができる.
MS-DOSがファンクションコールの呼出し手順としてint
命令を使用しているのは,
実際にファンクションコールがメモリ上に配置される位置は機種や環境によって異なり,
あらかじめ呼び出し先の実アドレスが必要になるcall
命令を使えないから.
ソフトウェア割り込みであれば,どの機種でも一定の呼出し手順で呼び出すことができ,
あとは割り込み処理ルーチンに任せればよいので,互換性が維持できるという仕組みだ.