Advertisement
Guest User

Untitled

a guest
Dec 14th, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .686
  2. .model flat
  3. .data
  4. ; 2x^2 - x - 15 = 0
  5. wsp_a dd +2.0
  6. wsp_b dd -1.0
  7. wsp_c dd -15.0
  8. dwa dd 2.0
  9. cztery dd 4.0
  10. x1 dd ?
  11. x2 dd ?
  12. ;— — — — — — — — — —
  13. .code
  14. ;— — — — — — — — — —
  15. abc PROC
  16. finit
  17. fld wsp_a ; załadowanie współczynnika a
  18. fld wsp_b ; załadowanie współczynnika b
  19. fst st(2) ; kopiowanie b
  20. ; sytuacja na stosie: ST(0) = b, ST(1) = a, ST(2) = b
  21. fmul st(0),st(0) ; obliczenie b^2
  22. fld cztery
  23. ; sytuacja na stosie: ST(0) = 4.0, ST(1) = b^2, ST(2) = a,
  24. ; ST(3) = b
  25.  fmul st(0), st(2) ; obliczenie 4 * a
  26.  fmul wsp_c ; obliczenie 4 * a * c
  27.  fsubp st(1), st(0) ; obliczenie b^2 - 4 * a * c
  28.  ; sytuacja na stosie: ST(0) = b^2 - 4 * a * c, ST(1) = a,
  29. ; ST(2) = b
  30.  fldz ; zaladowanie 0
  31. ; sytuacja na stosie: ST(0) = 0, ST(1) = b^2 - 4 * a * c,
  32. ; ST(2) = a, ST(3) = b
  33. ; rozkaz FCOMI - oba porównywane operandy musza być podane na
  34. ; stosie koprocesora
  35.  fcomi st(0), st(1)
  36. ; usuniecie zera z wierzchołka stosu
  37.  fstp st(0)
  38.  ja delta_ujemna ; skok, gdy delta ujemna
  39. ; w przykładzie nie wyodrębnia się przypadku delta = 0
  40. ; sytuacja na stosie: ST(0) = b^2 - 4 * a * c, ST(1) = a,
  41. ; ST(2) = b
  42.  fxch st(1) ; zamiana st(0) i st(1)
  43. ; sytuacja na stosie: ST(0) = a, ST(1) = b^2 - 4 * a * c,
  44. ; ST(2) = b
  45.  fadd st(0), st(0) ; ; obliczenie 2 * a
  46.  fstp st(3)
  47. ; sytuacja na stosie: ST(0) = b^2 - 4 * a * c, ST(1) = b,
  48. ; ST(2) = 2 * a
  49.  fsqrt ; pierwiastek z delty
  50. ; przechowanie obliczonej wartości
  51. fst st(3)
  52. ; sytuacja na stosie: ST(0) = sqrt(b^2 - 4 * a * c),
  53. ; ST(1) = b, ST(2) = 2 * a, ST(3) = sqrt(b^2 - 4 * a * c)
  54.  fchs ; zmiana znaku
  55.  fsub st(0), st(1); obliczenie -b - sqrt(delta)
  56.  fdiv st(0), st(2); obliczenie x1
  57.  fstp x1 ; zapisanie x1 w pamięci
  58. ; sytuacja na stosie: ST(0) = b, ST(1) = 2 * a,
  59. ; ST(2) = sqrt(b^2 - 4 * a * c)
  60. fchs ; zmiana znaku
  61.  fadd st(0), st(2)
  62.  fdiv st(0), st(1)
  63.  fstp x2
  64.  fstp st(0) ; oczyszczenie stosu
  65.  fstp st(0)
  66.  
  67.  ret
  68.  abc ENDP
  69.  END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement