实验报告
一、 实验内容
用 MIPS 汇编语言实现递归和非递归两个版本的插入法排序,并在
SPIM 模拟器上执行。
二、 实验要求
1. 实现递归和非递归两个版本的插入法排序,对任一由0-9这10个不重复
的数构成的数组按升序进行排序
2. 用这两种版本的程序分别对如下3个数组进行排序
− 3, 7, 4, 5, 8, 0, 9, 6, 2, 1
− 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
− 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
在SPIM上运行,在console窗口中输出结果并验证其正确性(是否升序排
列)
3. 统计每一种程序版本和数组输入情况下执行的指令总数(从main第一条
指令开始,至main返回为止,syscall执行只计算为一条指令),同时说
明统计指令条数的方法。
三、 实验程序及结果
以下程序是在 QtSpim(新版本 SPIM)上运行调试通过。
1. 递归版本 MIPS 汇编程序
程序源码
递归版本插入排序 MIPS 汇编程序源程序
.globl main
.data
a:.word 0:40 #40 words inialized to zero
##inseron sort by recursive funcon
.text
main:
la $s0,a #load base address of array
li $s1,10 #inialize the couter to 10
##input 10 numbers
input_loop: #input the number
li $v0,5
syscall
sw $v0,0($s0) #store the input number to array
addi $s0,$s0,4 #increase the data base by 4
addi $s1,$s1,-1 #decrese the couter by 1