#Poprawny wynik: #Radius is equal to - 1.0 #Surface area (4.0*pi*radius^2) is equal to - 12.56636 #Volume [(4.0*pi)/3.0*radius^3] is equal to - 4.188787 #— program is finished running — # .data FourDotZero: .double 4.0 ThreeDotZero: .double 3.0 Surface: .double 0.0 Capacity: .double 0.0 SurfaceMess: .asciiz "Surface area (4.0*pi*radius^2) is equal to - " CapacityMess: .asciiz "Volume [(4.0*pi)/3.0*radius^3] is equal to - " RadiusString: .asciiz "Radius is equal to - " newline: .asciiz "\n" RadiusValue: .double 2 # w celach testowych można zmienić wartość promienia pi_value: .double 3.14159 .text .globl main main: #============== Proszę nie kasować moich komentarzy ========================= # Oblicz (4.0 * pi_value). Wartość ta będzie wykorzystywana w obliczaniu # powierzchni i objętości. # # Należy wykorzystać powyższe moje deklaracje np. wartość liczby pi - pi_value. # # Proszę skomentowac każdą linię swojego kodu. #============================================================================ #----------— początek Twojego kodu —---— nie kasuj tej linii —-----------— # Oblicz tutaj wartosć wyrażenia (4.0 * pi_value) —- nie kasuj tej linii —--— # Deklaracja liczby pi jest powyżej. # l.d $f0, pi_value # wczytuje pi do rejestrów $f0 i $f1 l.d $f2, FourDotZero # wczytuje 4.0 do rejestrów $f2 i $f3 mul.d $f4, $f0, $f2 # mnożę 4.0 * pi i zapisuje wynik w $f4 i $f5 # od teraz wartość pi * 4 będzie zapisana w $f0 żeby łatwiej było zapamiętać mov.d $f0, $f4 #----— Wyświetl komunikat spod etykiety RadiusString —— nie kasuj tej linii — # la $a0, RadiusString li $v0, 4 syscall #----— Wyświetl wartość promienia —-------— nie kasuj tej linii —----------— # l.d $f12, RadiusValue # liczby zmiennoprzecinkowe należy wczytywać jako argument do rejestru $f12 ponieważ umożliwia on zapis Dwusłów li $v0, 3 # syscall 3 - to wypisuje double syscall #-----— Wyświetl nową linie —-------------— nie kasuj tej linii —---------— # la $a0, newline li $v0, 4 syscall #============== nie kasuj moich komentarzy ====================================== # Oblicz powierzchnie kuli. # Pamiętaj, że powierzchnia = 4.0 * pi_value * RadiusValue^2 # Deklaracje liczby pi, RadiusValue i FourDotZero są powyżej. # Zapamiętaj powierzchnie pod etykietą Surface #================================================================================ l.d $f2, RadiusValue # wczytuje wartość promienia do $f2 mul.d $f4, $f2, $f2 # $f2 ^ 2 mul.d $f6, $f4, $f0 # tutaj mnożę (4.0*pi)$f0 * (rad^2)$f4 s.d $f6, Surface #zapisuję z koprocesora rejestr $f6 do miejsca w pamięci pod etykietą Surface #-— Wyświetl komunikat spod etykiety SurfaceMess —- nie kasuj tej linii —— # la $a0, SurfaceMess li $v0, 4 syscall #---------— Wyświetl wartość powierzchni —----— nie kasuj liniii —--------— # l.d $f12, Surface li $v0, 3 syscall #-----— Wyprowadź nową linię —----------------— nie kasuj linii —---------— # la $a0, newline li $v0, 4 syscall #------------— nie kasuj moich komentarzy —----— nie kasuj linii —---------— # Oblicz objętość kuli. # Objętość kuli = (4.0 * pi / 3.0) * radius^3 # Zapamiętaj wartość objętości pod etykietą Capacity #-----------------------------------------------------------------------------— l.d $f4, ThreeDotZero # wczytije 3.0 do $f4 div.d $f6, $f0, $f4 # $f6 = (pi*4.0)$f0 / (3.0)$f4 mul.d $f8, $f2, $f2 # $f8 = rad * rad mul.d $f8, $f8, $f2 # $f8 = (rad^2)$f8 * (rad)$f2 - da nam to rad^3 mul.d $f6, $f6, $f8 # (4.0 * pi / 3.0)$f6 * (rad^3)$f8 s.d $f6, Capacity # zapisuję do Capacity #------— Wyświetl komunikat spod etykiety CapacityMess —— nie kasuj linii —- # la $a0, CapacityMess li $v0, 4 syscall #------— Wyświetl wartość objętości —-------— nie kasuj linii —------------— # l.d $f12, Capacity li $v0, 3 syscall #-------— Zakończ program. —----— nie kasuj linii —------------------------— # # li $v0, 10 # koniec programu syscall