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.