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

UptoLike

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

130
int 21h
mov ah,34h ; Запись указателя на флаг критической секции DOS
int 21h
mov word ptr _crit,bx
mov word ptr _crit[2],es
; Определение адреса видеобуфера
mov ah,0fh ; Функция получения видеорежима
int 10h
cmp al,7
jz ini1
mov vbuf,0b800h
ini1: lea dx,msg2
mov ah,9
int 21h
; Завершение программы с оставлением резидентной части в памяти
mov dx,(ressize+10fh)/16
mov ax,3100h
int 21h
init endp
set_int proc near
mov ax,3505h
int 21h ; ES – сегментный адрес PSP резидента
mov adr_psp,es
; Восстановление старого вектора 2Fh
push ds
mov dx,es:old_int2F_off
mov ax,es:old_int2F_seg
mov ds,ax
mov ax,252fh ; Установка старого вектора 2Fh
int 21h
mov dx,es:old_int8_off
mov ax,es:old_int8_seg
mov ds,ax
mov ax,251ch ; Установка старого вектора 8
int 21h
mov dx,es:old_int5_off
mov ax,es:old_int5_seg
mov ds,ax
mov ax,2505h ; Установка старого вектора 5
int 21h
pop ds
mov ah,9
lea dx,msg1
int 21h
mov es,adr_psp
mov ah,49h ; Освобождение памяти
                                   130



            int   21h
            mov ah,34h ; Запись указателя на флаг критической секции DOS
            int   21h
            mov word ptr _crit,bx
            mov word ptr _crit[2],es
; Определение адреса видеобуфера
            mov ah,0fh        ; Функция получения видеорежима
            int   10h
            cmp al,7
            jz    ini1
            mov vbuf,0b800h
ini1:       lea   dx,msg2
            mov ah,9
            int   21h
; Завершение программы с оставлением резидентной части в памяти
            mov dx,(ressize+10fh)/16
            mov ax,3100h
            int   21h
init        endp
set_int     proc near
            mov ax,3505h
            int   21h ; ES – сегментный адрес PSP резидента
            mov adr_psp,es
; Восстановление старого вектора 2Fh
            push ds
            mov dx,es:old_int2F_off
            mov ax,es:old_int2F_seg
            mov ds,ax
            mov ax,252fh      ; Установка старого вектора 2Fh
            int   21h
            mov dx,es:old_int8_off
            mov ax,es:old_int8_seg
            mov ds,ax
            mov ax,251ch      ; Установка старого вектора 8
            int   21h
            mov dx,es:old_int5_off
            mov ax,es:old_int5_seg
            mov ds,ax
            mov ax,2505h      ; Установка старого вектора 5
            int   21h
            pop ds
            mov ah,9
            lea   dx,msg1
            int   21h
            mov es,adr_psp
            mov ah,49h        ; Освобождение памяти