Лабораторная работа "Периферийные устройства"

  • 07 окт. 2011 г.
  • 1431 Слова
Міністерство освіти та науки України
Черкаський державний технологічний університет
Факультет інформаційних технологій та систем
Кафедра спеціалізованих комп’ютерних систем

Лабораторна робота №1
З дисципліни «Периферійні пристрої»
тема: Робота з клавіатурою і дисплеєм.

Черкаси 2011

Лабораторная работа №1
Работа с клавиатурой и дисплеем

Цель: выработать у студента навыкипрограммирования переферийных устройств, таких как клавиатура и дисплей.

Теоретические сведения

Вся программа представляет собой один цикл, в котором используются следующие две функции прерывания INT 21h:
Вход
AH=09H
DS:DX = адрес строки, заканчивающейся символом '$' (ASCII 24H)
Выход
нет
Описание: Строка, исключая завершающий ее символ '$', выводится на экрандисплея. Символы 'Backspace' обрабатываются как в функции 02H Display Char.
Вход
AH=02H
Выход
AL=символ, полученный при вводе с клавиатуры
Описание: Считывает (ожидает) символ с клавиатуры. Отображает этот символ на экран. При распознавании Ctrl-Break выполняется INT 23H.
Замечание: Ввод расширенных клавиш ASCII (F1-F12, PgUp, курсор и т.п.) требует двух обращений к этой функции. Первый вызоввозвращает AL=0. Второй вызов возвращает в AL расширенный код ASCII.

Дополнительные теоретические сведения

Прерывания, вызванные приходом кодов нажатия и отпускания клавиш, обрабатывает BIOS INT 9h. Каждый принятый скан-код (или цепочка) обрабатывается с учетом состояния клавиатурных флагов. Результат обработки (как правило, ASCII-символ в младшем байте и скан-код в старшем)помещается в клавиатурный буфер, расположенный в ОЗУ. По приему каждого символа указатель головы буфера увеличивается. Буфер организован в виде кольца, после достижения конца области буфера указатель головы установится на начало области. В случае переполнения буфера (указатель головы «догнал» указатель хвоста) очередное слово не записывается и подается звуковой сигнал. Размер позволяет хранить описание шестнадцатифактов нажатий клавиш. Нажатие клавиш Ctrl, Shift, Alt и некоторых комбинаций в буфере не отмечается, но приводит к модификации бит ячеек флагов клавиатуры. Нажатие «системной» комбинации Ctrl+Alt+Del, клавиши PrintScreen (SysRq) и некоторых других к записи в клавиатурный буфер не приводит, а вызывает специальные процедуры.
Для обслуживания клавиатуры используются ячейки ОЗУ из области данныхBIOS (BIOS Data Area):
• 0:0417, 0:418 – флаги клавиатуры;
• 0:0419 – аккумулятор кода Alt-набора;
• 0:041А – указатель головы буфера (Buffer Head), 2 байта (модифицируется при помещении символа в буфер);
• 0:041C – указатель хвоста буфера (Buffer Tail), 2 байта (модифицируется при извлечении символа из буфера);
• 0:041E-0:042D – область кольцевого буфера (16 слов).Байт флагов Kbd Shift Flags Rec (адрес 0:0417) имеет следующее назначение бит:
• бит 0 — клавиша Shift (правая) нажата;
• бит 1 — клавиша Shift (левая) нажата;
• бит 2 — клавиша Ctrl (любая) нажата;
• бит 3 — клавиша Alt (любая) нажата;
• бит 4 — включен индикатор Scroll Lock;
• бит 5 — включен индикатор Num Lock;
• бит 6 — включен индикатор Caps Lock;
•бит 7 — включен режим Insert.
Каждое нажатие клавиши Num Lock переключает бит 5. Когда он установлен, клавиши цифровой клавиатуры интерпретируются как цифры и точка (.). Когда бит 5 обнулен, эти клавиши интерпретируются как клавиши управления курсором. Каждое нажатие клавиши Caps Lock переключает бит 6. Когда он установлен, клавиши букв дают символы в верхнем регистре (uppercase, A-Z), когдаобнулен — в нижнем (lowercase, a-z). Нажатие клавиши Shift меняет действие бит 5 и 6 на обратное. Каждое нажатие клавиши Scroll Lock переключает бит 4, каждое нажатие клавиши Insert переключает бит 8. На состояние этих флагов BIOS не реагирует. Современные версии BIOS отображают состояние бит 4, 5 и 6 на индикаторы клавиатуры (по вызовам Int 16h).
Байт флагов...
tracking img