Forum: Mikrocontroller und Digitale Elektronik Umwandlung von Byte oder Int nach String in ASM??


von Sebastian (Gast)


Lesenswert?

Wie kann man möglichst kompakt den byte-wert eines registers in die
entsprechenden ASCII zeichen umwandeln??

von Matthias (Gast)


Lesenswert?

du müsstest einfach nur zählen, wieviel mal du 100 abziehen kannst ohne
"Unterlauf", dann wieviel mal du 10 abziehen kannst ohne
"Unterlauf" und der Rest sind die Einer. Jetzt hast du die Bytezahl
in die max. drei Ziffern zerlegt und musst nur noch zu jeder den ASCII-
Offset (32 glaub ich) dazuaddieren.

von Matthias (Gast)


Lesenswert?

vorher kannst du noch vergleichen ob du eine Zahl mit einer, zwei oder
drei Ziffern hast, um dann einiges zu überspringen.

von Gerhard Gunzelmann (Gast)


Lesenswert?

Hallo

eine Ascii Umwandlung kann man so durchführen:

1. Aufsplitten in low-nibble und high-nibble
2. ist der low-nibble < 10, dann hex30 addieren, sonst hex37 addieren
3. high-nibble 4 Bit rechtsschieben, dann wie 2.

Gerhard

von Thomas (Gast)


Lesenswert?

Hallo,
also über das Auteilen in Low- und High Nibble ließe sich das sicher
kürzer schreiben, aber ich habe das mal so gemacht:

; *** Binär nach ASCII-Wandlung -> Hunderter: R0, Zehner: R1, Einer:
R2
bin_ascii:
  mov   r0, #0      ; Rücksetzen der Register
  mov   r1, #0
  mov  r2, #0
  mov   a, r5
        jz  fertig      ; Wert im Akku = 0 -> Fertig
  mov  b, #10      ; Divisor 10 in das B-Register
  div   ab
  mov   r2, b      ; Rest in R2 ablegen (Einer)
  jz  fertig      ; Wert im Akku = 0 -> Fertig
  mov  b, #10      ; Divisor 10 in das B-Register
  div   ab
  mov  r1, b      ; Rest in R1 ablegen (Zehner)
  jz  fertig      ; Wert im Akku = 0 -> Fertig
  mov  b, #10
  div  ab
  mov  r0, b      ; Rest in R0 ablegen (Hunderter)
fertig:
  mov   a, r0      ; generieren
  add  a, #30H      ; der ASCII-Zeichen
  mov  r0, a      ; 0 = ASCII 48, 1 = ASCII 49 usw.
  mov   a, r1
  add  a, #30H
  mov  r1, a
  mov   a, r2
  add  a, #30H
  mov  r2, a
  ret

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.