Прерывания клавиатуры в защищенном режиме, Ассемблер

программирование ассемблер системное программирование защищенный режим процессора прерывания

Работаю в защищенном режиме, все еще пытаюсь считывать символы с клавиатуры. Сейчас пытаюсь делать это так:

.cmd
in al,60h ;чтение из порта клавы
cmp al,17;сравниваем значение с скан кодом кнопки W
je .new_w
cmp al,0 ;если не изменилось, то на повтор
je .cmd

можно ли так, правильно ли составлен код? будет ли он работать в защищенном режиме? подскажите еще, как вывести на консоль символ который был введен? (его скан код в регистре al храниться).
и как в защищенной режиме перевести текст на новую строку? в реальном режиме делал с помощью кода 10, 13, но в защищенном ет не работает(
заранее спасибо!

Примечание:
Работаю без операционной системы, из бутсектора, поэтому готовые прерывания клавиатуры перехватывать не выйдет.

Примечание:
Нужно делать это вручную.

Примечание:
Защищенный режим 32 битный, а БОИС 16 битный, прерывания биоса нельзя юзать из защищенного режима((
Ответы:
Наивный. А ты без операционки работаешь? Потому что если работаешь в операционке, то разберись с ПЕРЕХВАТОМ прерываний. Другими словами, твоё прерывание уже стопудово перхвачено, и по меньшей мере глупо ожидать данных на своих местах.
Выхода два.
1. Трудный - писать драйвер клавиатуры. :) Не шутка. Я как-то пробовал стоклнувшись именно с этой проблемой и бросил это дело уже после пятнадцатого обработчика.
2. Легкий - использовать прерывание BIOS клавиатуры. Оно прекрасно работает в защищенном режиме без операционки. Тоже пробовал - все ок. :)
1. Прерывания BIOS можно и даже нужно юзать из защищенного режима. Я это делал, когда экспериментировали с товарищем с написанием операционки защищенного режима. Не помню, правда, что там было с 32-х  разрядной адресацией.
2. Если ну никак не получается и очень хочется изобрести драйвер клавиатуры, то советую прочитать про то, какие эхо коды обработчики прерываний клавиатуры должны возвращать, какие порты клавиатуры есть и для чего каждый из них нужен. Ну и, про то, как описывать прерывания для защищенного режима - отдельная тема.


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.