Advertisement
Guest User

Untitled

a guest
May 28th, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. .data                               # data section
  3.  
  4. prompt1: .asciiz "Summand eingeben: "
  5. prompt2: .asciiz "Summe: "
  6. prompt3: .asciiz "Wie viele Summanden moechten Sie eingeben? "
  7.  
  8.  
  9. .text                            # text section
  10. .globl main                      # call main by SPIM
  11.  
  12. main:  
  13.         li $t0,0                 # initialize t0 - offset
  14.         li $s0,0                 # initialize s0 (result)
  15.         li $s1,4                 # 4
  16.        
  17.         li  $v0,4                # print string service
  18.         la  $a0,prompt3          # write("Wie viele Summanden moechten Sie eingeben?")
  19.         syscall
  20.        
  21.         li  $v0,5                # read integer service
  22.         syscall
  23.        
  24.         move $s2,$v0             # Anzahl der Summanden in $s2 schieben
  25.         mulo $s3,$s1,$s2         # Array-Groesse
  26.        
  27.         move $a0,$s3             # gewuenschte Groesse in $a0 schieben
  28.         li $v0,9                 # Speicher in Bytes anfordern
  29.         syscall
  30.        
  31.         move $s4,$v0             # Array Start in $s4 speichern
  32.        
  33.         addu $s5,$s4,$s3         # Array Ende in $s5 speichern
  34.        
  35.         move $t0,$s4             # Array Start nun in $t0
  36. loop1:
  37.         bgt $t0, $s5, filled      # jump if t0>12  
  38.  
  39.         li  $v0,4                # print string service
  40.         la  $a0,prompt1          # write("Summand eingeben: ")
  41.         syscall
  42.        
  43.         li  $v0,5                # read integer service
  44.         syscall
  45.        
  46.         sw $v0, ($t0)            # store word v0 into A($t0)
  47.        
  48.         addi $t0,4               # adjust offset
  49.         j loop1                  # jump to loop1
  50.  
  51. filled:        
  52.         move $t0,$s4             # initialize t0
  53.                    
  54. loop2:  
  55.         bgt $t0, $s5, done        # jump if t0>12
  56.        
  57.         lw $t2, ($t0)            # load a value from the array to t2
  58.         add $s0, $s0, $t2        # add t2 to the result
  59.        
  60.         addi $t0,4               # adjust offset
  61.         j loop2                  # jump to loop2
  62.  
  63. done:        
  64.         li  $v0,4                # print string service
  65.         la  $a0,prompt2          # write("Summe ausgeben: ")
  66.         syscall
  67.        
  68.         li  $v0,1                # print integer service
  69.         move $a0, $s0            # print result
  70.         syscall
  71.        
  72.         li $v0, 10               # Exit program
  73.         syscall
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement