2.4 Программы типа .EXE

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

В то время как программы типа .СОМ имеют существенное ограничение на общий размер (не более 64 Кбайт в сумме на собственно программу, данные и стек), программы типа .ЕХЕ могут быть практически неограниченного размера. Хотя обычный программный загрузчик в системе DOS не использует этого достоинства файлов типа .ЕХЕ, но способность загружать отдельные части больших программ в разные участки памяти, а также благоприятная возможность выделить "чистый код" программы, который может разделяться несколькими задачами, - все это существенно в многозадачных средах типа Мicrosoft Windows.

В операционной системе DOS загрузчик всегда вводит программу типа .ЕХЕ в память непосредственно над префиксом сегмента программы, хотя порядок сегментов программы, данных и стека может меняться. Файл типа .ЕХЕ содержит заголовок, или блок управляющей информации характерного формата. Размер заголовка определяется числом команд программы, настраиваемых во время загрузки, но всегда кратен 512 байт. До того как DOS передает управление программе, вычисляются начальные значения регистра сегмента программы CS и указателя команд IP, при этом используются информация о точке входа из заголовка файла типа .ЕХЕ, а также адрес загрузки программы. Эта информация извлекается из оператора ЕND исходного текста одного из модулей программы. Регистры сегмента данных DS и дополнительного сегмента ES указывают на префикс, таким образом, программа может обращаться к указателю блока окружения, хвосту команды и другой полезной информации, находящейся в РSР [5, c. 65].

Начальное содержимое регистра сегмента стека SS и указателя стека SP устанавливается из заголовка. Эта информация берется из объявления сегмента с атрибутом SТАСК в исходном тексте программы. Пространство памяти, выделяемое под стек, может инициализироваться тем или иным значением в зависимости от определения сегмента стека.

Когда программа типа .ЕХЕ завершает свою работу, то она должна вернуть управление DOS с помощью прерывания Int 21Н с функцией 4СН.

Программа типа .ЕХЕ, поступающая на вход компоновщика, может состоять из большого числа отдельных объектных модулей. Допускается, чтобы каждый модуль использовал уникальное имя сегмента программы, а процедуры имени атрибут либо NEAR, либо FAR в зависимости от условий определения имени и размеров выполнимой программы. Программист должен заботиться о том, чтобы компонуемые вместе модули содержали только один сегмент с атрибутом SТАСК и только одну точку входа, определяемую директивой ассемблера ЕND. Результатом работы компоновщика является файл с расширением .ЕХЕ, который можно немедленно запустить на выполнение [6, c. 31].

2.5 Резидентные программы

Большинство программ, выполнив свою работу, освобождают память и заменяются другими. Но некоторые, так называемые резидентные программы, остаются в памяти до тех пор, пока вы не выключите компьютер или не произведете перезапуск системы. Эти программы называют также резидентными в памяти или TSR-программами (terminate and stay - завершить и остаться) [13, c. 78].

Когда ДОС запускает программу, он находит для нее пространство в памяти, копирует программу с диска в память и затем на время передает управление от компьютера этой программе. Обычно по окончании работы программа возвращает управление компьютером операционной системе, и DOS использует память, которая была занята предыдущей программой, для следующей. С резидентными программами дело обстоит иначе. Когда резидентная программа завершает начальную часть своей работы, она передает управление компьютером операционной системе, но одновременно сообщает, чтобы последняя не отдавала другим программам ту область памяти, в которую она была загружена. Программа просит DOS оставить ее в памяти. В свою очередь система выставляет барьер там, где кончается резидентная программа, и загружает следующую нашу программу над резидентной программой. Что означает "над" резидентной программой? Когда мы говорим о памяти, мы связываем любую ее часть с адресом. Адреса начинаются с малых и располагаются по возрастанию. DOS и резидентные программы располагаются по адресам, начиная с малых номеров, поэтому, когда говорится, что программа загружается над другой программой, то имеется в виду, что она помещается в памяти по адресам с большими номерами. В результате, резидентная программа соединяется с небольшой частью DOS, которая остается в нижней части компьютерной памяти. Все последующие программы, которыми вы пользуетесь, будут работать в области памяти с более высокими адресами, не затрагивая резидентную программу и DOS, находящиеся ниже. Таким образом, резидентная программа постоянно находится в памяти до тех пор, пока не будет выключен компьютер.

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

Резидентные программы имеют много применений. Сама DOS включает в себя четыре различные резидентных программы. Известно также много других интересных резидентных программ, которые не являются составной частью DOS [7, c. 84].

Одна из резидентных программа DOS вызывается командой PRINT, и действует как своего рода накопитель печати (спулер). Работа накопителя печати состоит в том, чтобы выводить на принтер информацию, не занимая процессор на то время, когда производится печатание, резидентная программа PRINT справляется с этой задачей, беря на себя работу по своевременной подаче информации для принтера, оставляя в то же время процессор доступным для обслуживания других программ. Она загружает процессор процессом вывода на печать ровно настолько, чтобы принтер был постоянно занят своей работой оставляя основную часть ресурса процессора для работы других программ [12, c. 39].

По характеру своей работы программа PRINT относится к так называемым фоновым программам.

Еще один пример резидентной программы DOS - программа GRAPHICS, которая обеспечивает вывод на принтер графических изображений на экране монитора. Она загружается в память по команде GRAPHICS, но ничего не делает до тех пор, пока не будет нажата клавиша PrtSc (печать экрана). После нажатия этой клавиши выводит на печать графическое изображение, которое в этот момент присутствует на экране монитора.


Информация о работе «Программы DOS»
Раздел: Информатика, программирование
Количество знаков с пробелами: 35965
Количество таблиц: 0
Количество изображений: 1

Похожие работы

Скачать
62099
1
0

... , с помощью команды del *.*, то DOS спросит: Are you sure (Y/N)? (Вы уверены?) Для удаления файлов надо нажать Y и Enter, для отмены команды – N и Enter. Запрос подтверждения. Операционная система MS DOS, начиная с версии 6.0, может запрашивать подтверждение удаления каждого файла. Для этого в команде del надо использовать режим /p. В этом случае перед удалением каждого файла на экран будет ...

Скачать
61563
0
0

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

Скачать
235892
25
6

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

Скачать
32026
0
0

... , курсор выполнения не реагирует на эти изменения, и может оказаться, что будет выделяться ошибочная строка. Окончание сеанса отладки. В процессе отладки программы Turbo Pascal хранит трассу того, что Вы делаете и где находитесь в данный момент. Так как пользователь может в процессе отладки загружать и даже редактировать различные файлы, Turbo Pascal не интерпретирует загрузку другого файла в ...

0 комментариев


Наверх