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

Определение конфигурации компьютера

Прежде чем пытаться работать с каким-либо периферийным устройством, следует убедиться в том, что оно есть в компьютере. В процессе инициализации тестовые модули, расположенные в BIOS, определяют конфигурацию компьютера и записывают соответствующие значения в специально отведенную для этого ячейку памяти.

Для определения конфигурации компьютера программа может вызвать прерывание INT 11h. При этом она получает в регистре AX содержимое указанной выше ячейки памяти, имеющей размер в одно слово. Каждый бит в слове конфигурации отвечает за соответствующее устройство.

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

Обычно программа не работает сама с аппаратурой, а пользуется услугами операционной системы. При обращении к стандартной аппаратуре через операционную систему программа получит признак ошибки, если соответствующее устройство отсутствует.

Программы, составленные на языках высокого уровня, таких как С или Pascal, могут в случае отсутствия арифметического сопроцессора использовать модули эмуляции. Операции сопроцессора эмулируются центральным процессором и программа просто работает медленнее.

Но если программа обращается непосредственно к портам отсутствующего устройства, это может привести к непредсказуемым последствиям.

Определение объема оперативной памяти

Сказанное выше справедливо и по отношению к оперативной памяти. Для работы некоторых программ требуется достаточное количество памяти. Прерывание INT 12h возвращает в регистре AX количество имеющихся блоков памяти размером в один килобайт. Анализируя эту величину, программы могут при недостатке памяти либо вывести на экран соответствующее сообщение и отказаться от работы, либо изменить алгоритмы работы, организовав, например, виртуальную память на диске или просто записывая в файл промежуточные результаты.

Если ваш компьютер оборудован расширенной памятью (адресное пространство расширенной памяти находится выше границы в 1 мегабайт), размер этой памяти в килобайтах можно узнать, вызвав прерывание INT 15h со значением регистра AX, равным 8800h.

Однако будьте осторожны - при использовании драйвера himem.sys операционная система MS-DOS резервирует для себя всю расширенную память. Несмотря на то что объем свободной расширенной оперативной памяти, определенный с помощью прерывания INT 15h, будет при этом равным нулю, программа все же сможет заказать себе блоки в такой памяти. Для этого следует воспользоваться программным интерфейсом драйвера himem.sys.

Работа с видеоконтроллером

Прерывание INT 10h выполняет все многочисленные операции по обслуживанию видеоконтроллера.

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

Программирование видеоконтроллера - сложная задача. Функции, выполняемые прерыванием INT 10h слишком обширны даже для простого перечисления. Поэтому мы приведем краткий обзор только некоторых из этих функций.