### A good answer might be:

See below.

# In General...

The general case is illustrated at right. The register `$s1` points to the current node, which is already linked to its predecessor. Another iteration of the loop will attach another node at the end.

    loop:   bgtu    $s2,$s3,done      # while (counter <= limit )

            # create a node
            li      $v0,9             # allocate memory
            li      $a0,8             # 8 bytes
            syscall                   # $v0 <-- address

            # link this node to the previous
                                      # $s1 = previous node
            sw      $v0,4($s1)        # copy address of second node
                                      # into the previous node

            # make the new node the current node
            move    $s1,$v0

            # initialize the node
            sw      $s2,0($s1)        # save the counter as
                                      # the current nodes data

            addi    $s2,$s2,1         # counter++
            b       loop

    done:

### QUESTION 14:

When the loop ends, control is passed to `done`. What must now be done?