Professional Documents
Culture Documents
-1-
C:\Users\Little_Chick\Desktop\InsertionSort.asm Friday, April 29, 2011 7:48 PM
58 syscall
59 slt $t3, $t0, $s7 # comparison i and n
60 bne $t3, $zero, Output # if i < n go to label "Output"
61 Exit:
62 addi $v0, $zero, 10 # exit
63 syscall
64 InsertionSort:
65 addi $s2, $zero, 1 # i = 1
66 for:
67 slt $t0, $s2, $s7 # i < n ?
68 beq $t0, $zero, esc # if i >= n go to label "esc"
69 sll $t0, $s2, 2 # t0 = i * 4
70 add $t1, $s1, $t0 # address of array[i]
71 lw $t2, 0($t1) # x = array[i]
72 addi $s3, $s2, -1 # j = i - 1
73 while:
74 slt $t3, $s3, $zero # j < 0?
75 bne $t3, $zero, con # if j < 0 go to label "con"
76 sll $t3, $s3, 2 # j = j * 4
77 add $t4, $s1, $t3 # address of array[j]
78 lw $t5, 0($t4) # t5 = array[j]
79 slt $t0, $t2, $t5 # x < array[j] ?
80 beq $t0, $zero, con # if x >= array[j] go to label "con"
81 sw $t5, 4($t4) # array[j+1] = array[j]
82 addi $s3, $s3, -1 # j = j - 1
83
84 j while # jump to label "while"
85 con:
86 addi $s3, $s3, 1 # j = j + 1
87 sll $t6, $s3, 2 # j = j * 4
88 add $t6, $t6, $s1 # address of array[j+1]
89 sw $t2, 0($t6) # array[j+1] = x
90 addi $s2, $s2, 1 # i = i+1
91 j for # jump to label "for"
92 esc:
93 jr $ra
94
95
-2-