Domanda

Ho bisogno di scrivere un programma in 8086 Assemblea che riceve i dati da parte dell'utente, fa alcuni calcoli matematici e stampa la risposta sullo schermo, ho scritto tutte le parti del programma e tutte funzionano bene, ma io non so come per stampare il numero sullo schermo.

Alla fine di tutta la mia calcoli la risposta è AX ed è trattato come un unsigned a 16 bit integer. Come faccio a stampare il valore di decimale (senza segno) del registro AX?

È stato utile?

Soluzione

è possibile utilizzare il C-libreria di funzioni itoa, attuando non è così difficile, basicaly, si fa:

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

e poi invertire il buffer (o all'indietro carattere-saggio di stampa)

print_number void (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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top