A good answer might be:

See below.

Add Entry to Sum

The count is increased by one. The pointer is increased by four. Next get the current array element and add it to the sum of all integers.

## 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

main:    ori      $8,$0,0        #  count = 0
         ori      $11,$0,0       #  sum = 0
         ori      $12,$0,0       #  neg = 0
         ori      $13,$0,0       #  pos = 0
         lui      $9,0x1000      #  point at SIZE

         lw       $15,0($9)      #  get SIZE
         addiu    $9,$9,4        #  point to first entry

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


# get entry, add to sum
         lw       $10,____($____) #  get entry

         sll      $0,$0,0        #  load delay

         addu     $11,$____,$____ #  add to sum

         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 12:

Fill in the blanks.