Во-во. Именно поэтому с кочки зрения AVR и с бочки зрения ARM вообще непонятно о чём речь :-) А в бытность на pic16 так да, с превеликим удовольствием
; dst=(w&mask)|(dst&~mask)
; w  =(w^dst)&mask
InsBitsW .macro dst,mask
    xorwf   dst,w
  .IF 'mask[0.1]'=='#'
    andlw   mask[1.0]
  .ELSE
    andwf   mask,w
  .ENDIF
    xorwf   dst,f
  .endm
Это помимо прочего просто самый быстрый и короткий путь сделать желаемое.