| Справочник программиста на персональном компьютере фирмы IBM | 58 |
требуется для прерывания 27H. Для EXE файлов смещение отсчиты-
вается от первого байта, следующего за PSP, поэтому к нему необ-
ходимо прибавить 100H, чтобы пересчитать на начало PSP. Заметим,
что поместив процедуру в начало программы, мы можем исключить
установочную часть кода из резидентной порции. Другой возможный
фокус состоит в использовании инструкции MOVSB для пересылки кода
процедуры вниз в неиспользуемую часть PSP, начиная со смещения
60H, что освобождает 160 байт памяти.
Случай файла COM:
;-здесь процедура прерывания
BEGIN: JMP SHORT SET_UP ;переход на установку
ROUTINE PROC FAR
PUSH DS ;сохранение регистров
.
(процедура)
.
POP DS ;восстановление регистров
IRET ;возврат из прерывания
FINISH EQU $ ;отметка конца процедуры
ROUTINE ENDP
;-установка вектора прерывания
SET_UP: MOV DX,OFFSET ROUTINE ;смещение процедуры в DX
MOV AL,70H ;номер вектора прерывания
MOV AH,25H ;функция установки вектора
INT 21H ;устанавливаем вектор
;-завершение программы, оставляя резидентной
LEA DX,FINISH ;определяем треб. смещение
Предыдущая страница 58 Следующая страница
1452257524
|