冒泡排序法
#################################################################################
#本程序实现(字节地址0x200,字地址0x80)开始的8个字单元的降序排序#
#################################################################################
.text
#利用循环进行赋值
addi $t0,$0,8 #循环8次
addi $s0,$0,-1 #从-1开始赋值
add $s1,$0,$0 #数组下标
sort_init:
sw $s0,512($s1)
addi $s0,$s0,1
addi $s1,$s1,4
addi $t0,$t0,-1
bne $t0,$0,sort_init
#利用冒泡法进行排序
addi $t0,$0,28 #外循环次数
sort_loop: #外循环
addi $t1,$0,0 #内循环前下标初始值
addi $t2,$0,4 #内循环后下标初始值
sort_inside: #内循环
lw $s3,512($t1) #$s3=[t1]
lw $s4,512($t2) #$s4=[t2]
slt $s0,$s3,$s4 #R[$rd]←R[$rs]<R[$rt] 小于置1,有符号比较
beq $s0,$0,sort_next
sw $s3, 512($t2)
sw $s4, 512($t1)
sort_next:
addi $t1,$t1,4
addi $t2,$t2,4
bne $t1,$t0,sort_inside
addi $t0,$t0,-4
bne $t0,$0,sort_loop
addi $v0,$zero,10 # system call for exit
syscall # we are out of here.
运行结果
运行打开存储器发现是相邻元素进行比较,小的数往后冒泡。
实验包自带的程序是选择法,是按照一位不动,依次和剩下的比较运行的
.text
#################################################################################
#本程序实现(字节地址0x200,字地址0x80)开始的8个字单元的降序排序,此程序可在mars mips仿真器中运行,运行时请将Mars Setting中的Memory Configuration设置为Compact,data at address 0
#
#################################################################################
.text
sort_init:
addi $s0,$0,-1
addi $s1,$0,0
sw $s0,512($s1)
addi $s0,$s0,1
addi $s1,$s1,4
sw $s0,512($s1)
addi $s0,$s0,1
addi $s1,$s1,4
sw $s0,512($s1)
addi $s0,$s0,1
addi $s1,$s1,4
sw $s0,512($s1)
addi $s0,$s0,1
addi $s1,$s1,4
sw $s0,512($s1)
addi $s0,$s0,1
addi $s1,$s1,4
sw $s0,512($s1)
addi $s0,$s0,1
addi $s1,$s1,4
sw $s0,512($s1)
addi $s0,$s0,1
addi $s1,$s1,4
sw $s0,512($s1)
#$s0为前一个下标,$s1为后一个下标.$s2大循环次数
addi $s2,$0,8 #循环8次
sort_loop:
add $s0,$zero,$zero #$s0=0
addi $s1,$zero,4 #$s1=4
sort_in:
lw $s3,512($s0) #$s3=[s0]
lw $s4,512($s1) #$s4=[s1]
slt $t0,$s3,$s4 #R[$rd]←R[$rs]<R[$rt] 小于置1,有符号比较
beq $t0,$0,sort_next #降序排序
sw $s3, 512($s1)
sw $s4, 512($s0)
sort_next:
add $s0, $0, $s1 #$s0=$s1
addi $s1,$s0,4 #$s1=4+$s0
bne $s0, $s2, sort_in
addi $s2,$zero,-1
bne $s2, $0, sort_loop
addi $v0,$zero,10 # system call for exit
syscall # we are out of here.