MIPS Merge Sort
data
prompt1: .asciiz "Enter the number of integers: "
prompt2: .asciiz "Enter integer: "
newline: .asciz "\\"
# Array size and pointer to array
array_size: .word 0
array_ptr: .word 0
.text
main:
# Print prompt and read array size
li $v0, 4 # Print string
la $a0, prompt1
syscall
li $v0, 5 # Read integer
syscall
sw $v0, array_size
# Allocate memory for array
mul $t0, $v0, 4 # Calculate bytes needed
li $v0, 9 # Allocate memory
syscall
sw $v0, array_ptr
# Read integers into array
li $t1, 0
loop:
beq $t1, $v0, end_input
li $v0, 4 # Print string
la $a0, prompt2
syscall
li $v0, 5 # Read integer
syscall
sw $v0, 0($a1)
addi $a1, $a1, 4
addi $t1, $t1, 1
j loop
end_input:
# Call merge sort
jal merge_sort
# Print sorted array
li $t1, 0
loop2:
beq $t1, $v0, exit
lw $v0, 0($a1)
li $v1, 1
syscall
addi $a1, $a1, 4
addi $t1, $t1, 1
j loop2
exit:
li $v0, 10 # Exit program
syscall
merge_sort:
# Implement merge sort algorithm using recursion
# ...
.end