Во-во. Именно поэтому с кочки зрения 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
Это помимо прочего просто самый быстрый и короткий путь сделать желаемое.