"Роберт Джордайн. Справочное пособие программиста - 2 (ассемблер, операционная система MS DOS)" - читать интересную книгу автора


;---освобождение памяти (ES имеет значение при старте)
MOV BX,ZSEG ;получаем # параграфа конца программы + 1
MOV AX,ES ;получаем # параграфа начала программы
SUB BX,AX ;вычисляем размер программы в параграфах
MOV AH,4AH ;номер функции
INT 21H ;освобождаем память
JC MEMORY_ERROR ;проверяем на ошибку

;---
ZSEG SEGMENT
ZSEG ENDS


.h3 1.3.2 Запуск одной программы из другой.
-------------------------------------------

MS DOS обеспечивает функцию EXEC (номер 4BH прерывания 21H),
реализующую вызов одной программы из другой. Первая программа
называется "родителем", а загружаемая и запускаемая - "потомком".

Высокий уровень.

В Бейсик версии 3.0 введена команда SHELL. Со значительными
ограничениями она позволяет бейсиковской программе загрузить и
выполнить другую программу. Формат этой команды SHELL ком_строка.
Командная строка может быть просто именем программы или она может
содержать кроме имени параметры, которые обычно следуют за именем
программы в командной строке. Если ком_строка не указана, то
загружается копия COMMAND.COM и появляется запрос операционной
системы. В этот момент можно выполнить любую команду MS DOS, а по
завершению вернуть управление бейсиковской программе, введя ко-
манду EXIT.
Имеется ряд ограничений при использовании SHELL. Если загру-
жаемая программа меняет режим работы дисплея, то он не будет
автоматически восстановлен при возврате. Перед загрузкой програм-
мы все файлы должны быть закрыты, и это не может быть программа,
которая остается резидентной после завершения. Обсуждение ряда
других проблем содержится в руководстве по Бейсику.

Средний уровень.

Функция 4BH более сложна, чем остальные, требуя четырех подго-
товительных шагов:

1. Подготовить в памяти место, доступное программе.
2. Создать блок параметров.
3. Построить строку, содержащую накопитель, путь и имя прог-
раммы.
4. Сохранить значения регистров SS и SP в переменных.