8086 сборки правая кнопка мыши прерывает - PullRequest
1 голос
/ 10 марта 2010

Я работаю над проектом в сборке 8086 на машине Windows, и мне нужно знать, какая кнопка мыши была нажата. Каковы прерывания для этого? или как мне узнать это?

Спасибо

Ответы [ 2 ]

5 голосов
/ 10 марта 2010

Если вы создаете DOS-программу, которая работает под Windows, вы можете использовать программное прерывание 0x33, функцию 3, которая возвращает статус кнопки в регистре BL:

    mov   ax,0x3
    int   0x33
    test  bl,1
    jnz   left_button_pressed
    test  bl,2
    jnz   right_button_pressed

Подробнее здесь http://www.ctyme.com/intr/rb-5959.htm

Если вы создаете собственное приложение для Windows, вы можете проверить нажатия кнопок, проверив стандартные сообщения кнопок мыши (WM_LBUTTONDOWN / UP, WM_RBUTTONDOWN / UP, WM_MBUTTONDOWN / UP), переданные в зарегистрированный WndProc для созданного главного окна. по вашей программе.

Объявление функции для WndProc: «LRESULT CALLBACK WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);», тип сообщения передается в uMsg, поэтому вы должны проверить DWORD по адресу [esp + 12 ] и сравните его с идентификатором сообщения, которое вы хотите обработать.

1 голос
/ 10 марта 2010

На машине "DOS" посмотрите Программное прерывание 0x33 .
Команда AH = 0x03 возвращает кнопку мыши, нажатую в регистре CX (вместе с координатами мыши и другой информацией в других регистрах).

Если доступно, конечно, гораздо проще использовать Windows API для этой цели, как указано в ответе Мати.

...