"Роберт Джордайн. Справочное пособие программиста - 2 (ассемблер, операционная система MS DOS)" - читать интересную книгу автораПоскольку при загрузке программы MS DOS выделяет ей всю дос- тупную память, то необходимо освободить место в памяти. Если не освободить часть памяти, то не будет места для загрузки второй программы. В [1.3.1] объяснено как это сделать с помощью функции SETBLOCK. После того как память освобождена, Вы должны просто поместить в BX требуемое число 16-байтных параграфов, заслать 4AH в AH и выполнить прерывание 21H, делая доступным программе именно то число параграфов, которое ей требуется. Блок параметров, на который должны указывать ES:BX это 14-байтный блок блок памяти, в который Вы должны поместить сле- дующую информацию: DW сегментный адрес строки среды DD сегмент и смещение командной строки DD сегмент и смещение первого FCB DD сегмент и смещение второго FCB Строка среды - это строка, состоящая из одной или более специ- фикаций, которым следует MS DOS при выполнении программы. Элемен- ты строки среды такие же, как и те, что можно обнаружить в диско- вом файле CONFIG.SYS. Например, в строку может быть помещено VERIFY = ON. Просто начните строку с первого элемента, завершив его 0, потом запишите следующий и т.д. За последним элементом должны следовать два 0. Строка должна начинаться на границе Это вызвано тем, что соответствующий вход в блоке параметров, указывающий на строку, содержит только 2-байтное сегментное зна- чение. Все это не нужно, если новая программа может работать с той же строкой среды, что и программа "родитель". В этом случае надо просто поместить два символа 0 в первые 2 байта блока пара- метров. Следующие 4 байта блока параметров указывают на командную строку для загружаемой программы. "Командная строка" - это сим- вольная строка, определяющая способ работы программы. При загруз- ке программы из DOS она может иметь вид вроде EDITOR A:CHAPTER1\NOTES.MS. При этом вызывается редактор и ему передается имя файла в подкаталоге накопителя A для немедленного открытия. Когда Вы подготавливаете командную строку для EXEC, то надо включать только последнюю часть информации, но не имя загружа- емой программы.(т.е. A:CHAPTER1\NOTES.MS) Перед командной строкой должен стоять байт, содержащий длину этой строки, и она должна завершаться символом <ВК> (ASCII 13). Последние 8 байтов блока параметров указывают на управляющие блоки файлов (FCB). FCB содержит информацию об одном или двух файлах, указанных в командной строке. Если открываемых файлов нет, то надо заполнить все 8 байт символом ASCII 0. В [5.3.5] объяснено, как работает FCB. Начиная с версии MS DOS 2.0, исполь- зование FCB необязательно и Вы можете не включать информацию FCB, вместо этого используя новую конвенцию дескриптора файлов (file |
|
|