title: MIPS - Having trouble finding the minimum value in an array
body: <p>so I've been given an assignment in which I'm supposed to find the index of the max and min values in a user-created 10 digit array in MIPS assembly language. I've been able to find the max value but I'm having trouble finding the min value. I figured it should be a simple solution once I find the max value but I was wrong.</p>
  
  <p>Here is what i have to find the max value:</p>
  
  <pre><code>deleteMax:
  # $s7 is the register where the address of the array is stored
  # $s0 is the register where the array size is stored
  
  # Clear out unimportant registers
  addi $s1, $zero, 0
  addi $t0, $zero, 0
  addi $s3, $zero, 0
  addi $s4, $zero, 0
  addi $t6, $zero, 0
  addi $t7, $zero, 0
  
  addi $t0, $zero, 0               # Address of first element in bytes
  li $t3, -1                       # Max index
  li $s2, 0                        # Max value
  li $t1, 0                        # Counter
  
  
  loop:
  sll $s1, $t1, 2
  add $s1, $s1, $s7
  lw $s3, 0($s1)                   # Load the first element into $s3
  li $v0, 1
  move $a0, $s3
  syscall
  
  
  slt $t2, $s3, $s2      # If $s3 &lt; $s2, $t2 = 1, if $s3 &gt;= $s2, $t2 = 0
  bne $t2, $zero, find_max
  ori $s2, $s3, 0            # Updates the maximum value
  ori $t3, $t1, 0            # Updates the maximum value index
  
  find_max:
  addi $t1, $t1,1           # Increase the counter
  bne $t1, $s0, loop        # if the counter hasn't reached the end, go 
                            back to the loop
  j print_max
  </code></pre>
  
  <p>This does what I want: Find the max and it's index. However when I try switching these 2 lines of codes:</p>
  
  <pre><code>slt $t2, $s3, $s2      # If $s3 &lt; $s2, $t2 = 1, if $s3 &gt;= $s2, $t2 = 0
  bne $t2, $zero, find_max
  </code></pre>
  
  <p>to lets say:</p>
  
  <pre><code>slt $t2, $s3, $s2      # If $s3 &lt; $s2, $t2 = 1, if $s3 &gt;= $s2, $t2 = 0
  bne $t2, 1, find_max
  </code></pre>
  
  <p>The min value comes out to 0? </p>
  
  <p>I'm not sure why this is happening and unsure what I can do for my current situation to find the min value.</p>
  
  <p>I hope I've explained myself and my code + comments have explained the situation enough. Im more than happy to answer any more confusion you guys may have.</p>