A good answer might be:

0x00400014

Jump Table

You can look at the dump of the data section and find the second subroutine's address following that of the first.

Look again at the example program. A table of addresses of entry points is called a jump table. Its intended use is to act as a list of locations that that control can jump to.

          .text
sub1:     li       $v0,4
          la       $a0,messH
          syscall
          jr       $ra
          .data
messH:    .asciiz  "Hello "

          .text
sub2:     li       $v0,4
          la       $a0,messW
          syscall
          jr       $ra
          .data
messW:    .asciiz  "World\n"

          .data
sub1add:  .word sub1                    # Jump Table
sub2add:  .word sub2

Usually there would be a main or other routine that calls the subroutines. Our example does not have this, yet.

QUESTION 4:

What is the usual instruction for jumping to a subroutine?