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

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



    кивает из стека первые положенные туда значения: PUSH DX / MOV
    AX,0 / PUSH AX. Поскольку DS первоначально указывает на начало
    PSP, то при получении этих значений из стека счетчик команд ука-
    зывает на смещение 0 в PSP, где при инициализации записывается
    инструкция INT 20H. Поэтому INT 20H выполняется, а это стандарт-
    ная функция для завершения программы и передачи управления в DOS.
    На рис. 1-5 показан этот процесс. Чтобы заставить прерывание 27H
    работать в EXE программе надо поместить 27H во второй байт PSP
    (первый содержит машинный код инструкции INT), а затем завершить
    программу обычным RET. Для обоих типов файлов прежде чем выпол-
    нить прерывание 27H, DX должен содержать смещение конца програм-
    мы, отсчитываемое от начала PSP.
    Средний уровень.
    Вектор прерывания устанавливается с помощью функции 25H преры-
    вания 21H, как показано в [1.2.3] (здесь используется вектор
    70H). Позаботьтесь, чтобы процедура оканчивалась IRET. Кроме
    самой процедуры, устанавливаемая программа не должна делать ниче-
    го, кроме инициализации вектора прерывания, присвоения DX значе-
    ния смещения конца процедуры и завершения. Для COM файлов просто
    поместите оператор INT 27H в конец программы. Для EXE файлов
    поместите этот оператор в первое слово PSP и завершите программу
    обычным оператором RET. Для того чтобы выполнить процедуру, впос-
    ледствии загруженная программа должна вызвать INT 70H.
    Приведены примеры для обоих типов файлов (COM и EXE). В обоих
    установлена метка FINISH для отметки конца процедуры прерывания
    (напоминаем, что знак $ дает значение счетчика команд в этой
    точке). Для COM файлов FINISH дает смещение от начала PSP, как и

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




701830140