Ноутбуки   
   Софт   
   Компьютеры   
   Компьютерные фирмы   
  Меню сайта

BIOS

SSD-накопители

Акустика для ПК

Видеокарты

Видеокарты - История

Джойстики, клавиатуры и мыши

Дигитайзеры

Жесткие диски

Жесткие диски - история

Звуковые карты

Именитые люди компьютерной индустрии

История компьютеров

Карманные компьютеры

Компьютер десктоп - готовая сборка

Компьютерные фирмы

Компьютеры в теории и практике

Копировальные аппараты

Корпуса, вентиляторы, блоки питания

Маршрутизаторы, коммутаторы, хабы

Материнские платы

Модемы

Модули памяти

Мониторы

Мониторы и видеокарты - история

Новости

Ноутбуки и субноутбуки

Оборудование беспроводной связи, bluetooth, wi-fi

Оптические накопители CD, DVD, Blueray

Оргтехника

Память - история

Плоттеры

Принтеры

Процессоры

Процессоры - история

Сетевые карты

Сетевые фильтры, ИБП

Сети

Сканеры

Сменные жесткие диски

Советские ПК

ТВ-тюнеры

Типы компьютеров

Устройства архивации данных и стримеры

Факс

Флоппи-дисководы

Флэшки и всяко-разно

Шины и чипсеты - история




Главная страница Прайс-лист Интернет-магазин

Процедура обслуживания клавиатуры в системе BIOS

Рассмотрим теперь служебные процедуры системы BIOS, позволяющие осуществлять доступ к клавиатуре.
Процедуры обслуживания клавиатуры в системе BIOS вызываются с помощью прерывания номер 22, шестнадцатиричное значение 16. Таких процедур всего три, поскольку не слишком много функций можно запросить для клавиатуры.
Первая процедура, имеющая код 0, возвращает очередной принятый от блока клавиатуры символ. Эта процедура возвращает управление вызывающей программе только тогда, когда будет введен символ, так что программе не приходится проверять, был ли действительно введен символ. Код обычного символа возвращается в регистре AL, но если содержимое AL равно нулю, то в регистре АН находится код специального символа. Эти регистры соответствуют первому и второму байтам, упоминавшимся выше, при рассмотрении кодов специальных символов. Ниже описана логика процесса распознавания получаемых символов:
если AL=0 то
начало
спец_символ:= истина;
введенный_символ:= АН
конец
иначе
начало
спец_символ:= AL
конец;
Можно сделать ряд интересных замечаний, касающихся значений, возвращаемых этой процедурой. Если введен обычный код АSCII (то есть, AL не равняется нулю), то в регистре АН содержится код сканирования для нажатой клавиши. Но, если код ASCII был введен с помощью клавиши "Alt", то в регистре АН будет ноль. Эту информацию программа может использовать для определения способа вода символа. Некоторые символы кода ASCII встречаются на клавиатуре IBM/PC дважды.
Приложение 10.1. Текст программы демонстрации возможностей управления клавиатурой (Бейсик).
1000 REM Листинг 10.1 - программа отображения битов
1010 REM состояния клавиатуры
1030 GOSUB 2000 'вывод заголовка
1040 GOSUB 3000 'дополнительная информация
1050 GOSUB 4000 'отображение битов клавиатуры
1060 GOSUB 5000 'проверка завершения ввода с клавиатуры
1070 GOTO 1050
2000 REM Подпрограмма вывода заголовка
2010 KEY OFF : CLS : WIDTHS 80 : LOCATE ,,0
2020 REM
2030 LOCATE 5,1
2040 PRINT " Программы для книги 'Персональный компьютер"
2050 PRINT " фирмы ИБМ', автор Питер Нортон, 1983"
2060 PRINT
2070 PRINT "Программа 10-1: Отображение битов состояния"
2080 PRINT "клавиатуры"
2999 RETURN
3000 REM Подпрограмма отображения вспомогательной информации
3010 LOCATE 11,28
3020 PRINT "Байт 1 Байт 2";
3030 LOCATE 12,28
3040 PRINT "12345678 12345678";
3050 LOCATE 17,10
3060 PRINT "Чтобы увидеть изменение битов состояния нажмите";
3065 PRINT "и удерживайте любую из";
3070 LOCATE 18,15
3080 PRINT "-- Левую или правую клавишу смещения";
3090 LOCATE 19,15
3100 PRINT "--Ctrl,Alt,Num-Lock,Scroll-Lock,Caps-Lock,Ins";
3110 LOCATE 21,10
3120 PRINT "(обратите внимание на влияние смещения и"
3125 PRINT "Num-Lock yf клавишу Ins) ";
3130 LOCATE 24,10
3140 PRINT "Для выхода в ДОС нажмите любую клавишу ввода";
3999 RETURN
4000 REM Подпрограмма отображения битов состояния клавиатуры
4010 DEF SEG = &H40
4020 CONTROL% = PEEK(&H17)
4030 CHECK% = 128
4040 FOR I% = 1 TO 8
4050 LOCATE 14,27 + I%
4060 IF CONTROL% >= CHECK% THEN COLOR 30,0 ELSE COLOR 7,0
4070 IF CONTROL% >= CHECK% THEN PRINT "1"; ELSE PRINT "0";
4080 IF CONTROL% >= CHECK% THEN CONTROL% = CONTROL%-CHECK%
4090 CHECK% = CHECK / 2
4100 NEXT I%
4110 CONTROL% = PEEK(&H18)
4120 CHECK% = 128
4130 FOR I% = 1 TO 8
4140 LOCATE 14,36 + I%
4150 IF CONTROL% >= CHECK% THEN COLOR 30,0 ELSE COLOR 7,0
4160 IF CONTROL% >= CHECK% THEN PRINT "1" ELSE PRINT "0"
4170 IF CONTROL% >= CHECK% THEN CONTROL% = CONTROL%-CHECK%
4180 CHECK% = CHECK% / 2
4190 NEXT I%
4999 RETURN
5000 REM Подпрограмма ожидания завершения работы
5010 K$ = INKEY$
5020 IF LEN(K$) = 0 THEN RETURN 'ожидание ввода с клавиатуры
5030 IF (LEN(K$) = 2) AND (CHR$(82) = MID(K$,2,1)) THEN
5035 RETURN 'Нажата клавиша Ins
5040 CLS : LOCATE ,,1
5999 SYSTEM
9999 REM Конец программы 10-1


Анализ содержимого ПЗУ - метод деассемблирования

Анализ содержимого ПЗУ - реконструкция интерпретатора

Анализ содержимого ПЗУ средствами программы DEBUG

Две версии BIOSа

Дополнительные процедуры системы BIOS

Механизм выборки информации из ПЗУ

Описание специальных прерываний

Организация ПЗУ и его использование

Процедура обслуживания клавиатуры в системе BIOS

Система BIOS в ПЗУ

Служебные процедуры обслуживания дискет системы BIOS в ПЗУ

Средства управления видеотерминалом уровня BIOS-ПЗУ




Немного рекламы:


















































































Rambler's Top100