"Роберт Джордайн. Справочное пособие программиста - 2 (ассемблер, операционная система MS DOS)" - читать интересную книгу автора SET_UP:
MOV DX,OFFSET ROUTINE ;смещение процедуры в DX MOV AL,70H ;номер вектора прерывания MOV AH,25H ;функция установки вектора INT 21H ;устанавливаем вектор ;---завершение программы, оставляя резидентной LEA DX,FINISH ;определяем треб. смещение INT 27H ;завершение Случай файла EXE: ~~~~~~~~~~~~~~~~~ ;---здесь резидентная процедура JMP SHORT SET_UP ;переход на установку ROUTINE PROC FAR PUSH DS ;сохранение регистров . (процедура) . POP DS ;восстановление регистров IRET ;возврат из прерывания FINISH EQU $ ;отметка конца процедуры ROUTINE ENDP ;---установка вектора прерывания MOV DX,OFFSET ROUTINE ;смещение процедуры в DX MOV AX,SEG ROUTINE ;сегмент процедуры в DS MOV DS,AX MOV AL,70H ;номер вектора прерывания MOV AH,25H ;функция установки вектора INT 21H ;установка вектора ;---завершение программы MOV DX,FINISH+100H ;вычисляем смещение конца MOV BYTE PTR ES:1,27H ;посылаем 27H в PSP RET ;завершаем процедуру Функция 31H прерывания 21H работает аналогично, за исключением того, что в DX должно содержаться число 16-байтных параграфов, требуемых процедуре (вычисление размера процедуры, начиная от начала PSP - см. в примере [1.3.1]). Преимуществом этой функции является то, что она передает родительской программе код выхода, дающий информацию о статусе процедуры. Родительская программа получает этот код с помощью функции 4DH прерывания 21H. Коды выхода обсуждаются в [7.2.5]. .h3 1.3.5 Загрузка и запуск программных оверлеев. ------------------------------------------------- |
|
|