Une façon simple d'imprimer la valeur d'un registre dans l'ensemble x86
-
01-10-2019 - |
Question
Je dois écrire un programme 8086 Assemblée qui reçoit des données de l'utilisateur, fait quelques calculs mathématiques et imprime la réponse à l'écran, je l'ai écrit toutes les parties du programme et tous fonctionnent très bien, mais je ne sais pas comment d'imprimer le numéro à l'écran.
A la fin de tout mon calcul, la réponse est AX et il est traité comme un entier de 16 bits non signé. Comment puis-je imprimer la décimale (non signé) la valeur du registre AX?
La solution
vous pouvez utiliser la fonction C-bibliothèque itoa, Sa mise en œuvre est pas difficile, vous faites basiquement:
while (x){
buff[n]==x % 10;
x/=10;
n++;
}
et ensuite inverser le tampon (ou l'impression de caractères en arrière-sage)
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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow