您的位置:首页 > 理论基础

计算机组成原理之MIPS汇编:冒泡排序

2017-04-02 20:52 537 查看

一. 实验目的

认识和掌握MIPS汇编语言程序设计的基本方法;

熟悉PCSpim模拟器的使用。

二. 实验内容

从键盘输入10个无符号字数并从大到小进行排序,排序结果在屏幕上显示出来。

三. 实验器材

电脑一台、PCSpim模拟器软件一套。

废话不多说,先贴代码。第一次写汇编,非完全自创,有参考,record一下。

解释一下:

.globl main将main声明为全局main函数

.data(数据段) 数据声明

.text(文本段,也称代码段),顾名思义,贴代码的地方

MIPS汇编的语法自己学习去吧:)

.globl main
.data
sortarray:.space 40
seprate: .asciiz " "
.text
# $t0: temp
# $t4: i
# $t6: j
# $t8: k
# $t5: size of aortarray
main:
addi $t5, $zero, 10
addi $t4, $zero, 9
addi $t8, $zero, 0
la $t1, sortarray
loop:
li $v0 5
syscall
sw $v0, 0($t1)
addi $t8, $t8, 1
addi $t1, $t1, 4
sub $t7, $t5, $t8
bgtz $t7, loop

loop1:
la $t1, sortarray
addi $t6, $zero, 0
loop2:
lw $t0, 0($t1) #t0 = array[j]
lw $t7, 4($t1)    # array[j+1]
sub $t2, $t7, $t0
bgtz $t2, increment
sw $t7, 0($t1)
sw $t0, 4($t1)

increment:
addi $t6, $t6, 1 #j ++
addi $t1, $t1, 4 #next entrry
sub $t2, $t4, $t6 #t2 = i-j
bgtz $t2, loop2 #if j < i ,continue to loop2

addiu $t4, $t4, -1  #i--
lw $a0, 0($t1)   #'max' entry each circle
li $v0, 1 # output int
syscall
la $a0, seprate
li $v0, 4 # output char
syscall
bne $t4, $zero, loop1

la $t1, sortarray
lw $a0, 0($t1)
li $v0, 1
syscall

li $v0, 10
syscall
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: