Difference between revisions of "Setting Clearing and Copying bits of data"

From BeebWiki
Jump to: navigation, search
m (Fixed some typos)
 
m (1 revision)
(No difference)

Revision as of 23:58, 28 August 2013


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)