没有合适的资源?快使用搜索试试~ 我知道了~
18324034_林天皓_第五次实验报告_mips31
需积分: 0 0 下载量 113 浏览量
2022-08-03
11:24:39
上传
评论
收藏 540KB PDF 举报
温馨提示
试读
11页
1.熟悉 MIPS 汇编程序开发环境,学习使用 MARs 工具 2.了解 C 语言语句与汇编指令之间的关系 3. 掌握 MIPS 汇编程序设计,掌握 MARs
资源详情
资源评论
资源推荐
- 1 -
中山大学数据科学与计算机学院本科生实验报告
(2019 学年秋季学期)
课程名称:计算机组成原理实验 任课教师: 助教:
年级&班级
19 计科超算
专业(方向)
学号
18324034
姓名
林天皓
电话
Email
linth5@mail2.sysu.edu.cn
开始日期
2020.10.16
完成日期
2020.10.23
一、 实验题目
实验 6 MIPS 汇编程序设计 mips 实验 3
二、实验目的
1.熟悉 MIPS 汇编程序开发环境,学习使用 MARs 工具。知道如何查看内存空间分配。
2.了解 C 语言语句与汇编指令之间的关系。
3. 掌握 MIPS 汇编程序设计,掌握 MARs 的调试技术。
4.了解 MIPS 汇编语言与机器语言之间的对应关系 。
5.熟悉常见的 MIPS 汇编指令
6.掌握程序的内存映像。
三、实验内容与
1 实验原理
继续通过 MARS4.5 程序解析与执行 mips 汇编程序,在实验内容 1 中,需要熟练运
用程序中的堆栈空间和存储与读取内存空间的 lw 和 sw 指令,通过合适的在堆栈中保存值
与堆栈中的值恢复到临时的寄存器内,完成两个内存空间中的值 n1 和 n2 的交换过程。
在实验内容 2 中,需要了解在 c 语言中变量的声明,赋值,运算的操作如何转换为对应
- 2 -
的 mips 汇编代码,并且按照题目所给的表达式完成对数组内数据的计算,并将最终计算得
到数组中每一位的数据的结果填写在实验结果所给的空格中。
2. 实验步骤
实验内容1:
该实验中,由题目要求,只能使用一个临时变量寄存器 t0,按照题目需求,我们至少需
要储存两个数字,所以必须在程序的运行过程中通过使用堆栈内的空间中至少储存一个数字。
程序运行的流程如下:
1. 申请一个字的堆栈空间(由于堆栈仅有一个字节,以下所有的堆栈即为堆栈第 1 个位置)
2. 将 n1 储存到 t0 寄存器中
3. 将 t0 中的值储存到堆栈中
4. 将 n2 储存到 t0 寄存器中
5. 把 t0 寄存器中的值赋值到 a0 的地址中
6. 将堆栈中的值赋值到 t0 寄存器中
7. 把 t0 寄存器中的值赋值到 a1 的地址中
(具体的流程图在报告末尾的流程图中给出)
通过上述流程,即完成了把 a0 地址中值与 a1 地址中的值交换的目的。
完整程序代码如下:
.data
n1: .word 14
n2: .word 27
.text
main:
la $a0,n1
la $a1,n2
jal swap
li $v0,1
lw $a0,n1
- 3 -
syscall
li $v0,11
li $a0,' '
syscall
li $v0,1
lw $a0,n2
syscall
li $v0,11
li $a0,'\n'
syscall
li $v0,10
syscall
swap:
move $fp,$sp
addiu $sp,$sp,-4
lw $t0 ,0($a0) # t0= n1
sw $t0 ,0($sp) # n1 入栈
lw $t0 ,0($a1) # t0 = n2
sw $t0 ,0($a0) # *a0 = n2
lw $t0 ,0($sp) # t0 = n1
sw $t0 ,0($a1) # *a1 = n2
addiu $sp,$sp,4
jr $ra
在运行 swap 中核心的六条代码的过程中,各个寄存器的值与储存空间中的值变化如下:
表 1-分步骤 swap 函数中内存与寄存器的值变化
剩余10页未读,继续阅读
王者丶君临天下
- 粉丝: 18
- 资源: 265
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0