SpinAsm OR and SpinAsm SOF: Difference between pages
(Difference between pages)
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
== | == SOF == | ||
{| class="wikitable" | {| class="wikitable" | ||
|+ | |+ | ||
Line 6: | Line 6: | ||
!Instruction coding | !Instruction coding | ||
|- | |- | ||
| | |SOF | ||
| | |C * ACC + D | ||
| | |CCCCCCCCCCCCCCCCDDDDDDDDDDD01101 | ||
|} | |} | ||
======Description====== | ====== Description ====== | ||
SOF will multiply the current value in ACC with C and will then add the constant D to the result. Please note the absence of an integer entry format for D. This is not by mistake but it should emphasize that D is not intended to become used for integer arithmetic. The reason for this instruction is that the 11 bit constant D would be placed into ACC left justified or in other words 13 bits shifted to the left. D is intended to offset ACC by a constant in the range from –1 to +0.9990234375. | |||
====== Parameters ====== | |||
{| class="wikitable" | {| class="wikitable" | ||
|+ | |+ | ||
!Name | !Name | ||
!Width | !Width | ||
!Entry formats, range | !Entry formats, range | ||
|- | |- | ||
| | |C | ||
| | |16 Bit | ||
| | |Real (S1.14) | ||
Hex ($ | Hex ($0000 $FFFF) | ||
Symbolic | |||
|- | |||
|D | |||
|11 Bit | |||
|Real(S.10) | |||
Symbolic | Symbolic | ||
|} | |} | ||
======Syntax====== | ====== Syntax ====== | ||
SOF C,D | |||
======Coding Example====== | ====== Coding Example ====== | ||
<syntaxhighlight line="1"> | <syntaxhighlight line="1"> | ||
Off EQU 1.0 ; | |||
; | |||
; | ; Halve way rectifier | ||
sof 0,0 | sof 0,0 ; Clear ACC | ||
rdax ADCL,1.0 ; Read from left ADC channel | |||
sof 1.0,Off ; Subtract offset | |||
sof 1.0,Off ; Add offset | |||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 20:54, 6 January 2023
SOF
Mnemonic | Operation | Instruction coding |
---|---|---|
SOF | C * ACC + D | CCCCCCCCCCCCCCCCDDDDDDDDDDD01101 |
Description
SOF will multiply the current value in ACC with C and will then add the constant D to the result. Please note the absence of an integer entry format for D. This is not by mistake but it should emphasize that D is not intended to become used for integer arithmetic. The reason for this instruction is that the 11 bit constant D would be placed into ACC left justified or in other words 13 bits shifted to the left. D is intended to offset ACC by a constant in the range from –1 to +0.9990234375.
Parameters
Name | Width | Entry formats, range |
---|---|---|
C | 16 Bit | Real (S1.14)
Hex ($0000 $FFFF) Symbolic |
D | 11 Bit | Real(S.10)
Symbolic |
Syntax
SOF C,D
Coding Example
Off EQU 1.0 ;
;
; Halve way rectifier
sof 0,0 ; Clear ACC
rdax ADCL,1.0 ; Read from left ADC channel
sof 1.0,Off ; Subtract offset
sof 1.0,Off ; Add offset