Поиск по сайту:
Особенности взаимодействия программного кода программы с операционной средой DOS и программно доступными аппаратными средствами компьютера представлены на рис. 1.
Функции, выполняемые BIOS и DOS, а также драйверы образуют так называемые системные программные средства, без использования которых невозможно написать ни одну программу на языке ассемблера. При разработке программ на языках высокого уровня многие средства DOS реализуются в неявной форме с помощью использования встроенных функций или библиотечных процедур, в то время как ассемблерная программа обращается к функциям BIOS и DOS непосредственно с помощью механизма программных прерываний. Для вызова функции (модулей) BIOS или DOS программа использует команду Int n с соответствующим номером n. Программа передает параметры модулям BIOS (или DOS) через регистры процессора, результат работы модуля возвращается также в регистрах.
Рис. 1. Уровни взаимодействия аппаратных и системных средств MS-DOS при исполнении ассемблерной программы
BIOS обеспечивает управление аппаратурой компьютера на самом низком (физическом) уровне путём обращения к портам и аппаратным буферам, поэтому её программные модули меняются с изменением "материнской" платы компьютера. Прикладные программы используют не все возможные номера прерываний для BIOS. Часть из них предназначена для аппаратных прерываний от периферийных устройств, а часть зарезервирована для MS-DOS. Ниже перечислены функции BIOS, предоставляемые пользовательским программам на ассемблере [2]:
· определение конфигурации компьютера (Int 11h);
· определение объема оперативной памяти (Int 12h);
· работа с видеоконтроллером (Int 10h);
· работа с клавиатурой (Int 16);
· обслуживание дисковой подсистемы (Int 13h);
· вывод данных в параллельный порт (Int 17h);
· обслуживание последовательного порта (Int 14h);
· работа с системными часами (Int 1Ah);
· перезагрузка операционной системы (Int 19h);
· системный сервис для машин класса AT (Int 15h).
Программы DOS, размещаемые в основном в файлах Io.sys и Msdos.sys, образуют более высокий уровень управления компьютером. Ниже перечислены функции, предоставляемые программе через механизм прерываний [2]:
· завершение работы программы (Int 20h, Int 4Ch);
· чтение диска и запись на диск с абсолютной адресацией секторов (Int 25h, Int 26h);
· завершение работы программы с оставлением ее резидентной в памяти (Int 27h, Int 31h);
· недокументированное прерывание, используемое резидентными программами (Int 28h);
· выполнение команды MS-DOS (Int 2Eh);
· мультиплексное прерывание, используется для программы печати print и других резидентных программ; открывает доступ к внутренним функциям и структурам MS-DOS (Int 2Fh).
Важные функции выполняет прерывание Int 21h – их можно разделить на следующие группы:
· получение системной информации;
· символьный ввод/вывод;
· работа с файловой системой;
· управление программами;
· управление памятью;
· связь с драйверами устройств;
· прочий системный сервис (обработка ошибок, служба времени).
В заключение следует отметить два момента для программ на языке ассемблере:
· программы могут обращаться к драйверам только через соответствующую подсистему MS-DOS;
· средства доступа аппаратного уровня обеспечиваются в основном системой команд микропроцессора.