9 Bit binär in ASCII

OP #4354024
Lesenswert?
• ▲
▼
Hier Beitrag "8 Bit binär zu ASCII"
hat Peter Danegger seine wirklich extrem kurze Routine vorgestellt.
Nun, ich brauchte sie bis über 255 hinaus bis max. 999

Ich hätte ja auch BIN2BCD nehmen können und dann in ASCII wandeln 
können.
Aber peda's Routine ist so Spitze, dass ich sie als Basis genommen habe 
und damit Respekt ausdrücken möchte.
1
;********fast 8bit_in_ASCII *** max 999dez ****************
2
;input:  wo_lo,wo_hi = 16 bit Wert, 
3
;output: ASCII-digits wie von peda
4
;RX6=  Hunderter
5
;RX5=  Zehner
6
;RX4=  Einer
7
.def   wo_hi  = r29
8
.def   wo_lo  = r28
9
.equ  _100 = 0x0064
10

11
byte_asc: 
12
        ldi    RX6, -1 + '0'  ;gleich in ASCII , -1 wegen 1.inc RX6
13
_bcd1:  inc    RX6          
14
        subi   wo_lo, low(_100)  ;subi 100, in 16 bit
15
  sbci   wo_hi, high(_100)  
16
  brcc   _bcd1    ;so die Hunderter stimmen
17
              ;Rest ist minus, darum müssen die Zehner
18
        ldi     RX5, 10 + '0'  ;von 10 runtergezählt werden, bis Rest
19
_bcd2:  dec     RX5    ;wieder pos. wird, was die Einer sind
20
        subi    wo_lo, -10  ;also addiere 10 auf, wo_hi ist schon NULL 
21
        brcs    _bcd2
22
        sbci    wo_lo, -'0'  ;Einer nach ASCII wandeln
23
  mov  RX4,wo_lo  ;und nach RX4 bringen
24
        ret

Bei Nutzung von fertigen Routinen wäre die Vorbereitung länger als der 
Code oberhalb.
LG Rudi

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren