manual:chapter5:asm

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
manual:chapter5:asm [2019/12/03 16:15]
claudio [Example code]
manual:chapter5:asm [2019/12/05 14:03]
jojo1973 [Simple assignments with operators] Added a particular syntax regarding register R
Line 37: Line 37:
 |  :::  |  :::  | ''ASIN''  |  :::  |  :::  | ''MAX''  | |  :::  |  :::  | ''ASIN''  |  :::  |  :::  | ''MAX''  |
 |  :::  |  :::  | ''ACOS''  |  :::  |  :::  | ''RND''  | |  :::  |  :::  | ''ACOS''  |  :::  |  :::  | ''RND''  |
-|  :::  |  :::  | ''ATAN'' |  :::  |  :::  |    +|  :::  |  :::  | ''ATAN'' |  :::  |  :::  | ''CLR''  
-|  :::  |  :::  | ''SINH''  |  :::  |  :::  |  :::  +|  :::  |  :::  | ''SINH''  |  :::  |  :::  |   
-|  :::  |  :::  | ''COSH''  |  :::  |  :::  |  :::  |+|  :::  |  :::  | ''COSH''  |  :::  |  :::  |    |
 |  :::  |  :::  | ''TANH''  |  :::  |  :::  |  :::  | |  :::  |  :::  | ''TANH''  |  :::  |  :::  |  :::  |
 |  :::  |  :::  | ''ASINH''  |  :::  |  :::  |  :::  | |  :::  |  :::  | ''ASINH''  |  :::  |  :::  |  :::  |
Line 73: Line 73:
 | '':A=S2'' '':S2=S1'' '':S1=A''  | Swap stack level 1 with level 2 using register ''A'' as temporary storage. An error is raised if the stack contains less than 2 levels  | | '':A=S2'' '':S2=S1'' '':S1=A''  | Swap stack level 1 with level 2 using register ''A'' as temporary storage. An error is raised if the stack contains less than 2 levels  |
 | '':C+=B^#2''  | Square the value register ''B'' and adds the result to register ''C''  | | '':C+=B^#2''  | Square the value register ''B'' and adds the result to register ''C''  |
 +| '':B=R^#2 π''  | Assign ''%%'%%π^2%%'%%'' to register B. This example shows that register ''R'' must not necessarily be the second argument of a binary operator  |
  
 ==== Assignment with math functions ==== ==== Assignment with math functions ====
Line 99: Line 100:
 | ''AL''    | Always                 | ---       | ---       | | ''AL''    | Always                 | ---       | ---       |
 | ''LT''    | Less Than              | ---       | Set       | | ''LT''    | Less Than              | ---       | Set       |
-| ''EQ''    | Equals                 | Set       | ---       |+| ''EQ'' or ''Z''  | Equals                 | Set       | ---       |
 | ''LE''    | Less Than or Equals    | ---       | Set       | | ''LE''    | Less Than or Equals    | ---       | Set       |
 | :::       | :::                    | Set       | ---       | | :::       | :::                    | Set       | ---       |
 | ''NA''    | Never                  | ---       | ---       | | ''NA''    | Never                  | ---       | ---       |
 | ''GE''    | Greater Than or Equals | ---       | Clear     | | ''GE''    | Greater Than or Equals | ---       | Clear     |
-| ''NE''    | Not Equals             | Clear     | ---       |+| ''NE'' or ''NZ''  | Not Equals             | Clear     | ---       |
 | ''GT''    | Greater Than           | Clear     | Clear     | | ''GT''    | Greater Than           | Clear     | Clear     |
  
Line 133: Line 134:
 | '':PUSH.A.#3'' | Reverse of '':POP''. In this example will do '':P=C'', '':P=B'' and '':P=A''  | | '':PUSH.A.#3'' | Reverse of '':POP''. In this example will do '':P=C'', '':P=B'' and '':P=A''  |
 | '':RPUSH.A.#3''  | Reverse of '':RPOP''. In this example will do '':P=A'', '':P=B'', and '':P=C''  | | '':RPUSH.A.#3''  | Reverse of '':RPOP''. In this example will do '':P=A'', '':P=B'', and '':P=C''  |
 +| '':CLR.A.#3'' | Set registers to zero (clear) starting with ''A'', and as many registers as requested. In this example will do '':A=0'', '':B=0'' and '':C=0''  |
  
 ==== Example code ==== ==== Example code ====
Line 146: Line 148:
   -103 SF             @ Complex results   -103 SF             @ Complex results
   :A=RPOP.S1.#      @ Store coefficients in registers   :A=RPOP.S1.#      @ Store coefficients in registers
-  :CMP.A.#0 :D=CHK.EQ @ a=0? +  :AND.A.C            @ Are either zero? 
-  :CMP.C.#0 :E=CHK.EQ @ c=0? +  :SKIP.NZ            @ Skip next seco if both A and C were non-zero
-  :OR.D.E             @ Are either zero? +
-  :SKIP.EQ            @ Skip next seco if both tests were false+
   :: "Zero Input Invalid"   :: "Zero Input Invalid"
      DOERR            @ Abort with error      DOERR            @ Abort with error
Line 187: Line 187:
     :F*=A         @ F='(y2-y1)*(X-x1)'     :F*=A         @ F='(y2-y1)*(X-x1)'
     :B-=F         @ B='(Y-y1)*(x2-x1)-(y2-y1)*(X-x1)'     :B-=F         @ B='(Y-y1)*(x2-x1)-(y2-y1)*(X-x1)'
-    :PUSH.B.#1    @ Push result on the stack+    :P=         @ Push result on the stack
   »   »
 » »
 </code>  </code> 
  • manual/chapter5/asm.txt
  • Last modified: 2021/09/29 05:58
  • by jojo1973