db 'на выполнение ваш .com файл снова, ',10,13
db 'указав в командной строке после имени файла '
db 10,13,'параметр /d ',10,13
db 10,13,'( Снова вернитесь в систему, ',10,13
db 'нажав любую клавишу )',10,13,'$'
text_3 db ' Вашу резидентную программу сейчас '
db 'удалять нельзя',10,13,'$'
text_4 db 10,13,'Вы удалили вашу резидентную программу '
db 'из памяти ',10,13
db 10,13,'( Вернитесь в систему, нажав '
db 'любую клавишу )',10,13,'$'
err_msg db 10,13,' Ошибка'
db ,10,13,' ( Нажмите любую клавишу )'
db 10,13,'$'
;----------------------------------------
res_is db 'o'
pause_const equ 0777h ; 19
proc pause far
push cx
mov cx,pause_const
ploop0:
push cx
ploop1:
loop ploop1
pop cx
loop ploop0
pop cx
ret
endp pause
border proc far
sti
push ax bx cx dx si di ds es
pushf
call old_4h
mov cx, 11
lable:
mov dx,3dah
in al,dx
mov al,11h
mov dx,3c0h
out dx,al
mov al,cl
out dx,al
mov al,20h
out dx,al
call pause
loop lable
mov dx,3dah
in al,dx
mov al,11h
mov dx,3c0h
out dx,al
mov al,cl
out dx,al
mov al,20h
out dx,al
q:
POP es ds di si dx cx bx ax
iret
border endp
;-------------------------------------
init:
push es
mov ah,35h
mov al,04h
int 21h
mov al,byte ptr es:[bx-1]
cmp byte ptr es:res_is,al
jz already
pop es
lea dx,border
mov word ptr adr_res,dx
mov word ptr adr_res+2,cs
; Перепрограммируем вектор 4h
assume ds:int_tab
push ds
mov ax,int_tab
mov ds,ax
cli
; В качестве "старого" запоминаем текущее
mov ax,word ptr vect_4h
mov word ptr old_4h,ax
mov ax,word ptr vect_4h+2
mov word ptr old_4h+2,AX
mov word ptr vect_4h,offset border
mov word ptr vect_4h+2,cs
sti
pop ds
mov ah,09h
lea dx,text_1
int 21h
mov ah,08h
int 21h
mov dx,offset init
inc dx
int 27h
;======================================
already:
pop es
xor ax,ax
mov al,es:80h
mov si,ax
mov al,es:[80h+si]
cmp al,'d'
je delet
jmp povtor
delet:
push es
mov ah,35h
mov al,04h
int 21h
mov ax,es
push ds
lds dx,es:adr_res
mov cx,ds
pop ds
cmp dx,bx
jnz no_delete
cmp ax,cx
jnz no_delete
;-------------------------------------
cli
push ds
mov ah,25h
mov al,04h
lds dx,es:old_4h
int 21h
pop ds
sti
mov ah,49h
int 21h
jc err_49h
pop es
mov ah,09h
lea dx,text_4
int 21h
mov ah,08h
int 21h
jmp quit
;======================================
povtor:
mov ah,09h
lea dx,text_2
int 21h
mov ah,08h
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.