MIPS汇编实现冒泡排序

使用MIPS汇编语言实现冒泡排序:

.data
array : .word 10,23,33,5,20,77,13,28
.align 2
msg1: .asciiz " Array: "
msg2: .asciiz "\n  Sorted"
.text
######################################
#$t1 : array pointer
#$t2: array length, 8
#$t3: iteration num
#$s2: a flag, count the print number, 为1时表示还未排序,等于2时表示已经排序,结束程序
######################################
	li $s2,0
main:
	li $v0,4
	la $a0,msg1
	syscall
	li $t2,8
	li $t3,1
	la $t0,array
loop:	
	lw $t1,0($t0)
	move $a0,$t1
	li $v0,1
	syscall
	li $v0,11
	la $a0,' '
	syscall
	addi $t0,$t0,4  #计算基址偏移量
	addi $t3,$t3,1
	ble $t3,$t2,loop
	addi $s2,$s2,1
	beq $s2,1,Sort
	
	li $v0,10
	syscall
Sort:
	li $t1,-1	# i
	li $t2,-1	# j
	la $t0,array
loop1:
	addi $t1,$t1,1
	li $t2,-1
loop2:
	addi $t2,$t2,1
	sll $t2,$t2,2
	add $t0,$t0,$t2
	lw $s1,0($t0)
	lw $s2,4($t0)
	ble $s1,$s2,next #if a[j] > a[j+1] ,the swap 
	sw $s2,($t0)
	sw $s1,4($t0)
next:
	la $t0,array
	srl $t2,$t2,2
end2:
	ble $t2,6,loop2
end1:
	ble $t1,6,loop1
exit:
	li $v0,4
	la $a0,msg2
	syscall
	b main
	
	

你可能感兴趣的:(mips汇编)