;dual2bcd Umwandlung r16 dual nach dezimal in r17 und r16 dual2bcd: push r15 ;Hilfsregister retten ;clr r17 ;Hunderte löschen ;ADIW r17, 0x30 subi r17,0xd0 dual2bcd1: cpi r16,100 ;Hunderteprobe brlo dual2bcd2 ;dual<100 fertig subi r16,100 ;dual>=100 abziehen inc r17 ;Hunderte zählen rjmp dual2bcd1 ;bis dual<100 dual2bcd2: clr r15 ;zehner löschen ; ADIW r15, 0x30 ; subi r15,0xd0 dual2bcd3: cpi r16,10 ;zehner probe brlo dual2bcd4 ;dual<10 fertig subi r16,10 ;dual>=10 abziehen inc r15 ;zehner zählen rjmp dual2bcd3 ;bis dual<10 dual2bcd4: ;swap r15 ;r15=zehner 0000 ;or r16,r15 ;r16<-Zehner Einer ; ADIW r16, 0x30 subi r16,0xd0 pop r15 ;Hilfsregister zurück ; subi r16,-$30 ;in ASCII umwandeln ret