0

ゼロ除算例外を処理するプログラムを作成するタスクがあります。それについての情報を見つけるのに苦労しています。私が理解しているように、割り込みベクタ テーブルの 0 番目のエントリを変更する必要がありますが、どうすればよいですか? LIDT 命令があるようですが、テーブル全体を記述する必要はありませんか?

注意してください、私は16ビットモードで作業します。

4

1 に答える 1

3

16ビットモードで「リアルモード」を意味すると仮定すると、割り込みベクトルテーブルは単純にリニアアドレス0から始まる場所に配置されます。ウィキペディアのエントリを参照してください。したがって、古い 4 バイトの far ポインターを取得して、[0000:0000]後で復元 (またはチェーン) し、独自のハンドラーでエントリを上書きできるようにするだけです。

DOS を使用INT 21h/AH=25hしている場合は、割り込みベクトルを設定しINT 21h/AH=35h、古いエントリを取得するために使用できます。

于 2011-10-18T07:43:04.070 に答える