Программные прерывания.

10/21/94 07:51pm prer_prg.lek
П.Нортон, Р.Уилтон "IBM PC и PS/2 руководство по программированию" перевод В.Н.Григорьева М "Радио и связь" 1994

Программные прерывания.

Пользователь может "добраться" до устройства несколькими способами:

1 Используя знания адресов микросхем и формата данных, управлять устройством на самом низком уроане. Такие программы наиболее эффективны, но аппаратозависимы;

2 Можно использовать подпрограммы, находящиеся в ROM BIOS. В этом случае программый продукт потеряет зависимость от аппаратуры и будет независимым от операционной системы (останется только проблема загрузки и передачи управления, но она решается достаточно просто);

3 Еще один вариант - работа с функциями BIOS DOS. Такое решение максимально упрощает написание программ обслуживания устройств, но делает их зависимыми от используемой версии DOS и неинтересными с точки зрения системного программирования;

4 Последний вариант - использование библиотеки подпрограмм языка высокого уровня. Основной трудностью такого подхода является понимание описания работы используемых подпрограмм.

Прерывания ROM BIOS:

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

ROM BIOS имеет 12 точек входа. Каждая точка объединяет несколько логическисвязанных служб, имеющих номера. Все прерывания (точки входа) можно поделить на несколько групп:

1 Прерывания, обслуживающие конкретные устройства

2 Прерывания, сообщающие информацию о конфигурации системы

3 Прерывание таймера

4 Прерывание печати экрана

5 Прерывание специальных служб

6 Прочие прерывания

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

"Традиционный" BIOS не может работать в защищенном режиме и не поддерживает многозадачный режим. Поэтому на машинах PS/2 моделей 50, 60, 80 установлен усовершенствованный интерфейс Advanced BIOS (ABIOS), свободный от указанных недостатков, но имеющий другой: большую сложность, связанную с особенностями защищенного режима. По этой причине ABIOS прикладными программами обычно не используется.

Прерывания DOS:

Помимо прерываний ROM BIOS программе пользоваателя доступны прерывания DOS. Эти прерывания в основном направлены на организацию вычислительного процесса и работа с устройствами рассматривается прежде всего с этой точки зрения.

За DOS зарезервированны прерывания 20h..3Fh, используется только 10. По мере появления новых версий DOS набор прерываний претерпевает серьезные изменения, хотя совместимость "снизу вверх" поддерживается.

Имеется 10 точек входа в прерывания DOS:

Работа со службами DOS требует меньших знаний о физической организации устройств и вычислительной системы. Но все эти службы используются только в конкретной ОС. В свою очередь службы ROM BIOS не зависят от установленной системы, что делает их более привлекательными для изучения.


Stay-at-home