Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
manual:chapter5:asm [2019/12/03 15:50] claudio [Flow control] |
manual:chapter5:asm [2019/12/04 15:36] claudio [Example code] |
||
---|---|---|---|
Line 37: | Line 37: | ||
| ::: | ::: | '' | | ::: | ::: | '' | ||
| ::: | ::: | '' | | ::: | ::: | '' | ||
- | | ::: | ::: | '' | + | | ::: | ::: | '' |
- | | ::: | ::: | '' | + | | ::: | ::: | '' |
- | | ::: | ::: | '' | + | | ::: | ::: | '' |
| ::: | ::: | '' | | ::: | ::: | '' | ||
| ::: | ::: | '' | | ::: | ::: | '' | ||
Line 99: | Line 99: | ||
| '' | | '' | ||
| '' | | '' | ||
- | | '' | + | | '' |
| '' | | '' | ||
| ::: | ::: | Set | --- | | | ::: | ::: | Set | --- | | ||
| '' | | '' | ||
| '' | | '' | ||
- | | '' | + | | '' |
| '' | | '' | ||
Line 133: | Line 133: | ||
| '': | | '': | ||
| '': | | '': | ||
+ | | '': | ||
==== Example code ==== | ==== Example code ==== | ||
Line 146: | Line 147: | ||
-103 SF @ Complex results | -103 SF @ Complex results | ||
: | : | ||
- | :CMP.A.#0 :FPUSH.EQ @ a=0? Push test on the stack | + | :AND.A.C @ Are either zero? |
- | :CMP.C.#0 :FPUSH.EQ @ c=0? Push test on the stack | + | :SKIP.NZ @ Skip next seco if both A and C were non-zero |
- | OR | + | |
- | :CMP.S1.#1 DROP @ Turn newRPL boolean into flags and discard it | + | |
- | :SKIP.NE @ Skip next seco if false | + | |
:: "Zero Input Invalid" | :: "Zero Input Invalid" | ||
| | ||
; | ; | ||
- | :P=#0-B | + | :D=#0-B @ -B |
- | | + | |
- | | + | :F=#4*A :F*=C |
- | | + | :E-=F : |
- | :P=B SIGN * - | + | |
- | | + | :CMP.B.#0 |
- | :P=C :S1/=A | + | :SKIP.GE : |
+ | :SKIP.LT :F=D-E @ -B-√(B^2-4*A*C) | ||
+ | | ||
+ | :E=A*#2 @ 2*A | ||
+ | : | ||
+ | : | ||
: | : | ||
» | » | ||
Line 183: | Line 186: | ||
:F*=A @ F=' | :F*=A @ F=' | ||
:B-=F @ B=' | :B-=F @ B=' | ||
- | :PUSH.B.#1 | + | :P=B @ Push result on the stack |
» | » | ||
» | » | ||
</ | </ |