Системное программное обеспечение. Рощин А.В. - 129 стр.

UptoLike

Составители: 

129
cmp al,'/'
jnz cmd2 ; Не ключ
cmp byte ptr [bx+1] ,'u'
jnz cmd2 ; Не u
; Освобождение блока памяти
; Проверка загруженности
mov ax,0ff00h
int 2fh
cmp ax,0ffh
jz uninst ; Программа в памяти
lea dx,msgno ; Вывод сообщения о том,
mov ah,9 ; что программы нет в памяти
int 21h
int 20h
uninst: call set_int ; Восстановление векторов прерываний
int 20h
cmd1: inc bx
loop cmd
cmd2: mov ax,0ff00h ; Проверка загруженности
int 2fh
cmp ax,0ffh
jnz first_start ; Не установлена
lea dx,msg ; Вывод сообщения о том,
mov ah,9 ; что драйвер уже загружен
int 21h
int 20h
first_start: mov ax,3505h ; Сохранение старого вектора прерывания 5
int 21h
mov cs:old_int5_off,bx
mov cs:old_int5_seg,es
mov ax,2505h ; Функция 25h,
вектор 5
lea dx,new_int5
int 21h ; Запись нового вектора 5
mov ax,352fh ; Сохранение старого вектора прерывания 2Fh
int 21h
mov cs:old_int2F_off,bx
mov cs:old_int2F_seg,es
lea dx,new_int2F ; Запись нового вектора прерывания 2Fh
mov ax,252fh
int 21h
mov ax,351ch ; Сохранение старого вектора прерывания 8
int 21h
mov cs:old_int8_off,bx
mov cs:old_int8_seg,es
lea dx,new_int8 ; Запись нового вектора прерывания 8
mov ax,251ch
                                       129



        cmp al,'/'
        jnz  cmd2                 ; Не ключ
        cmp byte ptr [bx+1]       ,'u'
        jnz  cmd2                 ; Не u
; Освобождение блока памяти
; Проверка загруженности
        mov ax,0ff00h
        int  2fh
        cmp ax,0ffh
        jz   uninst ; Программа в памяти
        lea  dx,msgno      ; Вывод сообщения о том,
        mov ah,9           ; что программы нет в памяти
        int  21h
        int  20h
uninst: call set_int       ; Восстановление векторов прерываний
        int  20h
cmd1: inc    bx
        loop cmd
cmd2: mov ax,0ff00h        ; Проверка загруженности
        int  2fh
        cmp ax,0ffh
        jnz  first_start   ; Не установлена
        lea  dx,msg        ; Вывод сообщения о том,
        mov ah,9           ; что драйвер уже загружен
        int  21h
        int  20h
first_start: mov ax,3505h ; Сохранение старого вектора прерывания 5
             int     21h
             mov cs:old_int5_off,bx
             mov cs:old_int5_seg,es
             mov ax,2505h                ; Функция 25h, вектор 5
             lea     dx,new_int5
             int     21h                 ; Запись нового вектора 5
             mov ax,352fh ; Сохранение старого вектора прерывания 2Fh
             int     21h
             mov cs:old_int2F_off,bx
             mov cs:old_int2F_seg,es
             lea     dx,new_int2F        ; Запись нового вектора прерывания 2Fh
             mov ax,252fh
             int     21h
             mov ax,351ch ; Сохранение старого вектора прерывания 8
             int     21h
             mov cs:old_int8_off,bx
             mov cs:old_int8_seg,es
             lea     dx,new_int8         ; Запись нового вектора прерывания 8
             mov ax,251ch