Atmel AVR Microcontroller Radix Conversions

16bit to ASCII HexDecimal via output routine by http://elm-chan.org

;-----------------------------------------------------------------------------;
; Universal hexdecimal string conversion (8/16/32 bit)
;
; Register Variables:
;  Call:   var3:0 = 8/16/24/32 bit value to be converted
;
;  Result: var3:0 = <Unknown>
;
; Size:  23 words
; Clock: depends on output routine
; Stack: 2 (+output routine)

mk_h32:         push     var0
                mov      var0, var3
                 rcall   mk_h08
                pop      var0
mk_h24:         push     var0
                mov      var0, var2
                 rcall   mk_h08
                pop      var0
mk_h16:         push     var0
                mov      var0, var1
                 rcall   mk_h08
                pop      var0
mk_h08:         push     var0
                swap     var0
                 rcall   PC+2
                pop      var0
                andi     var0,0x0f
                cpi      var0,10
                brcs     PC+2
                subi     var0,-7
                subi     var0,-'0'
                 rcall   xmit
                ret