Advertisement
Guest User

Untitled

a guest
May 28th, 2017
52
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.         move $t0,$s4             # Array Start nun in $t0
  34. loop1:
  35.         bgt $t0, $s3, filled      # jump if t0>12  
  36.  
  37.         li  $v0,4                # print string service
  38.         la  $a0,prompt1          # write("Summand eingeben: ")
  39.         syscall
  40.        
  41.         li  $v0,5                # read integer service
  42.         syscall
  43.        
  44.         sw $v0, ($t0)            # store word v0 into A($t0)
  45.        
  46.         addi $t0,4               # adjust offset
  47.         j loop1                  # jump to loop1
  48.  
  49. filled:        
  50.         move $t0,$s4             # initialize t0
  51.                    
  52. loop2:  
  53.         bgt $t0, $s3, done        # jump if t0>12
  54.        
  55.         lw $t2, ($t0)            # load a value from the array to t2
  56.         add $s0, $s0, $t2        # add t2 to the result
  57.        
  58.         addi $t0,4               # adjust offset
  59.         j loop2                  # jump to loop2
  60.  
  61. done:        
  62.         li  $v0,4                # print string service
  63.         la  $a0,prompt2          # write("Summe ausgeben: ")
  64.         syscall
  65.        
  66.         li  $v0,1                # print integer service
  67.         move $a0, $s0            # print result
  68.         syscall
  69.        
  70.         li $v0, 10               # Exit program
  71.         syscall
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement