Hmmm... I was thinking about the problem of converting a byte into two character bytes suitable for displaying them. I was thinking that because '0' ASCII is 0x030, I should be able to come up with a better routine. This is what I came up with, it only uses six instructions for each conversion (the other code I posted required 10 instructions) and no intermediate temporary file register. The only disadvantage I can see to the code is that it will not work in a low-end device. Does anybody see any problems with the routine below or a better way to do it? myke DispHex ; Simplified Hex Output Subroutine ; Output the contents of "w" as two ASCII ; Bytes. movwf Temp ; Store the Value to be Displayed swapf Temp, w ; Convert the High Nybble First andlw 0x00F addlw '0' + 6 ; Is it too Large for '0' to '9'? btfsc STATUS, DC addlw 'A' - ( '0' + 10 ) ; Yes, Make it "A" to "F" addlw 0 - 6 ; Convert Back to Valid Number ; call LCDCHAR movf Temp, w ; Repeat for the Lower Nybble andlw 0x00F addlw '0' + 6 btfsc STATUS, DC addlw 'A' - ( '0' + 10 ) addlw 0 - 6 ; call LCDCHAR return Opus: There's a 465 pound woman pruning her azelias while wearing a pink stretch bodysuit. 911 Operator: So what's the emergency? Opus: From a taste perspective, it's a crisis of biblical proportions!