Pregunta

Tengo que escribir un programa en 8086 Asamblea que recibe los datos del usuario, hace algunos cálculos matemáticos e imprime la respuesta en la pantalla, he escrito todas las partes del programa y todos funcionan bien, pero no sé cómo para imprimir el número en la pantalla.

Al final de todo mi cálculo de la respuesta es AX y se trata como un entero sin signo de 16 bits. ¿Cómo se imprime el valor decimal (sin firmar) del registro AX?

¿Fue útil?

Solución

se puede utilizar la función de itoa C-biblioteca, implementando no es tan difícil, basicamente, lo hace:

while (x){
    buff[n]==x % 10;
    x/=10;
    n++;
}

y luego invertir el tampón (o al revés caracteres de impresión inteligente)

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top