title: How to find the minimum value of an array in MIPS
body: <p>here is my code, I am having trouble getting the correct output. Where am I going wrong?I set min originally to zero, then check if the array is less than or equal to this value and then if it is I jump to a label and make the value of min to be the value of the array, then jump back to iterating the array.</p>
  
  <pre><code>xyz:    .word   -8, 16, -32, 64, -128, 256 
  
  # int main(void)
  #
  # local variable    register
  #   int *p      $s0
  #   int *end    $s1
  #   int min     $s2  
  #   int total   $s3
  #   
      .text
      .globl  main
  main:
      la  $s0, xyz                # p = foo
      addi    $s1, $s0, 24        # end = p + 6
      add $s3, $zero, $zero       # total = 0 
      add     $s2, $zero, $zero   # min = 0
  L1:
      beq $s0, $s1, L2    # if (p == end) goto L2
      lw  $t0, ($s0)      # $t0 = *p
      lw  $t1, ($s2)      # $t1 = min
      slt $t2, $t1, $t0       # check if min is less than p
      add $s3, $s3, $t0       # total += $t0
      bne     $t2, $zero, L3      # if min is less than p, go to L3 
      addi    $s0, $s0, 4     # p++
      j   L1
  L2:     
      add $v0, $zero, $zero   # return value from main = 0
      jr  $ra
  
  L3:
      move    $s2, $t0
      j   L1
  </code></pre>