daily pastebin goal
39%
SHARE
TWEET

Untitled

a guest Dec 12th, 2018 61 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; wczytywanie i wyświetlanie tekstu wielkimi literami
  2. ; (inne znaki się nie zmieniają)
  3. .686
  4. .model flat
  5. extern _ExitProcess@4 : PROC
  6. public _main
  7.  
  8.  
  9. .data
  10. ; 2x^2 - x - 15 = 0
  11. wsp_a dd +2.0
  12. wsp_b dd -1.0
  13. wsp_c dd -15.0
  14. dwa dd 2.0
  15. cztery dd 4.0
  16. x1 dd ?
  17. x2 dd ?
  18. .code
  19. _main PROC
  20. finit
  21. fld wsp_a ; załadowanie współczynnika a
  22. fld wsp_b ; załadowanie współczynnika b
  23. fst st(2) ; kopiowanie b
  24. ; sytuacja na stosie: ST(0) = b, ST(1) = a, ST(2) = b
  25. fmul st(0),st(0) ; obliczenie b^2
  26. fld cztery
  27. ; sytuacja na stosie: ST(0) = 4.0, ST(1) = b^2, ST(2) = a,
  28. ; ST(3) = b
  29.  fmul st(0), st(2) ; obliczenie 4 * a
  30.  fmul wsp_c ; obliczenie 4 * a * c
  31.  fsubp st(1), st(0) ; obliczenie b^2 - 4 * a * c
  32.  
  33.  ; sytuacja na stosie: ST(0) = b^2 - 4 * a * c, ST(1) = a,
  34. ; ST(2) = b
  35.  fldz ; zaladowanie 0
  36. ; sytuacja na stosie: ST(0) = 0, ST(1) = b^2 - 4 * a * c,
  37. ; ST(2) = a, ST(3) = b
  38. ; rozkaz FCOMI - oba porównywane operandy musza być podane na
  39. ; stosie koprocesora
  40.  fcomi st(0), st(1)
  41. ; usuniecie zera z wierzchołka stosu
  42.  fstp st(0)
  43. ; ja delta_ujemna ; skok, gdy delta ujemna
  44. ; w przykładzie nie wyodrębnia się przypadku delta = 0
  45. ; sytuacja na stosie: ST(0) = b^2 - 4 * a * c, ST(1) = a,
  46. ; ST(2) = b
  47.  fxch st(1) ; zamiana st(0) i st(1)
  48. ; sytuacja na stosie: ST(0) = a, ST(1) = b^2 - 4 * a * c,
  49. ; ST(2) = b
  50.  fadd st(0), st(0) ; ; obliczenie 2 * a
  51.  fstp st(3)
  52. ; sytuacja na stosie: ST(0) = b^2 - 4 * a * c, ST(1) = b,
  53. ; ST(2) = 2 * a
  54.  fsqrt ; pierwiastek z delty
  55. ; przechowanie obliczonej wartości
  56. fst st(3)
  57. ; sytuacja na stosie: ST(0) = sqrt(b^2 - 4 * a * c),
  58. ; ST(1) = b, ST(2) = 2 * a, ST(3) = sqrt(b^2 - 4 * a * c)
  59.  fchs ; zmiana znaku
  60.  fsub st(0), st(1); obliczenie -b - sqrt(delta)
  61.  fdiv st(0), st(2); obliczenie x1
  62.  fstp x1 ; zapisanie x1 w pamięci
  63. ; sytuacja na stosie: ST(0) = b, ST(1) = 2 * a,
  64. ; ST(2) = sqrt(b^2 - 4 * a * c)
  65.  
  66. fchs ; zmiana znaku
  67.  fadd st(0), st(2)
  68.  fdiv st(0), st(1)
  69.  fstp x2
  70.  fstp st(0) ; oczyszczenie stosu
  71.  fstp st(0)
  72.  
  73.  push 0
  74.  call _ExitProcess@4 ; zakończenie programu
  75.  _main ENDP
  76. END
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top