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