Gast
#97187
Wie kann man möglichst kompakt den byte-wert eines registers in die entsprechenden ASCII zeichen umwandeln??
|
Anzeige
|
Umwandlung von Byte oder Int nach String in ASM??
Gast
#97187
Wie kann man möglichst kompakt den byte-wert eines registers in die entsprechenden ASCII zeichen umwandeln??
Gast
#97188
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.
Gast
#97189
vorher kannst du noch vergleichen ob du eine Zahl mit einer, zwei oder drei Ziffern hast, um dann einiges zu überspringen.
Gast
#97190
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
Gast
#97191
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
Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|