I use bit reversal a fair bit. For example, if I am debugging my timing, I might toggle a port at a critical time and use a logic analyzer. Here is the way I do it: MOVLW B'00001000' XORWF PORTB,F If PORTB is 00011100 and you execute this code, it becomes 00010100. Execute it again, you're back at 00011100. Same works for any register. To toggle lower nybble, use MOVLW h'0f' and XORWF the register.