Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .data
- size_prompt: .asciiz "Number of integers: "
- value_prompt: .asciiz "Enter a value: "
- sorted_arr: .asciiz "The sorted array is: "
- separator: .asciiz ", "
- nl: .asciiz "\n"
- .globl main
- .text
- main:
- la $a0, size_prompt
- li $v0, 4
- syscall
- li $v0, 5
- syscall
- move $s0, $v0
- sll $a0, $v0, 2
- li $v0, 9
- syscall
- move $s1, $v0
- ori $s2, $zero, 0x0
- ori $s3, $zero, 0x0
- #s0 - size of the array
- #s1 - array's address
- #s2 - offset
- #s3 - counter
- jal read_array
- ori $s2, $zero, 0x0
- ori $s3, $zero, 0x0
- jal bubble_sort
- la $a0, sorted_arr
- li $v0, 4
- syscall
- ori $s2, $zero, 0x0
- ori $s3, $zero, 0x0
- jal print_array
- j exit
- read_array:
- la $a0, value_prompt
- li $v0, 4
- syscall
- li $v0, 5
- syscall
- move $t0, $v0
- add $t1, $s1, $s2
- sw $t0, 0($t1)
- addi $s3, $s3, 1
- addi $s2, $s2, 4
- beq $s3, $s0, done
- j read_array
- bubble_sort:
- outer:
- beq $s0, $s3, done
- sub $t0, $s0, $s3
- subi $t0, $t0, 1
- ori $t1, $zero, 0x0
- inner:
- beq $t1, $t0, continue_outer
- mul $t2, $t1, 4
- add $t3, $s1, $t2
- lw $t4, 0($t3)
- lw $t5, 4($t3)
- bgt $t4, $t5, to_swap
- continue_inner:
- addi $t1, $t1, 1
- j inner
- to_swap:
- mul $s2, $t1, 4
- sub $sp, $sp, 8
- move $s4, $ra
- jal swap
- move $ra, $s4
- addi $t1, $t1, 1
- j inner
- continue_outer:
- addi $s3, $s3, 1
- j outer
- swap:
- add $s6, $s1, $s2
- lw $t6, 0($s6)
- lw $t7, 4($s6)
- sw $t7, 0($s6)
- sw $t6, 4($s6)
- lw $s5, 0($sp)
- j done
- print_array:
- beq $s3, $s0, done
- add $t0, $s1, $s2
- lw $t1, 0($t0)
- li $v0, 1
- move $a0, $t1
- syscall
- move $t2, $s0
- addi $s3, $s3, 1
- addi $s2, $s2, 4
- beq $t2, $s3, last_one
- j others
- last_one:
- la $a0, nl
- li $v0, 4
- syscall
- j print_array
- others:
- la $a0, separator
- li $v0, 4
- syscall
- j print_array
- done:
- jr $ra
- exit:
- li $v0, 10
- syscall
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement