modo semplice per stampare il valore di un registro nel X 86 di assemblaggio
-
01-10-2019 - |
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?
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