Page 113 - 4875
P. 113

$ cs:  /* на стару адресу переривання */
                             $ call far OldVectAddr
                             $ push ax                               /* зберігання значень всіх
                           */
                             $ push bx                               /* регістрів, які будуть */
                             $ push cx                               /* використовуватись
                           програмою */

                                  Ξ                                  /*текст резидентної
                           частини програми*/

                             $ pop cx                                /* поновлення попередніх
                           значень */
                             $ pop bx                                /* в регістрах (задаються в
                           */
                             $ pop ax                                /* дзеркальному порядку)
                           */
                           }
                           main()
                           {
                           GETINTVECT (#OldVectAddr,…);              /*Замість … вказати номер
                                                                     переривання    апаратного
                                                                     засобу */
                           SETINTVECT(,…,cs,#NewProg);               /* Установка нового
                           вектору */
                           @ KEEP(,,,#main+1);                       /*Залишити програму
                           резидентною*/
                           }

                                  Видалення (вигрузка) резидентної програми з пам’яті

                                  В  багатьох  випадках  виникає  необхідність  коректного
                           вивільнення  пам’яті  після  вигризки  (завершення  роботи)  резидентної
                           програми. Традиційно використовують два варіанти такої операції:
                                  1  Ґрунтується  на  повторному  запуску  резидентної
                                     програми зі спеціальним ключем. Після чого ініціалізуюча
















                                                           112
   108   109   110   111   112   113   114   115   116   117   118