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?

Était-ce utile?

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
scroll top