0x00400014
Look at the data section. The second subroutine's address is stored in memory right after the first subroutine's address.
.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
Look again at the example program.
A table of addresses is called a jump table. It is a list of locations that that control can jump to.
Usually there would be a main or other routine that
calls the subroutines.
Our example does not have this, yet.
What is the usual instruction for passing control to a subroutine?