Top.Mail.Ru
Ответы

Вывод значения регистра на экран. ассемблер

Там где вопросики стоят(???) нужно вывести на экран значение регистра ax=0006 и bx=0004, подскажите пожалуста как это сделать

message1 db '3nakov: ',13,10,'$'
message2 db 'Bykvak: ',13,10,'$'
...
EXIT:
mov dx,OFFSET message1;сообщение
mov ah,9 ;вывести
int 21h ;на экран

???

mov dx,OFFSET message2;сообщение
mov ah,9 ;вывести
int 21h ;на экран

???

MOV AX, 4C00H;завершение программы
INT 21H
...

По дате
По рейтингу
Аватар пользователя
16лет

Прежде всего, необходимо преобразовать число в строку.
А вам могу дать (не самую лучшую) реализацию этого преобразования,
а дальше - вы сами.

in:
еах = 32-битное число
ebx = основание системы счисления
edi = указатель на буфер-результат
out:
заполненный буфер

NumToASCII:
pushad
xor esi,esi

convert_loop:
xor edx,edx
div ebx

call HexDigit

push edx
inc esi
test eax,eax
jnz convert_loop
cld
write_loop:
pop eax
stosb
dec esi
test esi,esi
jnz write_loop
mov byte [edi],0
popad
ret

HexDigit :
cmp dl,10
jb .less
add dl,'A'
ret
.less :
or dl,'0'
ret