Пример 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 ?

