Пример 1 ; Процедура определения адреса обработчика ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; Выход: dx:ax - адрес обработчика Int 21h ; PROC Get_address mov ax,352Ah ; Считываем адрес int 21h ; обработчика 21h прерывания. push es bx mov ah,25h mov dx,OFFSET Int2A ; Устанавливаем int 21h ; свой обработчик pop dx ds ; Восстанавливаем int 21h ; стандартный обработчик les di,cs:Vector ; Отсюда вызвали Int 2Ah mov al,0EBh ; Код команды jmp short mov cx,di std repne scasb ; Ищем начало repne scasb ; обработчика Int 21h lea ax,[di+3] mov dx,es ret Int2Ah: push bp mov bp,sp push es les bp,[bp+2] mov WORD PTR cs:Vector,bp mov WORD PTR cs:Vector+2,es pop es,bp iret ENDP Vector DD ? Пример 1 ; Процедура определения адреса обработчика ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; Выход: dx:ax - адрес обработчика Int 21h ; PROC Get_address mov ax,352Ah ; Считываем адрес int 21h ; обработчика 21h прерывания. push es bx mov ah,25h mov dx,OFFSET Int2A ; Устанавливаем int 21h ; свой обработчик pop dx ds ; Восстанавливаем int 21h ; стандартный обработчик les di,cs:Vector ; Отсюда вызвали Int 2Ah mov al,0EBh ; Код команды jmp short mov cx,di std repne scasb ; Ищем начало repne scasb ; обработчика Int 21h lea ax,[di+3] mov dx,es ret Int2Ah: push bp mov bp,sp push es les bp,[bp+2] mov WORD PTR cs:Vector,bp mov WORD PTR cs:Vector+2,es pop es,bp iret ENDP Vector DD ?