# Program to illustrate nested procedure calls .data 0x0 string1: .asciiz "Hello" string2: .asciiz " world\n" .text 0x3000 main: jal hello ori $v0, $0, 10 # system call code for exit syscall # exit the program hello: addi $sp, $sp, -8 # make room on stack sw $ra, 4($sp) # save $ra sw $fp, 0($sp) # save $fp addi $fp, $sp, 4 # set $fp li $v0, 4 # system call code for string la $a0, string1 # address of string is in $a0 syscall # print the string jal world lw $ra, 0($fp) # restore $ra addi $sp, $fp, 4 # restore $sp lw $fp, -4($fp) # restore $fp jr $ra world: li $v0, 4 la $a0, string2 syscall jr $ra