Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Клавиатура. Байты статуса. Основные шаги обработки прерываний от клавиатуры




Определяют, нажаты ли Shift, Alt, CapsLock …

2 байта, расположенные в ячейках памяти с адресами памяти 0040:0017 и 0040:0018 содержат биты, отражающие статус клавиш-переключателей.

2й байт отображает моменты нажатия клавиши.

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

В прерывании клавиатуры можно выделить 3 основных шага:

1. прочитать скэн-код и послать клавиатуре подтверждающий сигнал

2. преобразовать скэн-код в номер кода или в установку соответствующего байта статуса.

3. поместить код клавиши в буфер клавиатуры

В момент вызова прерывания скэн-код находится в порте. Сначала он анализирует, что клавиша была нажата или отпущена. Все коды освобождения отбрасываются за исключением клавиш переключателей, для которых выполняются соответствующие изменения в байтах статуса. С другой стороны все коды нажатия отбрасываются. При этом могут изменяться байты статуса клавиш переключателей. После того, как введенный символ идентифицирован, процедура ввода с клавиатуры должна найти соответствующий код ASCII или расширенный код. После этого коды символов помещаются в клавиатурный буфер.

Работу клавиатуры можно представить с помощью схемы:

Существует несколько способов проверки, был ли ввод с клавиатуры:

1) когда значения головы и хвоста равны

2) функция 0Bh прерывания 21h возвращает значение FFh в регистр AL когда буфер клавиатуры содержит хотя бы один символ:

Функция 1) прерывания BIOS 16h предоставляет ту же возможность, кроме того, она показывает, какой символ в буфере. Флаг нуля ZF устанавливается, если буфер пуст и сбрасывается, если в буфере есть символ. Копия символа из буфера помещается в регистр AX, но символ из буфера не удаляется. В регистре AL возвращается ASCII код символа, и если он = 0, то это расширенный код и в регистре AH пересылается номер кода.





Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 690; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.035 сек.