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