Windows マシンで 8086 アセンブリのプロジェクトに取り組んでおり、どのマウス ボタンがクリックされたかを知る必要があります。これに対する割り込みは何ですか?または、どうすればこれを見つけることができますか?
ありがとう
Windows で実行する DOS プログラムを作成している場合は、ソフトウェア割り込み 0x33、関数 3 を使用できます。これは、BL レジスタのボタン ステータスを返します。
斧を動かす,0x3 整数 0x33 テスト bl,1 jnz left_button_pressed テスト bl,2 jnz right_button_pressed
詳細はこちらhttp://www.ctyme.com/intr/rb-5959.htm
ネイティブの Windows アプリケーションを作成している場合は、プログラムによって作成されたメイン ウィンドウの登録済み WndProc に渡される標準のマウス ボタン メッセージ (WM_LBUTTONDOWN/UP、WM_RBUTTONDOWN/UP、WM_MBUTTONDOWN/UP) をチェックすることで、ボタンの押下をテストできます。 .
WndProc の関数宣言は「LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);」です。メッセージ タイプは uMsg で渡されるため、[esp+12] で DWORD を確認して比較します。処理するメッセージ ID を付けます。
「DOS」マシンでは、Software Interrupt 0x33を調べます。
コマンド AH = 0x03 は、レジスタ CX で押されたマウス ボタンを返します (他のレジスタのマウス座標やその他の情報と共に)。
もちろん、利用可能な場合は、matja の回答に示されているように、この目的のために Windows API を使用する方がはるかに簡単です。