
Министерство образования Украины
Национальный Технический Университет Украины
“Киевский Политехнический Институт”
Кафедра систем автоматизированного проектирования
ОТЧЕТ О ВЫПОЛНЕНИИ
Лабораторной работы № 1
ИССЛЕДОВАНИЕ КЛАВИАТУРЫ
по курсу
“ТЕХНИЧЕСКИЕ СРЕДСТВА КОМПЬЮТЕРНЫХ
ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ“
Подготовил:Принял:
студент группы ДА-XXЗинченкоВ.Я.
XXXXX
2000
Задание
1.Аппаратные и программные средства ввода информации с клавиатуры.
Привести краткий обзор по следующим вопросам:
а) аппаратные средства персонального компьютера для ввода информации с клавиатуры,
б) анализ и преобразование скэн-кода;
в) ввод информации средствами MSDOS.
2.Спроектировать и реализовать в виде отдельных модулей следующие функции:
а) получение скэн-кодов нажатой и отжатых клавиш,
б) используя обращение к портам контролера, реализовать управлением задержки и частоты повторением имитации нажатой клавиши;
в) получить расширенный скэн-код клавиатуры при непосредственном обращении к буферу клавиатуры;
г) определить состояние клавиатуры, используя порты 0040:0017 и 0040:0018;
д) используя непосредственное обращение к буферу клавиатур, реализовать функцию имитирующую работу клавиатуры.
3.Используя средства BIOS, реализовать функции перечисленные в пунктах б), в), г) и д).
Провести сравнительную характеристику полученных реализаций.
4.Отчет должен содержать:
а) краткий обзор, тематика которого определена в пункте №1;
б) описание спроектированных модулей;
в) листинги разработанных программ,
г) выводы по работе.
ПРИМЕЧАНИЕ:
Все программные модули должны быть написаны на языке ASSEMBLER в режиме MASM. Передача параметров и возврат результатов должны соответствовать соглашениям, принятыми для языка С модели SMALL.
1.Аппаратные и программные средства ввода информации с клавиатуры.
а) аппаратные средства персонального компьютера для ввода информации с клавиатуры показаны на рис.1.
расположенная внутри клавиатуры однокристальная микроЭВМ Intel 8048;
адаптер клавиатуры;
системная шина и контроллер прерываний.
Адаптер клавиатуры включает схему программируемого параллельного интерфейса 8255, а также другие элементы, назначение которых - преобразование последовательного кода, поступающего от клавиатуры, в параллельный код. Результат хранится в порту A ППИ 8255 (адрес 60h). После записи информации в этот порт схема выдаёт сигнал на линию прерывания
IRQ1 контроллера прерываний. Он в свою очередь выдаёт прерывание int 9h, обработчик которого находится в BIOS.
Рис.1 Схема взаимодействия аппаратных средств ПК для ввода информации с клавиатуры.
б) анализ и преобразование скэн-кода.
Скэн-код, сгенерированный микроЭВМ клавиатуры 8048 через адаптер клавиатуры поступает в порт 60h. При этом коды нажатой и отжатой клавиш отличаются между собой значением старшего бита: 0 для нажатой и 1 для отжатой клавиши. Когда скэн-код записан в порт 60h, адаптер клавиатуры выдает сигнал подтверждения, уведомляя процессор клавиатуры о принятии кода. Далее вызывается обработчик прерывания 9h. Дальнейшая обработка зависит от типа нажатых клавиш. Shift-клавиши (Shift, Alt, Ctrl) и триггерные клавиши определяют состояние клавиатуры и соответствующим образом изменяют содержимое регистров состояния клавиатуры 0000:0417 и 0000:0418. Большинство же клавиш и их комбинации с Shift-клавишами - это клавиши с буферизацией расширенного кода. При их нажатии в специальный кольцевой буфер клавиатуры в памяти помещается двухбайтовый код или BIOS-код клавиши (комбинация ASCII-код - скэн-код). Аналогичные действия происходят и при нажатии т.н. функциональных клавиш. Так как им не соответствуют ASCII-символы, то в кольцевой буфер клавиатуры помещается комбинация вида (0 или т.н. префикс -- скэн-код ).
Особым образом обрабатывается нажатие некоторых других клавиш или их комбинаций:
PrintScreen - вызывается прерывание 5h;
Ctrl-Alt-Del - вызывается программа начальной загрузки;
Ctrl-Break - устанавливается флаг, сигнализирующий о желании пользователя прервать выполнение текущей программы.
Специальным образом обрабатывается также Alt-<ввод>.
Рассмотрим кратко структуру кольцевого буфера клавиатуры. Этот буфер занимает адресное пространство от 40:1Eh до 40:3Dh включительно. По адресу 40:1Ah находится указатель головы буфера, т.е. ячейки, с которой начинается заполнение буфера. По адресу 40:1Ch находится указатель хвоста буфера, который указывает на ячейку, в которую будет записан код нажатой клавиши. При заполнении буфера перемещается указатель хвоста. Буфер пуст, если указатели головы и хвоста равны. Для очистки буфера необходимо просто приравнять указатели головы и хвоста. С адреса 40:1Eh начинается непосредственно буфер. Именно в это адресное пространство записываются коды нажатых клавиш.
в) ввод информации средствами MS-DOS.
Для вызова функций MS-DOS используется прерывание INT 21h. Это прерывание служит главным входом большинства функций DOS. Программа, запрашивающая сервис DOS, должна подготовить всю необходимую информацию в регистрах и управляющих блоках, указать в регистре AH номер желаемой функции DOS и затем вызвать прерывание INT 21H. Существуют следующие функции для ввода символьной информации: