Предыдущий раздел УПРАВЛЕНИЕ УСТРОЙСТВАМИ С ПРЕРЫВАНИЯМИ Следующая глава

21.6 Лабораторная работа 19

Требуется разработать программу нерезидентного драйвера клавиатуры, выполняющего запросы прикладных программ по вводу символов с клавиатуры. Драйвер должен обрабатывать управляющую клавишу <CapsLock>, выполняющую переключение регистров. Перед возвратом в DOS выполняется восстановление системной обработки прерываний от клавиатуры.

Для проверки работоспособности драйвера клавиатуры используется прикладная программа, которая, используя драйвер клавиатуры, выполняет ввод символьной строки с клавиатуры в свой внутренний (прикладной) буфер. Получив код символа $ (24h), прикладная программа выводит содержимое своего буфера на экран, используя для этого драйвер экрана, полученный в результате лабораторной работы № 18.

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

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

Рекомендуемый план отладки

Отладку программы драйвера клавиатуры рекомендуется выполнить в два этапа.

Этап 1. Обеспечение вывода на экран содержимого прикладного буфера, а также обеспечение вывода на экран «эха» символов, вводимых с клавиатуры. В прикладной буфер с помощью псевдооператора db записывается какая-то символьная строка, заканчивающаяся каким то особым символом, например, с кодом 24h. Прикладная программа сначала вызывает процедуру инициализации экрана, а затем процедуру инициализации клавиатуры с параметром u=0. Затем она выводит посимвольно содержимое прикладного буфера на экран с помощью соответствующей процедуры драйвера экрана. При достижении конечного символа (с кодом 24h) прикладная программа в цикле вызывает процедуру драйвера клавиатуры «Ввод символа» до тех пор, пока от нее не будет получен символ с определенным кодом, в качестве которого опять можно использовать 24h. После этого прикладная программа вызывает процедуру инициализации клавиатуры с параметром u=1 и делает возврат в DOS. Обработчик прерываний клавиатуры должен правильно реагировать на нажатие каждой клавиши, помещая (если нужно) ее код в буфер драйвера клавиатуры и выводя «эхо» символа на экран (с помощью процедуры драйвера экрана).   

Этап 2. Окончательная отладка драйвера клавиатуры. Для этого изменяется прикладная программа, использовавшаяся на шаге 1: после завершения инициализации экрана и клавиатуры прикладная программа выполняет ввод с клавиатуры (с помощью процедуры «Ввод символа») строки символов в свой прикладной буфер. Ввод в прикладной буфер производится до тех пор, пока прикладная программа не получит символ с кодом 24h. Далее повторяются действия этапа 1: прикладная программа выводит содержимое своего прикладного буфера на экран, а затем в цикле вызывает процедуру «Ввод символа». При получении кода 24h восстанавливается системный обработчик прерываний клавиатуры и делается возврат в DOS

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

 


Предыдущий раздел В начало Следующая глава