Logic is too simple. For better understanding, I would suggest you something. Use a scientific calculator and in hex mode go on adding 0x01 each time. And then study my code. You will have a better understanding.
CJNE R5,#0FFh,end ; Observe this line carefully and think after it