Wie kann man möglichst kompakt den byte-wert eines registers in die entsprechenden ASCII zeichen umwandeln??
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.
vorher kannst du noch vergleichen ob du eine Zahl mit einer, zwei oder drei Ziffern hast, um dann einiges zu überspringen.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.