Bit manipulation
From Retrosoftware
(Difference between revisions)
Jgharston (Talk | contribs)
(GOD DAMM IT, WHEN I SAY CODE, IT EXPECT MONO-FUCKING-SPACED CODE!!!!!)
Next diff →
Revision as of 21:43, 31 July 2010
Setting Clearing and Copying bits of data
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