2012-03-01 6 views
1

Visual C++でインラインアセンブリーを使用しています。私のプログラムでint 21hを使用できるようになりました。私が21時間を間違って呼んでいるとか、何とかブロックされていると信じさせる他の割り込み処理(int 3)。私はint 21hを使用すると、ランタイムエラーが発生します。私がそれをコメントアウトすれば、レジスタをうまく動かすことができます。インラインアセンブリーでint 21hを使用する

は、これまでのところ、私は一緒にこれを得ている:

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    __asm { 
     mov ah, 1h 
     int 21h 

     mov dl, al 
     mov ah, 2h 
     int 21h 
    } 
} 
+0

恐らくそれはセグメンテーションです。私が知る限り、32ビットのアプリケーションでintを使うことはできません。 – BlackBear

+0

前述のように、他の割り込みも機能します。 int 3はエラーなしでブレークポイントを正常に作成します。私が問題を抱えているのはint 21hだけです。 – ozdrgnaDiies

+0

これはどのようなプログラムですか? Int21hはDOS割り込みです。 –

答えて

6

あなたはDOSがWindowsプログラムで割り込みを使用することはできません。彼らは異なるプラットフォームです

int 1int 3のようなハードウェア割り込みを使用することができます。

+0

私はこれを尋ねて以来、これまで読んできたことがあります。 int 3が動作する理由を説明してくれてありがとうございます。 – ozdrgnaDiies