Структура прикладных программ в среде DOS

Программы, которые выполняются под управлением системы МS DOS, делятся на два основных типа: программы с расширением .СОМ, которые имеют максимальный размер около 64 К, и программы с расширением .ЕХЕ, которые могут иметь размер наибольшей доступной памяти. На языке микропроцессора Intel 8086 это означает, что программы типа .СОМ соответствуют минимальной модели, в которой все регистры сегмента содержат одну и ту же величину, т.е. программа и данные объединены. В противоположность этому программы типа .ЕХЕ образуют малую, среднюю или большую модели, в которых регистры сегмента содержат различные величины, т.е. программа, данные и стек постоянно находятся в отдельных сегментах. Программы типа .ЕХЕ могут иметь много сегментов программ и данных, адресация к которым осуществляется при помощи длинных вызовов и манипуляций с регистром сегмента данных DOS.

Программа типа .СОМ постоянно хранится на диске в виде абсолютного образа памяти в файле с расширением .СОМ. У файла отсутствуют заголовок или какая-либо другая внутренняя служебная информация. С другой стороны, программа типа .ЕХЕ постоянно находится на диске в файле специального типа, который имеет индивидуальный заголовок, карту настройки, контрольную сумму и другую информацию, используемую (но не всегда) системой МS DOS

Оба типа программ с расширением .СОМ и .ЕХЕ переносятся в память для выполнения с помощью одного и того же механизма, а именно функции ЕХЕС, которая образует загрузчик системы МS DOS. Функция ЕХЕС может вызываться с именем файла программы, загружаемой СОММАND.СОМ (обычным интерпретатором командной строки системы МS DOS) либо другой оболочкой, пользовательским интерфейсом или другой программой, которая была загружена раньше с помощью ЕХЕС. Если в области транзитных программ достаточно свободной памяти, то ЕХЕС выделяет блок памяти под новую программу, строит префикс сегмента программы (РSР) по его базовому адресу, а затем считывает программу в память непосредственно над РSР. В конце своей работы ЕХЕС устанавливает регистры сегмента и стека и передает управление программе.

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

Программы с расширением .СОМ и .ЕХЕ часто называют транзитными программами. Транзитная программа на время своего выполнения "владеет" блоком выделенной ей памяти и имеет почти полный контроль над системными ресурсами. При завершении работы такой программы по любой причине - снятие операционной системой, успешное выполнение и выход в МS-DOS - выделенный ей блок памяти освобождается (отсюда термин "транзитный") и может быть использован следующей загружаемой программой.