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
   103   104   105   106   107   108   109   110   111   112   113