![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Лекция 11. Работа с клавиатурой.
Представление символов и управляющих кодов в памяти компьютера. Система представления символов в РС базируется на Американском стандартном коде для обмена информацией (American Standard Code for Information Interchange), который был введен в 1963 г. и ставил в соответствие каждому символу семиразрядный двоичный код, обеспечивающий представления 128 символов. ASCII код включал две группы символов: - Управляющие символы, используемые в коммуникационных протоколах для передачи команд периферийным устройствам. - Символы пишущей машины - цифры, буквы и специальные знаки. Управляющие символы имеют коды от 0 до 1АЬ и 7Fh. Все остальные - алфавитно-цифровые.
Для отображения символов европейских алфавитов и символов псевдографики ASCII код расширен до 256 символов. Графическое представление символов расширенного ASCII кода (Американская кодировка - кодировка IBM - Кодовая страница 437). Каждая страна мира имеет свою собственную кодовую страницу. Представление символов ASCII кода в русской кодовой таблице MS - DOS (кодовая страница 866). Для ввода расширенного ASCII нажать < ALT> и удерживая ее набрать на числовой части клавиатуры ASCII значение необходимого символа. Системные процедуры обработки прерываний от клавиатуры. Системные процедуры обработки прерывания 09h производятся в соответствии со схемой взаимодействия системы с клавиатурой(смотри рисунок 10).
1. Контроллер клавиатуры - распознает нажатую клавишу и посылает ее СКЭН код в ПОРТ 60h. 2. Слово флагов клавиатуры фиксирует факт нажатия служебных клавиш. 3. Программа обработки прерывания Int 09 на основании СКЭН кода, снятия с порта 60h + состояния слова флагов формирует двухбайтный код (Состояния слова флагов находят по адресу 40H: 17H и 40H: 18H и соответствует следующим клавишам). 4. Содержимое двухбайтного кода: а) Если символьные (т.е. отображаемое) клавиш то СКЭН код + код ASCII (например, клавиша Q(СКЭН код 10 h, код ASCII буквы Q - 51 H, а буквы q-71h) таким образом. Если нажата (Shift) то, двухбайтный код имеет вид 1051h, а если нет (Shift) то 10 71h б) Если управляющие (F1) или сочетание с другие неотображаемыми, то только СКЭН код (3 B00h) (F1) 3 В00h (Shift) / (F1) 5400 h (Ctrl) / (F1) 5E00h (Alt) / (F1) 6800h 5. Программа обработки прерывание INT 09h засылает двухбайтный код в кольцевой буфер ввода (который служит для синхронизации процессов ввода данных с клавиатуры и приема их выполняемой компьютером программой). Объем кольцевого буфера 15 слов. Дисциплина обслуживания ^FIFO. За состоянием буфера следят два указателя. В хвостовом указателе (слово по адресу 40: 1Ch) хранится адрес первой свободной ячейки, в головном указателе (40: 1АЬ) - адрес самого старого кода, принятого с клавиатуры и еще не востребованного программой. (В начале работы, когда буфер пуст, оба указателя - и хвостовой, и головной, указывают на первую ячейку буфера). При переполнении буфера прием новых кодов блокируется, а нажатие на клавиши возбуждает предупреждающие звуковые сигналы. Основная литература: 2[151-162], 6[22-64] Дополнительная литература: 16[85-103], 18[45-49], 15[45-46] Контрольные вопросы: 1. Какие две группы символов включает ASCII код? 2. Как ввести расширенный ASCII код? 3. Для чего служит слово флагов клавиатуры? 4. На основании какой информации программа обработки прерывания Int 09 формирует ASCII код, записываемый в буфер клавиатуры? 5. Укажите объем кольцевого буфера.
|