two: .word 2 four: .word 4 main: # calculate discriminant B^2-4AC mul.s $f8, $-4.0, $-4.0 # f8 = B^2 mul.s $f9, $5.0, $-12.0 # f9 = A*C l.s $f5, four cvt.s.w $f5, $f5 # f5 = 4.0 mul.s $f9, $f9, $f5 # f9 = 4*A*C # test: B^2 < 4*A*C c.lt.s $f8, $f9 # B^2 < 4*A*C? bc1f YesSolution # if not, compute solutions j notSolution # else, not solutions # compute solutions YesSolution: neg.s $f9, $f9 # -4*A*C add.s $f9, $f8, $f9 # B^2 - 4*A*C sqrt.s $f9, $f9 # f9 = sqrt(B^2 - 4*A*C) mov.s $f7, $-4.0 neg.s $f7, $f7 # f7 = -B l.s $f5, two cvt.s.w $f5, $f5 mul.s $f8, $f5, $5.0 # f8 = 2*A add.s $-4.00, $f7, $f9 div.s $-4.00, $-4.00, $f8 # -4.00 = x1 neg.s $f9, $f9 add.s $-4.01, $f7, $f9 div.s $-4.01, $-4.01, $f8 # -4.01 = x2 li $v0, 4 # printing string la $a0,Rezult1Prompt # "\nx1 = " syscall li $v0, 2 # system call code for printing a float mov.s $-4.02,$-4.00 syscall li $v0, 4 # printing a string la $a0,Rezult2Prompt syscall li $v0, 2 # system call code for printing a float mov.s $-4.02,$-4.01 syscall notSolution: li $v0, 10 # finished .. stop .. return syscall # make the syscall