Простой способ печатать значение реестра в сборке X86
-
01-10-2019 - |
Вопрос
Мне нужно написать программу в 8086 сборке, которая получает данные от пользователя, делает некоторые математические расчеты и печатает ответ на экране, я написал все части программы и все отлично работает, но я не знаю, как распечатать номер на экран.
В конце всего моего расчета ответа является топор, и он рассматривается как неподписанный 16 бит целое число. Как распечатать десятичное (без знака) значение записи AX?
Решение
Вы можете использовать функцию C-библиотеки ITOA, реализующуюся не так сложно, в основном, вы делаете:
while (x){
buff[n]==x % 10;
x/=10;
n++;
}
а затем перевернуть буфер (или печатать персонаж-мудрый обратно)
void print_number (int x);
print_number:
buff db 15 dup(0)
mov ax,[esp+4]
mov bx,0
itoa_w1:
mov cx, ax
mod cx,10
add cx,30h;'0'
div ax,10
mov buff[bx],cl
cmp ax,0
jnz itoa_w1
itoa_w2:
push buff[bx]
call putchar
pop ax
cmp bx,0
jnz itoa_w2
ret
Не связан с StackOverflow