Дочерние процессы

Int 21h ;блока памяти

Mov ah, 49h ;освобождение

Mov ah,4Ah

Main proc

Org 100h

Text segment

Пример выделения и освобождения блока памяти

assume cs: text, ds: text, ss: text

mov sp,offset m; метка m расположена в конце программы

mov bx,(newstk – main + 10Fh)/16 ;вычисляем размер программы

int 21h; ограничение размера памяти для программы

mov bx,10h ;в bx заносим число выделяемых параграфов

mov ah,48h ;номер функции выделения памяти

int 21h ;прерывание по функции 48h

mov es,ax ;адрес блока из ax загружаем в es

mov word ptr es:[di],15h;работа с блоком

mov ax,word ptr es:[si]

m:

Программа, загружаемая в оперативную память, состоит из областей:

- окружение программы

- префикс программного сегмента

- сама программа

 

Окружение– область памяти, в которой в виде символьных строк записаны переменные окружения (загружаются из autoexec.bat). В командном процессоре command.com окружение создано самой операционной системой.

 

COMSPEC = D:DOSCOMMAND.COM

PROMT = $p $q

PATH = D: ; D:DOS ; D:UTIL

 

Окружение передается из command.com в материнскую программу, затем в дочернюю и далее, если запускаются очередные дочерние процессы. При передаче управления дочерним процессам материнская программа может дополнить передаваемое окружение.

После начала загрузки операционной системы активной программой становится командные процессор, который ждет ввода команды пользователя. Получив команду на запуск программы, command.com активизирует ее и передает ей свое окружение. Если загружаемая программа активизирует дочерний процесс следующего уровня, она еще раз копирует свое окружение, передавая его запускаемой программе.

 

Основные элементы PSP:

0Ah – 0Dh Вектор прерываний по завершению программы (INT 22h)

0Eh – 11h Прерывание, которое обрабатывается после нажатия Ctrl+C

(INT 23h)

12h – 15h Прерывание по критической ошибке (INT 24h)

2Ch – 2Dh Сегментный адрес окружения

80h – FFh «Хвост» команды, а также дисковая область передачи данных

 

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