SpinAsm LOG and SpinAsm SOF: Difference between pages
|  Created page with "==LOG== {| class="wikitable" |+ !Mnemonic !Operation !Instruction coding |- |LOG |<nowiki>C * LOG(|ACC|) + D</nowiki> |CCCCCCCCCCCCCCCCDDDDDDDDDDD01011 |}  ======Description====== LOG will multiply the Base2 LOG of the current absolute value in ACC with C and add the constant D to the result.   It is important to note that the LOG function returns a fixed point number in S4.19 format instead of the standard S.23 format, which in turn means that the most negative Base2 LO..." | 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" | ||
| |+ | |+ | ||
| Line 28: | Line 24: | ||
| |16 Bit | |16 Bit | ||
| |Real (S1.14) | |Real (S1.14) | ||
| Hex ($0000  $FFFF) | Hex ($0000  $FFFF)   | ||
| Symbolic   | Symbolic   | ||
| |- | |- | ||
| |D | |D | ||
| |11 Bit | |11 Bit | ||
| |Real( | |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                        ; 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> | ||
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
<syntaxhighlight line="1"> 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 </syntaxhighlight>