Доклад: Вирусы под Windows

Процедура перевода байта в ASCII-формат для печати. Значение,
[находящееся в регистре AL, будет записано в ASCII-формате
;по адресу ES:EDI
HexWriteS proc

; Разделяем байт на полубайты и загружаем их в регистры АН и AL
mov ah.al
and al.OFh
shr ah,4

[Добавляем 30h к каждому полубайту, чтобы регистры содержали коды
[соответствующих символов ASCII. Если число,

;записанное в полубайте, было больше 9,
;то значение в этом полубайте надо еще корректировать
or ax,3030h

.Меняем полубайты местами, чтобы регистр АН содержал младший
.полубайт, а регистр AL - старший
xchg al.ah

;Проверим. надо ли корректировать младший полубайт,
.если да - корректируем

cmp ah, 39h

ja @@4

[Проверим, надо ли корректировать старший полубайт,
;если да - корректируем
@@1:

cmp al,39h

ja @@3

;Сохраним значение по адресу ES:EDI
@@2:

stosw

ret

.Корректируем значение старшего полубайта
@@3:

sub al, 30h

add al, "A"-10

jmp @@2

[Корректируем значение младшего полубайта
@@4:

sub ah, 30h

add ah, "A"-10

jmp @@1
HexWriteS endp

[Процедура перевода слова в ASCII-формат для печати.
[Значение, находящееся в регистре АХ, будет записано
;в ASCII-формате по адресу ES:EDI
HexWrite16 proc

;Сохраним младший байт из стека
push ax

;3агрузим старший байт в регистр А1_
xchg al,ah

.Переведем старший байт в ASCII-формат
call HexWrite8

; Восстановим младший байт из стека
pop ax

Переведем младший байт в ASCII-формат

call HexWrite8

К-во Просмотров: 957
Бесплатно скачать Доклад: Вирусы под Windows