.data m_str: .asciiz "Hello World!\n" .text li $a0,3 la $a1,m_str jal printn li $v0,10 syscall print: li $v0,4 syscall jr $ra printn: move $s0,$a0 # save number times to print move $a0,$a1 # copy the address of string move $s1,$ra # save return address printn_loop: beq $s0,$0,printn_exit jal print addi $s0,$s0,-1 j printn_loop printn_exit: jr $s1