Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .globl main
- .data
- .align 5
- array: .asciiz "Joe"
- .align 5
- .asciiz "Jenny"
- .align 5
- .asciiz "Jill"
- .align 5
- .asciiz "John"
- .align 5
- .asciiz "Jeff"
- .align 5
- .asciiz "Joyce"
- .align 5
- .asciiz "Jerry"
- .align 5
- .asciiz "Janice"
- .align 5
- .asciiz "Jake"
- .align 5
- .asciiz "Jonna"
- .align 5
- .asciiz "Jack"
- .align 5
- .asciiz "Jocelyn"
- .align 5
- .asciiz "Jessie"
- .align 5
- .asciiz "Jess"
- .align 5
- .asciiz "Janet"
- .align 5
- .asciiz "Jane"
- .align 5
- .align 2
- data: .space 64
- size: .word 16
- .text
- main:
- lw $a0, size
- move $a1, $zero
- la $t0, array
- la $t1, data
- data_int: sw $t0, 0($t1)
- addi $t0, $t0, 32 # initializes the data array
- addi $a1, $a1, 1
- addi $t1, $t1, 4
- beq $a0, $a1, insertSort
- b data_int
- str_lt: lb $t2, 0($a2) # $t2 is *x, $t3 is *y
- lb $t3, 0($a3)
- beq $t2, $zero, end_loop # if *x -- '\0', exit loop
- beq $t3, $zero, end_loop # if *y -- '\0', exit loop
- blt $t2, $t3, returnOne # if ( *x < *y ) return 1
- blt $t2, $t2, returnZero # if ( *x < *y ) return 0
- addi $a2, $a2, 1 # x++
- addi $a3, $a3, 1 # y++
- b str_lt # loop
- end_loop: beq $t3, $zero, returnZero # if ( *y == '\0' ) return 0
- b returnOne # return 1
- returnZero: li $v0, 0 # return 0
- jr $ra
- returnOne: li $v0, 1 # return 1
- jr $ra
- insertSort: li $t4 1 # char i
- la $s0, data
- lw $s1, size
- iLoop: beq $t4, $s1, print_array
- mul $a0, $t4, 4
- add $s4, $a0, $s0 # *i
- lw $s7, ($s4)
- lw $a2, ($s4)
- subi $t5, $t4, 1 #char j
- jLoop: bltz $t5 set
- mul $a1, $t5, 4
- add $s5, $a1, $s0 # *j
- lw $a3, ($s5)
- jal str_lt
- beqz $v0 set
- addi $t6, $s5, 4
- lw $t9, ($s5) # a[j+1] = a[j];
- sw $t9, ($t6)
- subi $t5, $t5 1
- b jLoop
- set: move $t9, $s7 # a[j+1] = value;
- mul $a1, $t5, 4
- add $t6, $a1, $s0
- addi $t6, $t6, 4
- sw $t9, ($t6)
- addi $t4, $t4, 1
- b iLoop
- print_array: lw $s0, size
- move $s1, $zero
- la $s2, data
- print_loop: beq $s0, $s1, end
- lw $a0, ($s2)
- li $v0, 4
- syscall
- addi $s1, $s1, 1
- addi $s2, $s2, 4
- b print_loop
- end:
Add Comment
Please, Sign In to add comment