Setting Clearing and Copying bits of data

From BeebWiki
Revision as of 00:07, 8 March 2015 by WikiSysop (talk | contribs) (Created page with "Category:6502 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...")
Jump to: navigation, search

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 ORA 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

Jgharston 18:58, 30 August 2007 (BST)