384 Приложение
call Print ; 'Файл '
lea bx,NameFE
add bx,LName
add bx,3 ;BX - смещение нуля в конце имени
mov Mem,bx ;Сохраняем в Mem
mov ah,24h ,-Помещаем '$' в конец имени
mov [bx],ah
lea dx,NameFE
call Print ; Выводим имя файла
mov bx,Mem ;Восстанавливаем
mov ah,0 ;ноль в конце имени
mov [bx] ,ah
lea dx,Txt2
call Print ; ' заражен вирусом!' ; Проверяем расположение вируса
mov ax,Word ptr [Buffer+l6h]
cmp ax,Word ptr [Head+16h]
ja Delete /Вирус в конце файла
; Вирус в начале файла. Сообщаем и завершаем работу
lea dx,Txt21
call Print
mov ah, 1
int 21h ;Ждем реакцию пользователя
lea dx,TxtO
call Print ;EOL
jmp Exit ;3ааершаем работу
; Вирус в конце файла DELETE:
lea dx,Txt22
call Print ;Спрашиваем пользователя ; Вводим ответ пользователя
mov ah,1
int 21h
push ax
lea dx,TxtO
call Print ; EOL
pop ax
cmp al,'N'
je ExitP ;Выходим, если ответ 'N'
cmp al, 'n' ; Сравниваем с 'п'
EXITP: ret
Print PROC NEAR
; Выводим на экран текстовую строку ; При входе DX - смещение строки mov ah, 9
int 21h ret
NewFile PROC NEAR
; Подготавливаем имена $V$ и VIR-файлов ; и создаем $У$-файл
В процедуре NewFile подготавливаются имена файлов с расширениями $V$ и VJR: в файл с расширением $V$ помещается восстановленная копия файла, расширение VIR писваивается зараженной копии.
lea di,NameF$
lea bx,ext$
call CopyName -Имя $У$-файла
lea di,NameFV