В ПЕРСОНАЛЬНЫХ КОМПЬЮТЕРАХ

ПРИНЦИПЫ КОДИРОВАНИЯ СИМВОЛОВ

 

Клавиатура ПК содержит микропроцессор, который воспринимает каждое нажатие на клавишу и генерирует специальный скан-код. Скан-код - это однобайтовое число, которое представляет собой некоторый номер, присвоенный каждой клавише. После этого вызывается прерывание клавиатуры. Процессор прекращает текущую работу и выполняет процедуру, анализирующую скан-код. При поступлении кода от клавиш сдвига или переключателей (SHIFT, CAPS LOCK, NUM LOCK и другие) изменение статуса работы клавиатуры записывается в память. В других случаях скан-код преобразуется в ASCII-код символа или расширенный код клавиши. Затем сформированный код помещается в буфер клавиатуры, представляющий собой небольшую область памяти, способную помнить до 15 вводимых символов, пока программа занята, чтобы их обработать. Путь, который проходит нажатие на клавишу перед тем, как попасть в программу, можно представить рис1.

Для представления символов в памяти персональных компьютеров при работе в простейших редакторах обычно выделяется один байт. Все текстовые символы, которые можно ввести в память компьютера с клавиатуры и вывести на экран, сведены в стандартную таблицу ASCII кодов. Коды ASCII - это байтовые числа, соответствующие американскому стандартному коду для обмена информацией (American Standart Code for Information Interchange). Этот набор включает обычные латинские буквы, а также ряд специальных знаков и символов псевдографики.

 

Рис. 1

 

Первые 128 символов кодовой таблицы ASCII имеют одинаковую кодировку для всех ПК (табл. 1). В нее входят также 32 управляющих символа с кодами 0 - 31, которые обычно используются для передачи команд периферийным устройствам, а не выводятся как символы на экран. Однако каждому из них соответствует определенный символ, который в принципе может быть выведен на экран.

 

 

Таблица 1

 

  К о д   С и м в о л     К о д   С и м в о л     К о д   С и м в о л     К о д   С и м в о л     К о д   С и м в о л     К о д   С и м в о л     К о д   С и м в о л     К о д   С и м в о л  
NUL DLE BL @ P ` p
SON DC1 ! A Q a q
STX DC2 « B R b r
ETX DC3 # C S c s
EOT DC4 $ D T d t
ENQ NAK % E U e u
ACK SYN & F V f v
BEL ETB ' G W g w
BS CAN ( H X h x
HT EM ) I Y i y
LF SUB * : J Z j z
VT ESC + ; K [ k {
EF FS , < L \ l |
CR GS - = M ] m }
SO RS . > N ^ n ~
SI US / ? O _ o DEL

 

Управляющие символы (табл. 2) планировалось использовать для выполнения некоторых действий, но в настоящее время многие из них не используются. На практике из них чаще всего встречаются символы CR (ASCII 13) и LF (ASCII 10), которые вставляются в текст при нажатии на клавишу ENTER, когда нужно перейти на следующую строку. Эти символы в обычном режиме не видны на экране. Но увидеть их можно, если при просмотре текстового файла с помощью FAR manager переключиться в режим просмотра в виде кодов.

 

 

Таблица 2

 

Символ Обозначение Символ Обозначение
NUL знак пpобела DLE переключение кода
SON начало заголовка DC1 упpaвление устpойством 1
STX начало текста DC2 упpавление устpойством 2
ETX конец текста DC3 упpавление устpойством 3
EOT конец пеpедачи DC4 упpавление устpойством 4
ENQ запpос NAK пеpеспpос
ACK подтвеpждение SYN pежим синхpонного ожидания
BEL звонок ETB конец пеpедачи блока
BS возвpат на одну позицию CAN отмена
HT гоpизонтальная табуляция EM конец носителя
LF пеpевод стpоки SUB замена
VT веpтикальная табуляция ESC пеpеход
EF подача бланка FS pазделитель файла
CR возвpат каpетки GS pазделитель гpуппы
SO пеpеход на веpхний pегистp RS pазделитель записи
SI пеpеход на нижний pегистp US разделитель блока
BL пpобел DEL забой

 

 

Вторая половина этой таблицы включает символы псевдографики и национальных алфавитов (табл. 3) и может различаться в разных ПК. Существует несколько различных вариантов этой половины кодовой таблицы, отличающиеся расположением символов русского алфавита и знаков псевдографики, а также наборами специальных символов с последними кодами 240-255. Чтобы ввести символы псевдографики, следует при нажатой клавише [ALT] набрать ASCII код нужного символа на дополнительной клавиатуре и отпустить клавишу [ALT].

 

 

Таблица 3

 

  К о д   С и м в о л     К о д   С и м в о л     К о д   С и м в о л     К о д   С и м в о л     К о д   С и м в о л     К о д   С и м в о л     К о д   С и м в о л     К о д   С и м в о л  
А Р а р Ё
Б С б с ё
В Т в т Є
Г У г у є
Д Ф д ф Ї
Е Х е х ї
Ж Ц ж ц Ў
З Ч з ч ў
И Ш и ш °
Й Щ й щ
К Ъ к ъ ·
Л Ы л ы _
М Ь м ь
Н Э н э ¤
О Ю о ю _
П Я п я _

 

 

Существуют также так называемые расширенные коды, присвоенные клавишам или комбинациям клавиш, которые не имеют представляющего их символа ASCII, таким, как, например, функциональные клавиши. Расширенные коды имеют длину 2 байта, причем первый байт всегда ASCII 0. Второй байт - номер расширенного кода. Например, код 0:30 представляет комбинацию клавиш [Alt]+[A]. Начальный 0 позволяет программе определить, принадлежит ли данный код набору ASCII или расширенному набору.

При нажатии на какую-либо клавишу клавиатуры код нажатой клавиши, называемый скан-кодом, трансформируется в ASCII код или расширенный код вводимого символа, который затем помещается в буфер клавиатуры. Буфер клавиатуры может накапливать до 15 нажатий на клавиши независимо от того, каким кодам они будут соответствовать (однобайтовым кодам ASCII или двухбайтовым расширенным кодам). В буфере клавиатуры для каждого нажатия на клавишу отводятся два байта. Для однобайтовых кодов первый байт ячейки памяти буфера содержит код ASCII, а второй - скан-код клавиши. Для расширенных кодов первый байт ячейки памяти буфера содержит ASCII 0, а второй - номер расширенного кода. Этот код обычно совпадает со скан-кодом клавиши, но не всегда, поскольку некоторые клавиши можно комбинировать с клавишами сдвига для генерации различных кодов.