Page 108 - 4875
P. 108
int 27h
ret
ends
end start
Збереження старого вектора та запис (встановлення) нового
можна здійснювати наступним чином:
mov ax, 0
mov es, ax
mov bx, nth_int ;номер переривання
mov cl, 2
shl bx, 2
mov old_int_ip, es:[bx]
mov old_int_cs, es:[bx+2]
cli
mov es:[bx], offset tsr ;tsr – мітка переходу на
код програми
обробника
mov es:[bx], es
sti
При використанні функцій DOS 25h та 35h (більш зручніший,
але менш швидкий спосіб) описана вище процедура матиме вигляд:
mov ah, 35h
mov al, nth_int ;номер переривання
int 21h
mov old_int_ip, bx
mov old_int_cs, es
mov ah, 25h
mov al, nth_int
mov dx, offset tsr ;tsr – мітка переходу на
код програми
обробника
int 21h
107