mov r6, #low(60900) mov r7, #high(60900) call bcd mov r6, #low(09090) mov r7, #high(09090) call bcd mov r6, #low(12345) mov r7, #high(12345) call bcd jmp $ ;input: R7, R6 = 16 bit value 0 ... 65535 ;output: R7, R6, R5, R4, R3 = digits ;cycle: 37 .. 220 ;bytes: 44 ; bcd: mov a, r7 mov r3, a mov a, r6 mov r7, #-1 ?bcd1: inc r7 add a, #low(-10000) xch a, r3 addc a, #high(-10000) xch a, r3 jc ?bcd1 mov r6, #10 ?bcd2: dec r6 add a, #low(1000) xch a, r3 addc a, #high(1000) xch a, r3 jnc ?bcd2 mov r5, #-1 inc r3 ?bcd3: inc r5 add a, #low(-100) jc ?bcd3 djnz r3, ?bcd3 mov r4, #10 ?bcd4: dec r4 add a, #10 jnc ?bcd4 mov r3, a ret end