.data first: .ascii "Homer\0","Bart\0","Marge\0\0" last: .ascii "Simpson\0" .text la $s0,first loop: lbu $t0,0($s0) # load address of name beq $t0,$0,end # if it starts with null, at the end move $a0,$s0 # print first name jal print_str jal print_space # put a space between first and last name la $a0,last # print last name jal print_str jal print_nl # print new line move $a0,$s0 # get length so we can go to next name jal length add $s0,$s0,$v0 addi $s0,$s0,1 # skip null, next byte j loop end: li $v0,10 # exit syscall print_str: # prints a string at address in $a0 li $v0,4 syscall jr $ra print_nl: # prints a newline li $v0,11 addi $a0,$0,'\n' syscall jr $ra print_space: # prints a space character li $v0,11 addi $a0,$0,32 syscall jr $ra length: # computes length of string $a0 into $v0 # trashes: temporaries $t5,$t6 move $t5,$a0 length_loop: lbu $t6,0($t5) beq $t6,$0,length_end addi $t5,$t5,1 j length_loop length_end: sub $v0,$t5,$a0 jr $ra