MIPS 汇编程序设计实验
一、实验目的
1. 掌握 QTSPIM 的调试技术
2. 了解 MIPS 汇编语言与机器语言之间的对应关系
3. 掌握 MIPS 汇编程序设计
4. 了解 C 语言语句与汇编指令之间的关系
5. 熟悉常见的 MIPS 汇编指令
6. 掌握程序的存储映像
二、实验要求
1.完成汇编语言程序设计、调试、测试全过程
2.指出用户程序的内存映像,包括代码段和数据段
3.完成软件实验报告
三、实验环境:QTSPIM
运行在 windows 操作系统下的支持 MIPS32 指令集的 MIPS 微处理器仿真器,具备调试、运
行 MIPS32 汇编指令程序的功能
四、实验任务:
用汇编程序实现以下源代码:要求采用移位指令来实现乘除法
int main()
{
int
k,y;
int z[50];
y=56;
for(k=0:k<50;k++)
z[k]=y-16*(k/4+210);
}
五、实现
汇编源程序设计思路(算法):
1. 先判断 k 是否小于 50,如果大于 50,那么就直接跳到 exit。若小于 50,则开始 loop 循
环。
2. 因为在 z[k]中 k 不是立即数而是一个变量,因而用 mips 语言需要运用 add 语句进行地
址相加。
3. 在 loop 末尾需要让 k++,同时$s2 的地址首位需要加 4.
源代码:
.data
z:.space 200
.text
main:la $s2,z
li $s1,0#k=0=$s1
li $s0,56#y=56
li $t0,50
loop:beq $s1,$t0,exit
srl $t1,$s1,2
addi $t1,$t1,210
sll $t1,$t1,4
sub $t1,$s0,$t1
sw $t1,0($s2)
addi $s1,$s1,1
addi $s2,$s2,4
j loop
exit:
li $v0,10
syscall
调试过程:
当载入 txt 文件时,对话框出现如上内容,出现未识别的 character,找到该行,为“la $s2,z;”,
其中在 z 后多加了“;”号,导致出错,因而删除后,再次选择
载入,未出现错误提示框,点击运行,观察 data 框,数组 z[50]储存数据如下:
,
与预期结果符合。
结果
程序运行后寄存器的值
程序存储映像代码段、数据段
六、心得体会
在星期三晚上进行了 MIPS 汇编程序设计实验,自行编写了一个简单的 for 循环 MIPS
程序,虽然不难,但是在编写和运行的过程中遇到了各种各样的小问题,比如说在 txt 文件
中编写代码时半角和全角符号的混淆导致出错;在载入 txt 文件以后没有点运行的按钮;在
编写代码的时候没有让$s2 进行自加 4,导致地址出错;对于数组在 z[50]在内存中的存贮的
映像的具体对应理解不清楚,即分布应该是由 z[0]开始,到 z[49]j 结束。
这次实验让我学习了如何使用 QTSPIM,同时使用其处理模拟当中出现的问题,让我认
识到课本知识和操作技能相结合的重要性。我的应变能力和问题临时处理水平得到了巩固和
提高。