Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .data
- str1: .ascii "Geben Sie beliebig viele Zahlen zwischen 1 und 99 ein.\n"
- .asciiz "Eingabe von 0 beendet die Eingabe und gibt das Ergebnis aus.\n"
- askstr: .asciiz "\n?-> "
- errstr: .asciiz "Sie dürfen nur Zahlen zwischen 1 und 99 eingeben.\n"
- answstr:.asciiz "Das Ergebnis lautet: "
- str2: .asciiz "\n\n"
- .text
- main: li $s0, 0 # s0 = 0 result of this program
- li $s1, 0 # s1 = 0 used in the math part of loop
- # Print str1
- li $v0, 4 # v0 = 4
- la $a0, str1 # a0 -> str1
- syscall # print string
- loop: # Print askstr
- li $v0, 4 # v0 = 4
- la $a0, askstr # a0 -> askstr
- syscall # print string
- # Load user input into v0
- li $v0, 5 # v0 = 5
- syscall # read int
- # Check if 0 < v0 < 99
- li $t2, 99 # t2 = 99
- bgt $v0, $t2, error # v0 > t2 => error
- li $t2, 0 # t2 = 0
- blt $v0, $t2, error # v0 < t2 => error
- # Check if v0 == 0
- beqz $v0, exit # v0 == 0 => exit
- # Math
- addi $s1, $s1, 1 # s1 = s1 + 1
- mul $t2, $v0, $v0 # t2 = v0 * v0
- mul $t2, $t2, $s1 # t2 = t2 * s1
- add $s0, $s0, $t2 # s0 = s0 + t2
- # Let's loop again
- j loop # => loop
- error: # Print error
- li $v0, 4 # v0 = 4
- la $a0, errstr # a0 -> errstr
- syscall # print string
- # Back to the loop
- j loop # => loop
- exit: # Print answstr
- li $v0, 4 # v0 = 4
- la $a0, answstr # a0 -> answstr
- syscall # print string
- # Print result
- li $v0, 1 # v0 = 1
- move $a0, $s0 # a0 = s0
- syscall # print int
- # Print str2
- li $v0, 4 # v0 = 4
- la $a0, str2 # a0 -> str2
- syscall # print string
- # Exit
- li $v0, 10 # v0 = 10
- syscall # exit
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement