.text .globl swap swap: addi $sp, $sp, -8 # Make space on stack sw $ra, 0($sp) # Save return adress sll $t1, $a1, 2 add $t1, $a0, $t1 lw $t0, 0($t1) lw $t2, 4($t1) sw $t2, 0($t1) sw $t0, 4($t1) lw $ra, 0($sp) # Restore return adress addi $sp, $sp, 8 # Restore stack pointer jr $ra # Return .globl main main: li $a0, 2 li $a1, 3 addi $sp, $sp, -4 # Make space on stack sw $ra, 0($sp) # Save return adress # Print the integer result in a0 li $v0, 1 # Load the system call number syscall # Print endl la $a0, endl # Load the adress of the string li $v0, 4 # Load the system call number syscall # Return. li $v0, 0 # Load return value in v0 lw $ra, 0 ($sp) # Restore return adress addi $sp, $sp, 4 # Restore stack pointer jr $ra # Return. .data endl: .asciiz "\n" # End of program