Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .data
- podajX: .asciiz "\nPodaj wspolrzedna X: "
- podajY: .asciiz "\nPodaj wspolrzedna Y: "
- podajR: .asciiz "\nPodaj promien okregu: "
- X: .asciiz "\nwsp. X: "
- Y: .asciiz "\nwsp. Y: "
- r: .asciiz "\nwsp. r: "
- wewnatrz: .asciiz "\nPunkt lezy wewnatrz okregu"
- zewnatrz: .asciiz "\nPunkt lezy na zewnatrz okregu"
- naOkregu: .asciiz "\nPunkt lezy na okregu"
- koniec: .asciiz "\n Czy chcesz zakonczyc [1]Tak [2]Nie"
- czyChceszZmienicPromien: .asciiz "\n Czy chcesz zmienic promien okregu? [1]Tak [2]Nie"
- punktowWewnatrz: .asciiz "\nPunktow wewnatrz bylo: "
- punktowNaOkregu: .asciiz "\nPunktow na okregu bylo: "
- punktowZewnatrz: .asciiz "\nPunktow na zewnatrz bylo: "
- wybor: .asciiz "\nWybieram: "
- .text
- main:
- #wydrukuj 'podajR'
- la $a0, podajR
- li $v0, 4
- syscall
- #wczytanie liczby
- li $v0, 6
- syscall
- #przesun promien do rejestru $f3
- mov.s $f3, $f0
- #przesun promien do rejestru $f5 (to do prezentacji)
- mov.s $f5, $f0
- #podnies promien do kwadratu
- mul.s $f3, $f3, $f3
- wczytajX:
- #wydrkuj 'podajX'
- la $a0, podajX
- li $v0, 4
- syscall
- #wczytanie liczby
- li $v0, 6
- syscall
- #przesun wspolrzedna X do rejestru $f1
- mov.s $f1, $f0
- wczytajY:
- #wydrkuj 'podajY'
- la $a0, podajY
- li $v0, 4
- syscall
- #wczytanie liczby
- li $v0, 6
- syscall
- #przesun wspolrzedna Y do rejestru $f2
- mov.s $f2, $f0
- podajInformacje:
- #wydrukuj 'X'
- la $a0, X
- li $v0, 4
- syscall
- #wydrukuj wsp x
- li $v0, 2
- mov.s $f12, $f1
- syscall
- #wydrukuj 'Y'
- la $a0, Y
- li $v0, 4
- syscall
- #wydrukuj wsp y
- li $v0, 2
- mov.s $f12, $f2
- syscall
- #wydrukuj 'R'
- la $a0, r
- li $v0, 4
- syscall
- #wydrukuj r
- li $v0, 2
- mov.s $f12, $f5
- syscall
- #podnies wspolrzedne do kwadratu
- mul.s $f2, $f2, $f2
- mul.s $f1, $f1, $f1
- sprawdz:
- #dlugosc odcinka w kwadracie to suma kwadratow wspolrzednych
- add.s $f4, $f1, $f2
- #jesli kwadrat dlugosci odcinka mniejszy to znaczy, ze punkt znajduje sie w srodku okregu, lub na nim
- c.le.s $f4, $f3
- #jesli flaga rejestru oznaczona na true sprawdz, czy punkt jest na
- bc1t sprawdzCzyNa
- #jesli flaga oznaczona na false to przejdz do drukowania komunikatu
- bc1f zewn
- sprawdzCzyNa:
- c.eq.s $f4, $f3
- #jesli flaga oznaczona true to wydrukuj, ze punkt jest na okregu
- bc1t na
- #jesli flafa oznaczona false to wydrukuj, ze punkt jest wewnatrz
- bc1f wewn
- wewn:
- #wydrukuj wewnatrz
- la $a0, wewnatrz
- li $v0, 4
- syscall
- li $t2, 1
- j end
- zewn:
- #wydrukuj zewnatrz
- la $a0, zewnatrz
- li $v0, 4
- syscall
- li $t3, 1
- j end
- na:
- #wydrukuj naOkregu
- la $a0, naOkregu
- li $v0, 4
- syscall
- li $t4, 1
- j end
- end:
- #wydrukuj pytanie
- la $a0, koniec
- li $v0, 4
- syscall
- #wydrukuj 'wybor'
- la $a0, wybor
- li $v0, 4
- syscall
- #pobierz decyzje
- li $v0, 5
- syscall
- #przesun decyzje do t0
- move $t1, $v0
- #jesli decyzja nie jest wyjscie to pytaj czy zmienic promien
- beq $t1, 1, exit
- j czyZmienProm
- czyZmienProm:
- #wydrukuj pytanie
- la $a0, czyChceszZmienicPromien
- li $v0, 4
- syscall
- #wydrukuj 'wybor'
- la $a0, wybor
- li $v0, 4
- syscall
- #pobierz decyzje
- li $v0, 5
- syscall
- #przesun decyzje do t0
- move $t1, $v0
- #jesli decyzja nie jest zmiana to przejdz do wczytywania punktow
- beq $t1, 2, wczytajX
- j iloscPunktowDlaProm
- #przy zmianie promienia drukuj ile bylo wewnatrz
- iloscPunktowDlaProm:
- #drukuj punktowWewnatrz
- la $a0, punktowWewnatrz
- li $v0, 4
- syscall
- #drukuj liczbe z rejestru $t2, w ktorym przechowywana jest ilosc punktow wewnatrz
- li $v0, 1
- move $a0, $t2
- syscall
- #drukuj punktowZewnatrz
- la $a0, punktowZewnatrz
- li $v0, 4
- syscall
- #drukuj liczbe z rejestru $t3, w ktorym przechowywana jest ilosc punktow zewnatrz
- li $v0, 1
- move $a0, $t3
- syscall
- #drukuj punktowNaOkregu
- la $a0, punktowNaOkregu
- li $v0, 4
- syscall
- #drukuj liczbe z rejestru $t4, w ktorym przechowywana jest ilosc punktow na okregu
- li $v0, 1
- move $a0, $t4
- syscall
- #przejdz do poczatku
- j main
- exit:
- #koniec programu
- li $v0, 10
- syscall
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement