title: MIPS Assembly Branch If Less Than
body: <p>I've been working on a very basic MIPS program that computes some stuff on ticket sales. I have all the functionality implemented, but when I do my IF statements (blt --> branch if less than) I am running into some errors. I have the following data stored in temporary registers:</p>
  
  <pre><code>- $t0 = # of VIP tickets.
  - $t1 = # of General Admission tickets.
  - $t2 = # of Box Office tickets.
  - $t4 = Average ticket sales.
  </code></pre>
  
  <p>I have checked that the values are stored accordingly and the code does work if the condition is FALSE, but if the condition is met it will branch and still print the code before the branch. Here is part of my code: </p>
  
  <pre><code>  blt $t0, $t4, VIP_LESS  # if $t0 &lt; $t4 then VIP
    b VIP_GREAT
    VIP_LESS:
      li $v0, 4
      la $a0, less_avg_vip
      syscall 
    VIP_GREAT:
      li $v0, 4
      la $a0, great_avg_vip
      syscall 
    blt $t1, $t4, GEN_LESS # if $t1 &lt; $t4 then GEN
    b GEN_GREAT
    GEN_LESS:
      li $v0, 4
      la $a0, less_avg_general
      syscall
    GEN_GREAT:
      li $v0, 4
      la $a0, great_avg_general
      syscall 
    blt $t2, $t4, BOX_LESS  # if $t2 &lt; $t4 then BOX_LESS
    b BOX_GREAT
    BOX_LESS:
      li $v0, 4
      la $a0, less_avg_box
      syscall 
    BOX_GREAT:
      li $v0, 4
      la $a0, great_avg_box
      syscall 
    li $v0, 4
    la $a0, endl
    syscall
  </code></pre>
  
  <p>Can anyone see why I am getting a problem with this? The output of my program looks something like this:</p>
  
  <pre><code>VIP: 1349 tickets
  General: 5278 tickets
  Box: 4367 tickets
  
  Average: 3215 tickets
  
  VIP: Less than average.
  General: Greater than average.
  General: Less than average.
  Box: Greater than average.
  Box: Less than average.
  </code></pre>
  
  <p>EDIT: working code.</p>
  
  <pre><code> blt $t0, $t4, VIP_LESS  # if $t0 &lt; $t4 then VIP
    li $v0, 4
    la $a0, great_avg_vip
    syscall
    j GENERAL_IF
    VIP_LESS:
      li $v0, 4
      la $a0, less_avg_vip
      syscall 
    GENERAL_IF: 
      blt $t1, $t4, GEN_LESS # if $t1 &lt; $t4 then GEN
      li $v0, 4
      la $a0, great_avg_general
      syscall 
      j BOX_IF
      GEN_LESS:
        li $v0, 4
        la $a0, less_avg_general
        syscall
    BOX_IF:
      blt $t2, $t4, BOX_LESS  # if $t2 &lt; $t4 then BOX_LESS
      li $v0, 4
      la $a0, great_avg_box
      syscall 
      j END_IF
      BOX_LESS:
        li $v0, 4
        la $a0, less_avg_box
        syscall 
    END_IF:
      li $v0, 4
      la $a0, endl
      syscall 
  </code></pre>