PIC Microcontoller Bit Math Method

Swap two bits in a register

Another of Dmitry Kiryashov's routines is this sequence of instructions for swapping bit pairs in a byte in five instructions/cycles.

                                ;  (c) 1998 by Dmitry Kirashov

  movwf  X                      ;  Save the Incoming Byte in 
                                ;   a temporary register
                                ;  w = X = ABCDEFGH
  andlw  0x055                  ;  w = 0B0D0F0H
  addwf  X, f                   ;  X = ABCDEFGH + 0B0D0F0H
                                
  rrf    X, f                   ;  X = (ABCDEFGH + 0B0D0F0h) >> 1
  addwf  X, w                   ;  w = BADCFEHG

Wow, huh?