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

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



    BX содержит требуемый размер блока в 16-байтных параграфах.
    Для определения этого размера поместите добавочный "искуственный"
    сегмент в конец программы. В макроасссемблере IBM PC сегменты
    располагаются в алфавитном порядке, поэтому Вы можете поместить
    его в любое место программы, при условии, что его имя это что-то
    вроде "ZSEG". В других ассемблерах действительно помещайте фик-
    тивный сегмент в конец программы. Программа может прочитать пози-
    цию этого сегмента и, сравнивая ее со стартовым сегментом, полу-
    чить количество памяти, требуемое самой программе. В момент заг-
    рузки программы и ES и DS содержат номер параграфа самого начала
    программы в префиксе программного сегмента; для COM файлов CS
    также указывает на эту позицию, но для EXE файлов это не так.
    ;-освобождение памяти (ES имеет значение при старте)
    MOV BX,ZSEG ;получаем # параграфа конца программы + 1
    MOV AX,ES ;получаем # параграфа начала программы
    SUB BX,AX ;вычисляем размер программы в параграфах
    MOV AH,4AH ;номер функции
    INT 21H ;освобождаем память
    JC MEMORY_ERROR ;проверяем на ошибку
    ;-
    ZSEG SEGMENT
    ZSEG ENDS
    1.3.2 Запуск одной программы из другой.
    MS DOS обеспечивает функцию EXEC (номер 4BH прерывания 21H),
    реализующую вызов одной программы из другой. Первая программа
    называется "родителем", а загружаемая и запускаемая - "потомком".
    Высокий уровень.

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




1745809908