add: poly.pasm script

This commit is contained in:
2024-01-20 19:38:13 +01:00
parent 2ab0d16928
commit 4f4825cd32
2 changed files with 95 additions and 0 deletions

94
examples/poly.pasm Normal file
View File

@@ -0,0 +1,94 @@
; 2D polynomials calculator
; calculates the delta, x1, x2
; will fail to provide a good result for x most of the time because we don't have float
; simple showcase of added neg, sqrt functions.
print_a4:
push :
push 1
call put
push
push 1
call put
push a4
push 2
call put
push \n
push 1
call put
ret
main:
mov a8, 1 ;x1
;ax² + bx + c
mov a1, 2 ;a
mov a2, 5 ;b
mov a3, -3 ;c
;delta
;b² - 4ac
push a1
push a2
mul a2, a2 ;b²
mul a1, a3 ;a*c
mul a1, 4 ;4ac
sub a2, a1 ;b² - 4ac
mov a4, a2 ;a4 is delta
pop a1
pop a2
push d
push 1
call put
jmp print_a4
cmp a4, 0
jnb 1 ;if delta < 0, we exit
end
calculate_x:
;(-b-sqrt(delta))/(2ab)
; -b
push a2
neg a2
; a5 will be 2ab
mov a5, 2
mul a5, a1
mul a5, a2
; sqrt(delta)
push a4
sqrt a4
;-b+-sqrt(delta)
cmp a8, 1 ;x1 ?
je 2
add a2, a4 ;x2
jmp 1
sub a2, a4 ;x1
;a2/2ab
div a2, a5
push x
push 1
call put
push a8
push 2
call put
push a4
mov a4, a2
jmp print_a4
pop a4
pop a2
pop a4
add a8, 1
cmp a8, 2
je calculate_x
end