Advertisement
Guest User

Untitled

a guest
May 25th, 2017
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .globl  main
  2. main:        
  3.  
  4.  
  5.               la $t0, array            # load base address of array
  6.               move $s0, $t0            # save base address for later on
  7.  
  8. Fill:         jal     pread            # read integer
  9.               move    $t1,$v0          # save it in $t1
  10.               sw $t1, ($t0)            # save integer in array element
  11.               add $t0, $t0, $t0        # double index
  12.               add $t0, $t0, $t0        # double index again (*4)
  13.              
  14.               beq $t0, 12($t0) , Sum   # wenn bei 12 angekommen, springe zu Sum
  15.               jal Fill                 # sonst fuelle erneut
  16.              
  17.        
  18.  
  19.              
  20. Sum:          la $t0, $s0              # load base address of array
  21.  
  22. Loop          lw $t2, 0($t1)           # get the value from the array cell
  23.               add $s2, $t2             # calculate the sum
  24.  
  25.               add $t0, $t0, $t0        # double index
  26.               add $t0, $t0, $t0        # double index again (*4)
  27.  
  28.               beq $t0, 12($t0) , pwrite # wenn bei 12 angekommen, springe zu pwrite
  29.  
  30.               jal loop                 # sonst addiere
  31.              
  32.  
  33.  
  34. Exit:         li      $v0,10           #Exit
  35.               syscall
  36.  
  37.  
  38. # pread -- prompt for and read an integer
  39. # on entry:
  40. #    $ra -- return address## on exit:
  41. #    $v0 -- the integer
  42. .text        
  43. .globl  pread
  44. pread:      la    $a0,prompt1       # print string
  45.             li    $v0,4             # service 4  
  46.             syscall                
  47.             li    $v0,5             # read int into $v0  
  48.             syscall                 # service 5  
  49.             jr    $ra               # return
  50. pwrite:            
  51.             la    $a0,prompt2       # print string
  52.             li    $v0,4             # service 4  
  53.             syscall
  54.             move  $a0, $s2          # restore from $s2 to $a0      
  55.             li    $v0,1             # read int into $v0  
  56.             syscall                 # service 1  
  57.             jal Exit                # return  to Exit
  58.             nop                     #        
  59.             nop                     #              
  60.  
  61.  
  62. .data
  63. array: .space 16  #1 byte = 4 word = 4 integer  
  64. prompt1: .asciiz "Enter an integer: "
  65. prompt2: .asciiz "The sum is: "
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement