Простой способ печатать значение реестра в сборке X86

StackOverflow https://stackoverflow.com/questions/2709042

  •  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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top