SpinAsm AND: Difference between revisions

From PedalPCB Wiki
Jump to navigation Jump to search
(Created page with "==AND== {| class="wikitable" |+ !Mnemonic !Operation !Instruction coding |- |AND |ACC & MASK |MMMMMMMMMMMMMMMMMMMMMMMM000001110 |} ======Description====== AND will perform a bit wise "and" of the current ACC and the 24­bit MASK specified within the instruction word. The instruction might be used to load a constant into ACC provided ACC contains $FFFFFF or to clear ACC if MASK equals $000000. (see also the pseudo opcode section) {| class="wikitable" |+ !Name !Width !Ent...")
 
Line 31: Line 31:
======Coding Example======
======Coding Example======
<syntaxhighlight line="1">
<syntaxhighlight line="1">
Off  EQU  1.0                  ;  
AMASK EQU  $F0FFFF                  ;
                                ;  
                                    ;  
; Halve way rectifier ­­­­­­­­
;------------------------------------
sof 0,0                       ; Clear ACC
or $FFFFFF                          ; Set all bits within ACC
rdax ADCL,1.0                  ; Read from left ADC channel
and $FFFFFE                       ; Clear LSB
sof 1.0,Off                    ; Subtract offset
and  %01111111_11111111_11111111    ; Clear MSB
sof 1.0,Off                    ; Add offset
and AMASK                          ; Clear ACC[19..16]
and $0                             ; Clear ACC
</syntaxhighlight>
</syntaxhighlight>

Revision as of 20:21, 6 January 2023

AND

Mnemonic Operation Instruction coding
AND ACC & MASK MMMMMMMMMMMMMMMMMMMMMMMM000001110
Description

AND will perform a bit wise "and" of the current ACC and the 24­bit MASK specified within the instruction word. The instruction might be used to load a constant into ACC provided ACC contains $FFFFFF or to clear ACC if MASK equals $000000. (see also the pseudo opcode section)

Name Width Entry formats, range
M 24 Bit Binary

Hex ($000000 - $FFFFFF) Symbolic

Syntax

AND M

Coding Example
AMASK EQU  $F0FFFF                  ; 
                                    ; 
;------------------------------------
or $FFFFFF                          ; Set all bits within ACC 
and  $FFFFFE                        ; Clear LSB 
and  %01111111_11111111_11111111    ; Clear MSB 
and  AMASK                          ; Clear ACC[19..16] 
and  $0                             ; Clear ACC