Bit_manipulation - simondotm/stardot-wiki GitHub Wiki
AND
xx
will clear the bits in A that are also clear in xx, for example:
A xx after AND xx
%abcdefgh %01010101 %0b0d0f0h
ORA
xx
will set the bits in A that are also set in xx, for example:
A xx after ORA xx
%abcdefgh %01010101 %a1c1e1g1
EOR
xx
will toggle the bits in A that are set in xx, for example:
A xx after EOR xx
%abcdefgh %01010101 %aBcDeFgH
To clear the bits in A that are set in xx, use both ORA
and EOR
, for example:
A xx after OR xx after EOR xx
%abcdefgh %01010101 %a1c1e1g1 %a0c0e0g0
You can copy a number of bits to a memory location without changing the other bits using EOR
and AND
. For example, to copy the top four bits of A into a memory location without changing the bottom four bits, use the following:
A=12345678 dst=abcdefgh
EOR dst ******** abcdefgh
AND #&F0 ****0000 abcdefgh
EOR dst 1234efgh abcdefgh
STA dst 1234efgh 1234efgh
This is much more efficient than the usual code:
PHA
LDA dst:AND #&0F:STA dst
PLA
AND #&F0:ORA dst:STA dst