156k views
3 votes
MIPS Assembly program: Accept N numbers from the user (or list the input array in the program similar to the demo code) and sort the N numbers using any sorting algorithm. Print both the sorted array and unsorted array. N should be greater than or equal to 10.

User Kesta
by
6.6k points

1 Answer

1 vote

Answer:

main:

la $t0, Array # Copy the base address of your array into $t1

add $t0, $t0, 40 # 4 bytes per int * 10 ints = 40 bytes

outterLoop: # Used to determine when we are done iterating over the Array

add $t1, $0, $0 # $t1 holds a flag to determine when the list is sorted

la $a0, Array # Set $a0 to the base address of the Array

innerLoop: # The inner loop will iterate over the Array checking if a swap is needed

lw $t2, 0($a0) # sets $t0 to the current element in array

lw $t3, 4($a0) # sets $t1 to the next element in array

slt $t5, $t2, $t3 # $t5 = 1 if $t0 < $t1

beq $t5, $0, continue # if $t5 = 1, then swap them

add $t1, $0, 1 # if we need to swap, we need to check the list again

sw $t2, 4($a0) # store the greater numbers contents in the higher position in array (swap)

sw $t3, 0($a0) # store the lesser numbers contents in the lower position in array (swap)

continue:

addi $a0, $a0, 4 # advance the array to start at the next location from last time

bne $a0, $t0, innerLoop # If $a0 != the end of Array, jump back to innerLoop

bne $t1, $0, outterLoop # $t1 = 1, another pass is needed, jump back to outterLoop

Step-by-step explanation:

User GingerJim
by
6.6k points