A good answer might be:

          .text
main:     
          . . . .
          
          lw    $t0,sub1add             # get first address in Jump Table
          
          jalr  $t0                     # pass control to sub1
          
          . . . .

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

Full, Impractical, Program

Confusion Alert: Notice that the instruction that is used to load $t0 with the entry point to sub1 is a lw sub1add instruction. We want $t0 to get the contents of sub1add, which is what a lw instruction does.

Here is a full program that includes a main that calls the two subroutines. This is a highly contrived example created to show a jump table and a jalr instruction. It is not a sensible way to write a "Hello World" program.

          .globl   main
          .text
main: 
          subu     $sp,$sp,4          # push return address
          sw       $ra,($sp)
          
          lw       $t0,sub1add        # get first address
          jalr     $t0                # pass control
          
          lw       $t0,sub2add        # get second address
          jalr     $t0                # pass control
          
          lw       $ra,($sp)          # pop return address
          addu     $sp,$sp,4
          jr       $ra

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


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

QUESTION 6:

How many bytes are in each entry in the Jump Table?