Frage

Ich brauche ein Programm in 8086 Assembly zu schreiben, die Daten aus dem Benutzer empfängt, hat einige mathematischen Berechnungen und druckt die Antwort auf dem Bildschirm, habe ich alle Teile des Programms geschrieben und alle Arbeiten gut, aber ich weiß nicht, wie die Zahl auf dem Bildschirm zu drucken.

Am Ende aller meiner Berechnung ist die Antwort AX und es wird als ein unsigned 16-Bit-Integer behandelt. Wie kann ich das Dezimalsystem (unsigned) Wert des AX-Registers drucken?

War es hilfreich?

Lösung

Sie die C-Library-Funktion itoa nutzen könnten, Umsetzung es nicht so schwer, basicaly ist, was Sie tun:

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

und dann invertieren die Puffer (oder Druckzeichenweise rückwärts)

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top