私はいくつかのスニペットを見ていましたが、これらの行 (.com
ファイルの一部) を見ました:
DB 66;
CALL D59C:C2C0;
INT 69
MOV SI, C8C6
何をしINT 69
ますか?
オンラインでも何も見つかりませんでした。ここでも何も見つかりませんでした。
AH
奇妙なことに、AL
の前後に値を移動することはありませんINT 69
。
私はいくつかのスニペットを見ていましたが、これらの行 (.com
ファイルの一部) を見ました:
DB 66;
CALL D59C:C2C0;
INT 69
MOV SI, C8C6
何をしINT 69
ますか?
オンラインでも何も見つかりませんでした。ここでも何も見つかりませんでした。
AH
奇妙なことに、AL
の前後に値を移動することはありませんINT 69
。
ここですべてが 16 進数であると仮定すると、これが 16 ビット コードである場合、次のようになります。
66 DB 66
9A C0 C2 9C D5 CALL D59C:C2C0
CD 69 INT 69
BE C6 C8 MOV SI, C8C6
しかし0x66
、オペランド サイズ オーバーライド プレフィックス (おそらく、ここでは適切に逆アセンブルされていないだけ) であり、(16 ビット コードでは) 次の命令が 16 ビット オペランドではなく 32 ビット オペランドを取得します。したがって、このコードは実際には次のとおりです。
66 9A C0 C2 9C D5 CD 69 CALL 69CD:D59CC2C0
BE C6 C8 MOV SI, C8C6
16 ビット コードからかなりランダムに見える 16:32 ビットの絶対アドレスへの far 呼び出しは、私にはあまりありそうに見えません。
したがって、これは実際にはコードではなくデータであると思います...
与えられたコードが 16 ビット モードで実行され、連続する命令をエンコードするものであると仮定すると、私はそれについて別の解釈をします。
DB 66
ですoperand size prefix
。16 ビット モードでは、命令オペランドを 16 ビットではなく 32 ビットとして解釈するように CPU に指示します。したがって、命令は の代わりにCALL
として解釈されます。アドレスの「欠落」した 2 バイトは「命令」です。CALL 16-bit selector:32-bit offset
CALL 16-bit selector:16-bit offset
INT 69
効果的なコードは次のとおりです。
CALL 69CD:D59CC2C0
MOV SI, C8C6
しかし、そのようなアドレス (オフセット > 0FFFFh) での呼び出しは例外を引き起こすため、それは私にはあまり意味がありません。それはどのようなコードですか?
x86 割り込みを検索すると、おそらく Ralf Brown によって書かれたこのリストが得られました。それが私が信じているものである場合、これは一世代前からの割り込みの決定的なリストです. 思い出がよみがえります。