Advertisement
Guest User

Untitled

a guest
Feb 4th, 2013
261
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. array_size:     .word   8
  2. array:          .space  32
  3. enter:          .asciiz "Enter an integer:\n"
  4. bound1:         .asciiz "Enter an integer for a bound:\n"
  5. bound2:         .asciiz "Enter an integer for another bound:\n"
  6. sumText:        .asciiz "The sum is: "
  7. arrayPrint:     .asciiz "The array contains the following:\n"
  8. newline:        .asciiz "\n"
  9.  
  10. .text
  11. .globl  main  
  12.  
  13. main:
  14.     li  $a0, 0
  15.     lw  $s1, array_size
  16.     la  $s2, array
  17.     j enterIntegers
  18.  
  19. enterIntegers:
  20.     beq     $s0, $s1, enterBound    #exit loop if $s0 = $s1
  21.     la      $a0, enter              #load Enter an integer:
  22.     li      $v0, 4                  #printString()
  23.     syscall                        
  24.     li      $v0, 5                  #input integer
  25.     syscall
  26.     sll     $t2, $s0, 2
  27.     add     $t3, $s2, $t2
  28.     sw      $v0, 0($t3)             #store in array
  29.     addi    $s0, $s0, 1             #index += 1
  30.     j       enterIntegers
  31.  
  32. enterBound:
  33.     la      $a0, bound1
  34.     li      $v0, 4
  35.     syscall
  36.     li      $v0, 5
  37.     syscall
  38.     move    $v0, $s3
  39.     la      $a0, bound2
  40.     li      $v0, 4
  41.     syscall
  42.     li      $v0, 5
  43.     syscall
  44.     move    $v0, $s4
  45.     slt $s5, $s3, $s4              # is num1 < num2?
  46.     bgtz $s5, callSumBetween       # then just perform sumBetween( )
  47.     move $s3, $t0                  # otherwise swap num1 and num2
  48.     move $s4, $s3                  # before calling
  49.     move $t0, $s3
  50.  
  51. callSumBetween:
  52.     j sumBetween1                # sumBetween( num1, num2 )
  53.  
  54. #s0 = i
  55. #s5 = sum
  56. #s3 = min
  57. #s4 = max
  58. #s1 = length
  59. sumBetween1:
  60.     li      $s5, 0
  61.     li      $s0, 0
  62.     j       while1
  63.  
  64. while1:
  65.     blt     $s0, $s1, sumBetween1If1
  66.     bge     $s0, $s1, while1End
  67.     j       while1End
  68.  
  69. sumBetween1If1:
  70.     li      $t2, 0
  71.     li      $t3, 0
  72.     li      $t4, 0
  73.     sll     $t2, $s0, 2
  74.     add     $t3, $s2, $t2
  75.     lw      $t4, 0($t3)
  76.     ble     $s3, $t4, sumBetween1If2
  77.     addi    $s0, $s0, 1
  78.     j       while1
  79.  
  80. sumBetween1If2:
  81.     li      $t2, 0
  82.     li      $t3, 0
  83.     li      $t4, 0
  84.     sll     $t2, $s0, 2
  85.     add     $t3, $s2, $t2
  86.     lw      $s6, 0($t3)
  87.     bge     $s3, $t4, sumBetween1If3
  88.     addi    $s0, $s0, 1
  89.     j       while1
  90.  
  91. sumBetween1If3:
  92.     add     $s5, $s5, $s6
  93.     addi    $s0, $s0, 1
  94.     j       while1
  95.  
  96. while1End:
  97.     move    $v0, $s5
  98.     lw      $ra, 0($sp)
  99.     addi    $sp, $sp, 4
  100.     move    $ra, $s7
  101.     j       continue
  102.  
  103.  
  104. continue:
  105.     la      $a0, sumText
  106.     li      $v0, 4
  107.     syscall
  108.     move    $s5, $a0
  109.     li      $v0, 1
  110.     syscall
  111.     la      $a0, newline
  112.     li      $v0, 4
  113.     syscall
  114.     li      $s0, 0
  115.     la      $a0, arrayPrint
  116.     li      $v0, 4
  117.     syscall
  118.     j       whileLoop
  119.  
  120. whileLoop:
  121.     beq     $s0, $s1, Exit
  122.     li      $t2, 0
  123.     li      $t3, 0
  124.     li      $t4, 0
  125.     sll     $t2, $s0, 2
  126.     add     $t3, $s2, $t2
  127.     lw      $t4, 0($t3)
  128.     move    $t4, $a0
  129.     li      $v0, 1
  130.     syscall
  131.     la      $a0, newline
  132.     li      $v0, 4
  133.     syscall
  134.     addi    $s0, $s0, 1
  135.     j       whileLoop
  136.    
  137. Exit:
  138.     jr $ra
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement