Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Структура и принципы работы MS-DOS.doc
Скачиваний:
65
Добавлен:
02.05.2014
Размер:
379.9 Кб
Скачать

Работа с клавиатурой

Обработчик прерывания INT 16h выполняет несколько функций, связанных с обслуживанием клавиатуры. С помощью функций обслуживания клавиатуры можно выполнить ввод кода нажатой клавиши или ожидание момента, когда пользователь нажмет любую заданную клавишу либо комбинацию клавиш.

Заметим, что коды нажатых клавиш помещаются в специальный буфер клавиатуры. Одна из функций прерывания INT 16h проверяет состояние буфера - есть в нем коды нажатых клавиш или нет. Если буфер не пуст, первый помещенный в буфер код клавиши возвращается программе. Этот код затем может быть считан другой функцией ввода (ввод с ожиданием). Такая функция приостанавливает работу программы до тех пор, пока пользователь не нажмет любую клавишу. Затем она возвращает программе код нажатой клавиши.

Пару описанных выше функций можно также использовать для очистки буфера клавиатуры: сначала программа проверяет, пуст ли буфер. Если он не пуст, считывает код клавиши. Этот код никуда не помещается (теряется). После считывания кода программа опять проверяет содержимое буфера и так до тех пор, пока клавиатурный буфер не окажется пустым.

Для машин класса не ниже AT обработчик прерывания INT 16h выполняет и другие функции: установку задержки, запись символов в буфер клавиатуры, обслуживание расширенной клавиатуры.

Обслуживание дисковой подсистемы

Прерывание INT 13h предназначено для обслуживания жестких дисков и НГМД. Многочисленные функции прерывания INT 13h выполняют все операции записи и чтения данных. Мы сделаем обзор только самых важных функций.

Сброс дисковой системы (00h)

Эта функция выполняет установку в исходное состояние всей дисковой системы или выбранного дискового устройства. Используется обычно перед началом работы с устройством.

Определение состояния дисковой системы (01h)

Эта функция позволяет проверить результат выполнения предыдущей операции. Если операция завершилась неудачно, при помощи этой функции можно определить код ошибки.

Чтение/запись секторов диска (02h/03h)

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

Перед вызовом функции следует задать номера устройства, дорожки и головки. Программа должна также указать количество читаемых или записываемых секторов.

Проверка секторов (04h)

Функция проверяет содержимое секторов диска с использованием циклической контрольной суммы CRC (Cyclic Redundancy Check).

Другие функции прерывания INT 13h

Среди других функций прерывания INT 13h - форматирование дорожки, позиционирование головки на заданную дорожку диска, тестирование и предварительная установка диска, запуск диагностики контроллера и многое другое.

Вывод данных в параллельный порт

BIOS содержит простейшую систему обслуживания параллельного порта, состоящую из трех функций прерывания INT 17h. Это функции 01h (инициализация параллельного порта), 02h (опрос состояния параллельного порта) и 00h (вывод байта в параллельный порт).

Поскольку к персональному компьютеру можно подключить несколько параллельных портов, при обращении к принтеру следует указывать номер порта.

Обслуживание порта последовательной передачи данных

Функции прерывания INT 14h обслуживают порт последовательной передачи данных. С помощью этих функций можно задавать формат и скорость передачи данных, определять состояние портов и, конечно, выполнять передачу данных.

Работа с системными часами

Функции прерывания INT 1Ah обслуживают часы, которые есть в каждом компьютере. С помощью этих функций вы можете установить время и дату, опросить текущее состояние часов. Заметим, что часы реального времени имеются на машинах класса не ниже AT.

Пользуясь часами реального времени, можно установить на заданное время "будильник". После этого в нужный момент будет вызвано прерывание "будильника" с номером 4Ah. Обработчик прерывания INT 4Ah может подать звуковой сигнал или вывести на экран предупреждающее сообщение.