swap %d1 move.l %d1,%d0 and.l #0xff00ff00,%d0 /* |rrrrrggg|00000000|rrrrrggg|00000000| */ eor.l %d0, %d1 /* |00000000|gggbbbbb|00000000|gggbbbbb| */ lsr.l #8,%d0 /* |00000000|rrrrrggg|00000000|rrrrrggg| */ move.l %d0,%d5 and.l #0x00f800f8,%d5 /* |00000000|rrrrr000|00000000|rrrrr000| */ add.l %d0,%d5 /* |0000000r|rrrr0ggg|0000000r|rrrr0ggg| */ move.w %d5,(%a1) lsl.l #1,%d1 /* |0000000g|ggbbbbb0|0000000g|ggbbbbb0| */ move.w %d1,(%a1) swap %d5 swap %d1 move.w %d5,(%a1) move.w %d1,(%a1)