10. принцип работы расширенного ASCII

American Standard Code for Information Interchange (ASCII) - американский 7-битный (плюс 1 бит четности) стандарт кодирования текстовой информации (латинский алфавит, цифры и т.д.), утвержденный ISO.
На ПК используется так называемый расширенный код ASCII, в котором первые 128 битовых комбинаций совпадают со стандартным ASCII, а остальные используются для представления национальных алфавитов, псевдографики и специальных символов..
Таблица кодировки обеспечивает взаимное соответствие изображений символов на экране с их числовыми кодами, и ставит в соответствие каждому символу семиразрядный двоичный код.

В ASCII-кодировке представлены 128 символов, которые делятся на две группы:
  • символы пишущей машинки, т.е. прописные и строчные латинские буквы, цифры, и специальные знаки;
  • управляющие символы, используемые для передачи команд в коммуникационных программах.

  • Семи разрядов ASCII-кода совершенно недостаточно для представления символов языков с алфавитом, отличным от латинского. Поэтому в большинстве стран используются свои собственные версии кодировок, основанные на ASCII.
    При нажатии клавиши клавиатура посылает процессору сигнал прерывания, что заставляет процессор приостановить свою работу и переключиться на программу обработки прерывания клавиатуры. При этом клавиатура в своей собственной специальной памяти (буфере) запоминает, какая клавиша была нажата. После передачи кода нажатой клавиши процессору эта информация из буфера клавиатуры исчезает. Буфер клавиатуры рассчитан на хранение до 20 кодов нажатых клавиш и логически организован в виде циклического списка-очереди. Код только что нажатой клавиши размещается в конце списка, если он не пуст. Если на момент запроса буфер пуст, то программа переходит в состояния ожидания ввода реального символа. Наличие буфера позволяет нажимать клавиши на клавиатуре с упреждением (заранее), что ускоряет работу на ЭВМ. Каждой клавише на клавиатуре соответствует семиразрядный код сканирования – скэн-код. Перечень этих кодов для 83-клавишной клавиатуры приведен в таблице. Коды сканирования усовершенствованной 101-клавишной клавиатуры полностью совместимы с кодами 83-клавишной клавиатуры, а дополнительные клавиши кодируются оставшимися числами семиразрядного кода.

    Кроме нажатия клавиатура отмечает также и отпускание каждой клавиши, посылая процессору свой сигнал прерывания с соответствующим кодом. При нажатии клавиши клавиатура генерирует однобайтный код нажатия, а при отпускании – также однобайтный код отпускания. Код нажатия клавиши совпадает с кодом сканирования. Код отпускания отличается от соответствующего кода нажатия тем, что он больше его на 128. Таким образом, компьютер всегда “знает“, нажата ли клавиша или она уже отпущена. Это свойство используется при переходе на другой регистр. Кроме того, если клавиша нажата дольше определенного времени, (обычно около половины секунды), то клавиатура генерирует повторные коды нажатия этой клавиши. Драйвер клавиатуры различает следующие типы клавиш: 1. клавиши-переключатели; 2. кодовые клавиши. Клавиши-переключатели служат для изменения состояния клавиатуры. К клавишам-переключателям относятся клавиши Ins, Caps Lock, Num Lock, Scroll Lock, Alt, Ctrl, Shift (левая и правая), а также комбинация Ctrl+NumLock. Для хранения статуса (состояния) клавиш-переключателей в области данных BIOS, находящейся в ОЗУ, зарезервировано два байта. Если драйвер клавиатуры получил код нажатия (отпускания) клавиши-переключателя, то соответствующий бит статуса устанавливается в единицу (нуль). В результате появляется возможность распознать одновременное нажатие клавиши-переключателя и какой-либо другой клавиши. Дополнительно к этому за каждой логически фиксирующейся клавишей-переключателем (Ins, Caps Lock и Num Lock) закреплен еще один бит в статусе, содержимое которого определяет состояние соответствующего режима (вставки, ввода прописных букв и фиксации цифр). При включении режима указанный бит устанавливается драйвером клавиатуры в единицу, а при выключении – сбрасывается. К кодовым клавишам относятся все остальные клавиши. Они служат для непосредственного ввода символов. При считывании драйвером клавиатуры нажатия такой клавиши в компьютер передается двухбайтовый код, называемый двухбайтовым кодом символа. Структура этого кода определяется в соответствии с расширенным кодом ASCII. Если была нажата клавиша на клавиатуре пишущей машинки и клавиатура находится только на нижнем или верхнем регистре, а также если была нажата клавиша на малой цифровой клавиатуре (только в режиме фиксации цифр), то первым (младшим) байтом двухбайтового кода символа будет расширенный код ASCII соответствующего символа, а вторым (старшим ) – код сканирования соответствующей клавиши. В противном случае, т.е. когда нажатой клавише или комбинации клавиш не соответствует никакой расширенный код ASCII (с учетом состояния клавиатуры - регистра), будет сформирован двухбайтовый код, называемый расширенным кодом клавиши. Расширенный код клавиши в первом (младшем) байте содержит нулевой код (ASCII-код символа NUL), а во втором (старшем) – двоичное число, однозначно определяющее нажатую клавишу (или комбинацию клавиш). Последнее число часто совпадает с кодом сканирования клавиши. К клавишам, после обработки нажатий которых выдается расширенный код клавиши, относятся функциональные клавиши, клавиши малой цифровой клавиатуры в режиме управления курсором, а также комбинации различных клавиш с Alt, Shift и Ctrl.

    Сайт управляется системой uCoz