Как я могу перейти к метке при нажатии мыши? - PullRequest
0 голосов
/ 22 февраля 2020

Я хочу перейти к определенной метке, когда мышь нажимает указанные c символы. Я нашел это прерывание:

AH = 08
BH = display page
int 10h

Он должен прочитать атрибут и символ в позиции курсора и вернуть его код ASCII в AL, но он не работает. (После прерывания я сравниваю AL с кодом ASCII символа и, если один из них равен, я отображаю сообщение.)

1 Ответ

0 голосов
/ 22 февраля 2020

Если бы я хотел отобразить сообщение, когда пользователь нажимает на специальный символ на экране, я бы следовал этим шагам:

  1. Int 10h / AH = 00h - УСТАНОВИТЬ ВИДЕО в текстовый режим
  2. Int 10 / AH = 05h - ВИДЕО - ВЫБРАТЬ СТРАНИЦУ АКТИВНОГО ОТОБРАЖЕНИЯ
  3. Отображение специальных символов, по которым нужно щелкнуть
  4. Int 33 / AX = 0003h - MS MOUSE v1 .0+ - ВОЗВРАЩАЕМОЕ ПОЛОЖЕНИЕ И СТАТУС КНОПКИ
  5. Пересчитать координаты, полученные из прерывания мыши, в координаты символа (их следует разделить на размерность символа)
  6. Int 10 / AH = 02h - ВИДЕО - УСТАНАВЛИВАЙТЕ ПОЛОЖЕНИЕ КУРСОРА на эти рассчитанные текстовые координаты.
  7. Инт 10 / AH = 08h - ВИДЕО - ЧИТАЙТЕ ХАРАКТЕР И АТРИБУТ НА ПОЛОЖЕНИИ КУРСОРА

Возможно, вы пропустили какой-то шаг.

Когда положение указанного символа c на экране фиксировано и известно, достаточно прочитать координаты мыши при нажатии ее кнопки и посмотреть, соответствует ли оно позиции специального символа. Вам не нужно читать его обратно из памяти экрана.

...