Need to print pointer address to uart without using printf or sprintf

Yes, sorry, I meant increment.

I partially understand the code below, could you explain a little bit more on what is going on? Still kind of fuzzy on the bit-math.

int ptr = (int) &value; // store 16-bit address, and then pretend that memory is a character array
unsigned char tmp;
char string[]="0123456789ABCDEF";

tmp = (1+ (unsigned char) &ptr); // MSB
putchar( string[tmp >> 4] );
putchar( string[tmp & 0xF] );

tmp = (0+ (unsigned char) &ptr); // LSB
putchar( string[tmp >> 4] );
putchar( string[tmp & 0xF] );

int ptr = (int) &value; // store 16-bit address, and then pretend that memory is a character array
putchar( (1+ (unsigned char) &ptr) ); // MSB
putchar( ( (unsigned char) &ptr) ); // LSB

Thanks,
-ren