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

53Робер Журден



    мой задачей, то надо сохранить сегмент стека и указатель стека, с
    тем чтобы они могли быть восстановлены, когда управление будет
    возвращено вызвавшей задаче. Для их сохранения создайте перемен-
    ные. Поскольку значение регистра DS также будет изменено, то эти
    переменные не могут быть найдены, до тех пор пока не будут повто-
    рены операторы MOV AX,DSEG и MOV DS,AX. После того как SS и SP
    сохранены, поместите 0 в AL, для выбора операции "загрузка и
    запуск" (EXEC используется также для оверлеев [1.3.5]). Затем
    поместите 4AH в AH и вызовите прерывание 21H. В этот момент запу-
    щены две программы, причем программа "родитель" находится в оста-
    новленном состоянии. MS DOS предоставляет возможность программе
    потомку передать родителю код возврата, таким образом могут быть
    переданы ошибки и статус. В [7.2.5] объяснено как это сделать.
    Что касается самой функции запуска, то при возникновении ошибки
    устанавливается флаг переноса, а регистр AX в этом случае будет
    возвращать 1 - для неправильного номера функции, 2 - если файл не
    найден, 5 - при дисковой ошибке, 8 - при нехватке памяти, 10 -
    если неправильна строка среды и 11 - если неверен формат.
    Приводимый пример - простейший из возможных, но часто больше
    ничего и не надо. Здесь оставлен нулевым блок параметров и не
    создана строка среды. Это означает, что загружаемой программе не
    будет передаваться командная строка и что среда будет такой же,
    как и для вызывающей программы. Вы должны только изменить распре-
    деление памяти, создать имя и (пустой) блок параметров и сохра-
    нить значения SS и SP.
    ;-в сегменте данных
    FILENAME DB 'A:TRIAL.EXE',0 ;загружаем TRIAL.EXE

Предыдущая страница    53    Следующая страница




1255164254