From: Scott Dattalo
W_to_ascii: mov bin, W ;added clr hundreds mov W, <>bin ;w = A0*16+A1 add W, bin ;w = A0+A1 and W, #00001111b ;w = A0+A1 % 16 mov tens_and_ones, W ;tens_and_ones = A0+A1 % 16 mov W, #$16 snb DC ;if A0+A1 > 16 add tens_and_ones, W ; tens_and_ones += 16 mov W, #$06 snb DC ;if tens_and_ones % 16 > 10 add tens_and_ones, W ; tens_and_ones += 6 add tens_and_ones, W ;tens_and_ones += 6 sb DC ;if tens_and_ones < 10 sub tens_and_ones, W ; tens_and_ones -= 6 mov W, #$16 - 1 + $6 snb bin.4 add tens_and_ones, W mov W, #-$06 sb DC add tens_and_ones, W mov W, #$30 snb bin.5 add tens_and_ones, W mov W, #$20 snb bin.7 add tens_and_ones, W mov W, #$60 snb bin.6 add tens_and_ones, W add tens_and_ones, W rl hundreds sb hundreds.0 sub tens_and_ones, W snb bin.7 inc hundreds ;added (from here to bottom) mov W, hundreds ; or W, #$30 ;convert to ascii call send_lcd ;hundreds to LCD mov W, <>tens_and_ones and W, #$0f or W, #$30 ;always less than 0x0A call send_lcd ;tens to LCD mov W, tens_and_ones and W, #$0f or W, #$30 add W, Hack call send_lcd ;ones to LCD ret