A good answer might be:

See below

True and False Branches

Next implement the two branches; one adds to the sum of negatives, the other adds to the sum of positives. Check that you don't have the branches confused.

## Registers:
## $8 --- count                       $12 -- sum of negative integers
## $9 --- pointer to the array entry  $13 -- sum of positive integers
## $10 -- current array entry         $14 -- pos. or neg. flag
## $11 -- sum of all integers         $15 -- SIZE of the array

# while  count < SIZE do
loop:    beq      $8,$15,done 
         sll      $0,$0,0        #  branch delay


# get entry, add to sum
         lw       $10,0($9)      #  get entry
         sll      $0,$0,0        #  load delay
         addu     $11,$11,$10    #  add to sum

#  test neg. or pos.
         slti     $14,$10,0      #  set flag if entry is neg
         bne      $14,$0,neg     #  branch if negative
         sll      $0,$0,0        #  branch delay
         ____     $13,$13,$10    #  positive: add to PLUS
         j        _______
         sll      $0,$0,0        #  branch delay

neg:     ____     $12,$12,$10    #  negative: add to NEG
ifend:   addiu    $8,$8,1        #  count++
         addiu    $9,$9,4        #  point at next entry
         j        loop
         sll      $0,$0,0        #  branch delay

done:    sll      $0,$0,0        #  target for branch

        .data
size:   .word  17
array:  .word  12, -1, 8, 0, 6, 85, -74, 23, 99, -30, 30, 95, 4, 7, 10, 28, 14

QUESTION 14:

Fill in the blanks.