Лекция 11. Работа с клавиатурой.

Представление символов и управляющих кодов в памяти компьютера.

Система представления символов в РС базируется на Американском стандартном коде для обмена информацией (American Standard Code for Information Interchange), который был введен в 1963 г. и ставил в соответствие каждому символу семиразрядный двоичный код, обеспечивающий представления 128 символов. ASCII код включал две группы символов:

- Управляющие символы, используемые в коммуникационных протоколах для передачи команд периферийным устройствам.

- Символы пишущей машины - цифры, буквы и специальные знаки.

Управляющие символы имеют коды от 0 до 1АЬ и 7Fh. Все остальные -

алфавитно-цифровые.

Управляющие символы ASCII - кода.
Код Мнемоническое Назначение символа
символа обозначение  
00h NUL Пустой символ
01h SOH Начало заголовка
02h STX Начало текста
03h ETX Конец текста
04h EOT Конец передачи
05h ENQ Запрос подтверждения
06h ACK Подтверждение
07h BEL  
08h BS Забой
09h HT Горизонтальная табуляция
0Ah LF Перевод строки

 

0Bh VT Вертикальная табуляция
0Ch FF Перевод формата
0Dh CR Возврат каретки
0Eh SO Переход на нижний регистр
0Fh SI Переход на верхний регистр
10h DLE Завершение сеанса связи
11h DC1 Управление устройством N1
12h DC2 Управление устройством N2
13h DC3 Управление устройством^
14h DC4 Управление устройством N4
15h NAK Ошибка передачи
16h SYN Холостой ход
17h ETB Конец передачи блока
18h CAN Отмена
19h EM Конец носителя данных
1Ah SUB Подстановка (замена)
1Bh ESC Переход
1Ch FS Разделитель файлов
1Dh GS Разделитель групп
1Eh RS Разделитель записей
1Fh US Разделитель элементов
7Fh DEL Удаление символов

 

Для отображения символов европейских алфавитов и символов псевдографики ASCII код расширен до 256 символов.

Графическое представление символов расширенного ASCII кода (Американская кодировка - кодировка IBM - Кодовая страница 437). Каждая страна мира имеет свою собственную кодовую страницу.

Представление символов ASCII кода в русской кодовой таблице MS - DOS (кодовая страница 866).

Для ввода расширенного ASCII нажать <ALT> и удерживая ее набрать на числовой части клавиатуры ASCII значение необходимого символа.

Системные процедуры обработки прерываний от клавиатуры.

Системные процедуры обработки прерывания 09h производятся в соответствии со схемой взаимодействия системы с клавиатурой(смотри рисунок 10).


Аппаратное прерывание 09h

Адрес ПОП из вектора прерывания 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. Укажите объем кольцевого буфера.