.data
array: .space 1024 #4*256
n: .word 0
list: .asciiz "
Sorted list: "
space: .asciiz " "
mesg: .ascii "Bubble Sort
"
.asciiz "
how many integers you want to sort: "
.text
main:
li $v0,4
la $a0,mesg
syscall
li $v0,5 #input number of sort N
syscall
sw $v0,n
li $s1,0 #initial
li $s2,0
la $t3,array #t3存array[0]的位置
move $t0,$zero #i=0
lw $s2,n
next:
beq $t0,$s2,sort #s2=len
li $v0,5
syscall
sw $v0,($t3) #存入a[j] j=0,4,8,16,....
add $t3,$t3,4
add $t0,1
j next
sort:
move $s5,$ra
la $s2,array
lw $s3,n
move $s0,$zero
for1tst:slt $t0,$s0,$s3
beq $t0,$zero,exit1
addi $s1,$s0,-1
for2tst:slti $t0,$s1,0
bne $t0,$zero,exit2
add $t2,$s2,$t1
lw $t3,0($t2)
lw $t4,4($t2)
slt $t0,$t4,$t3
beq $t0,$zero,exit2
move $a0,$s2
move $a1,$s1
jal swap
addi $s1,$s1,-1
j for2tst
exit2: addi $s0,$s0,1
j for1tst
exit1: move $ra,$s5
out: li $v0, 4
la $a0, list
syscall
li $t1, 0
lw $s0, n
la $t3 array
disply: beq $t1, $s0, exit
li $v0, 1
lw $a0, ($t3)
syscall
li $v0, 4
la $a0, space
syscall
addi $t3, 4
addi $t1, $t1, 1
j disply
exit: li $v0,10 # finished processing.
syscall
swap: add $t1,$a1,$a1
add $t1,$t1,$t1
add $t1,$a0,$t1
lw $t0,0($t1)
lw $t2,4($t1)
sw $t2,0($t1)
sw $t0,4($t1)
jr $ra
add $t1,$s1,$s1
add $t1,$t1,$t1
- Jun 04 Sat 2005 04:27
MIPS-sort
close
全站熱搜
留言列表
禁止留言