#********************************************
# 10个数字的输入与排序
#********************************************
#********************************************
.text # 代码段
.globl main # 程序从此开始
main:
la $t6,array #t6为数组首地址
move $t7,$zero #初始化t7,用于循环计数
input:
li $v0,5
syscall #系统调用 输入数字
move $t0,$t7
mul $t0,$t0,4
addu $t1,$t0,$t6
sw $v0,0($t1) #将数字存进array[i]
addi $t7,$t7,1 #i++
blt $t7,10,input #输入待排序整数,直至达到t8中的给定数目
move $t2,$zero #外循环计数i
move $t3,$zero #内循环计数j
sort:
bge $t2,10,output #若循环次数达到10,跳转至输出
addi $t3,$t2,1 #t3=t2+1
inner_loop:
mul $t1,$t2,4
addu $t1,$t1,$t6
lw $t4,0($t1) #t4=array[i]
mul $t1,$t3,4
addu $t1,$t1,$t6
lw $t5,0($t1) #t5=array[j]
bge $t5,$t4,swap #如果array[j]>=array[i],交换
addi $t3,$t3,1
blt $t3,10,inner_loop
addi $t2,$t2,1
blt $t2,10,sort
swap:
mul $t1,$t2,4
addu $t1,$t1,$t6
sw $t5,0($t1)
mul $t1,$t3,4
addu $t1,$t1,$t6
sw $t4,0($t1)
addi $t3,$t3,1
blt $t3,9,inner_loop
blt $t2,9,sort
output:
move $t7,$zero
print_loop:
move $t0,$t7
mul $t0,$t0,4
addu $t1,$t0,$t6
lw $a0,0($t1)
li $v0,1
syscall
addi $t7,$t7,1
la $a0, seperate
li $v0, 4
syscall
blt $t7,10,print_loop
jr $ra
li $v0,10
syscall
.data
array:
.space 1024 #开辟数组空间
seperate:
.asciiz " "
c++如下: