Advertisement
karol_dziachan

study of the position of the point in relation to the circle

May 6th, 2020
4,029
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .data
  2. podajX: .asciiz "\nPodaj wspolrzedna X: "
  3. podajY: .asciiz "\nPodaj wspolrzedna Y: "
  4. podajR: .asciiz "\nPodaj promien okregu: "
  5. X: .asciiz "\nwsp. X: "
  6. Y: .asciiz "\nwsp. Y: "
  7. r: .asciiz "\nwsp. r: "
  8. wewnatrz: .asciiz "\nPunkt lezy wewnatrz okregu"
  9. zewnatrz: .asciiz "\nPunkt lezy na zewnatrz okregu"
  10. naOkregu: .asciiz "\nPunkt lezy na okregu"
  11. koniec: .asciiz "\n Czy chcesz zakonczyc [1]Tak [2]Nie"
  12. czyChceszZmienicPromien: .asciiz "\n Czy chcesz zmienic promien okregu? [1]Tak [2]Nie"
  13. punktowWewnatrz: .asciiz "\nPunktow wewnatrz bylo: "
  14. punktowNaOkregu: .asciiz "\nPunktow na okregu bylo: "
  15. punktowZewnatrz: .asciiz "\nPunktow na zewnatrz bylo: "
  16. wybor: .asciiz "\nWybieram: "
  17. .text
  18. main:
  19.     #wydrukuj 'podajR'
  20.     la $a0, podajR
  21.     li $v0, 4
  22.     syscall
  23.    
  24.     #wczytanie liczby
  25.     li $v0, 6
  26.     syscall
  27.    
  28.     #przesun promien do rejestru $f3
  29.     mov.s $f3, $f0
  30.    
  31.     #przesun promien do rejestru $f5 (to do prezentacji)
  32.     mov.s $f5, $f0
  33.    
  34.     #podnies promien do kwadratu
  35.     mul.s $f3, $f3, $f3
  36.        
  37. wczytajX:
  38.     #wydrkuj 'podajX'
  39.     la $a0, podajX
  40.     li $v0, 4
  41.     syscall
  42.    
  43.     #wczytanie liczby
  44.     li $v0, 6
  45.     syscall
  46.    
  47.     #przesun wspolrzedna X do rejestru $f1
  48.     mov.s $f1, $f0 
  49.    
  50. wczytajY:
  51.     #wydrkuj 'podajY'
  52.     la $a0, podajY
  53.     li $v0, 4
  54.     syscall
  55.    
  56.     #wczytanie liczby
  57.     li $v0, 6
  58.     syscall
  59.    
  60.     #przesun wspolrzedna Y do rejestru $f2
  61.     mov.s $f2, $f0
  62.    
  63. podajInformacje:
  64.     #wydrukuj 'X'
  65.     la $a0, X
  66.     li $v0, 4
  67.     syscall
  68.    
  69.     #wydrukuj wsp x
  70.     li $v0, 2
  71.     mov.s $f12, $f1
  72.     syscall
  73.    
  74.     #wydrukuj 'Y'
  75.     la $a0, Y
  76.     li $v0, 4
  77.     syscall
  78.    
  79.     #wydrukuj wsp y
  80.     li $v0, 2
  81.     mov.s $f12, $f2
  82.     syscall
  83.    
  84.     #wydrukuj 'R'
  85.     la $a0, r
  86.     li $v0, 4
  87.     syscall
  88.    
  89.     #wydrukuj r
  90.     li $v0, 2
  91.     mov.s $f12, $f5
  92.     syscall
  93.    
  94.     #podnies wspolrzedne do kwadratu
  95.     mul.s $f2, $f2, $f2
  96.     mul.s $f1, $f1, $f1
  97. sprawdz:
  98.     #dlugosc odcinka w kwadracie to suma kwadratow wspolrzednych
  99.     add.s $f4, $f1, $f2
  100.    
  101.     #jesli kwadrat dlugosci odcinka mniejszy to znaczy, ze punkt znajduje sie w srodku okregu, lub na nim
  102.     c.le.s $f4, $f3
  103.    
  104.     #jesli flaga rejestru oznaczona na true sprawdz, czy punkt jest na
  105.     bc1t sprawdzCzyNa
  106.     #jesli flaga oznaczona na false to przejdz do drukowania komunikatu
  107.     bc1f zewn
  108.    
  109. sprawdzCzyNa:
  110.     c.eq.s $f4, $f3
  111.     #jesli flaga oznaczona true to wydrukuj, ze punkt jest na okregu
  112.     bc1t na
  113.     #jesli flafa oznaczona false to wydrukuj, ze punkt jest wewnatrz
  114.     bc1f wewn
  115.    
  116. wewn:
  117.     #wydrukuj wewnatrz
  118.     la $a0, wewnatrz
  119.     li $v0, 4
  120.     syscall
  121.      
  122.     li $t2, 1
  123.    
  124.     j end
  125. zewn:
  126.     #wydrukuj zewnatrz  
  127.     la $a0, zewnatrz
  128.     li $v0, 4
  129.     syscall
  130.    
  131.     li $t3, 1
  132.    
  133.     j end
  134. na:
  135.     #wydrukuj naOkregu
  136.     la $a0, naOkregu
  137.     li $v0, 4
  138.     syscall
  139.    
  140.     li $t4, 1
  141.    
  142.     j end
  143. end:
  144.     #wydrukuj pytanie
  145.     la $a0, koniec
  146.     li $v0, 4
  147.     syscall
  148.    
  149.     #wydrukuj 'wybor'
  150.     la $a0, wybor
  151.     li $v0, 4
  152.     syscall
  153.    
  154.     #pobierz decyzje
  155.     li $v0, 5
  156.     syscall
  157.    
  158.     #przesun decyzje do t0
  159.     move $t1, $v0
  160.    
  161.     #jesli decyzja nie jest wyjscie to pytaj czy zmienic promien
  162.     beq $t1, 1, exit
  163.         j czyZmienProm
  164. czyZmienProm:
  165.     #wydrukuj pytanie
  166.     la $a0, czyChceszZmienicPromien
  167.     li $v0, 4
  168.     syscall
  169.    
  170.     #wydrukuj 'wybor'
  171.     la $a0, wybor
  172.     li $v0, 4
  173.     syscall
  174.    
  175.     #pobierz decyzje
  176.     li $v0, 5
  177.     syscall
  178.    
  179.     #przesun decyzje do t0
  180.     move $t1, $v0
  181.    
  182.     #jesli decyzja nie jest zmiana to przejdz do wczytywania punktow
  183.     beq $t1, 2, wczytajX
  184.         j iloscPunktowDlaProm
  185.  
  186. #przy zmianie promienia drukuj ile bylo wewnatrz       
  187. iloscPunktowDlaProm:
  188.  
  189.     #drukuj punktowWewnatrz
  190.     la $a0, punktowWewnatrz
  191.     li $v0, 4
  192.     syscall
  193.    
  194.     #drukuj liczbe z rejestru $t2, w ktorym przechowywana jest ilosc punktow wewnatrz
  195.     li $v0, 1
  196.         move $a0, $t2
  197.         syscall
  198.        
  199.     #drukuj punktowZewnatrz
  200.     la $a0, punktowZewnatrz
  201.     li $v0, 4
  202.     syscall
  203.    
  204.     #drukuj liczbe z rejestru $t3, w ktorym przechowywana jest ilosc punktow zewnatrz
  205.     li $v0, 1
  206.         move $a0, $t3
  207.         syscall
  208.        
  209.         #drukuj punktowNaOkregu
  210.     la $a0, punktowNaOkregu
  211.     li $v0, 4
  212.     syscall
  213.    
  214.     #drukuj liczbe z rejestru $t4, w ktorym przechowywana jest ilosc punktow na okregu
  215.     li $v0, 1
  216.         move $a0, $t4
  217.         syscall
  218.    
  219.     #przejdz do poczatku
  220.     j main
  221.    
  222. exit:
  223.     #koniec programu
  224.     li $v0, 10
  225.     syscall
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement