- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
微机原理实验报告
实验名称:MIPS汇编程序设计
院系:电信学院
班级:
姓名:
指导老师:
一、实验目的:
熟习MIPS汇编程序开发环境,学习使用Qtstim工具。知道怎样查察内存空间分派。
认识C语语言句与汇编指令之间的关系。
掌握MIPS汇编程序设计,掌握QTSPIM的调试技术。
4.认识MIPS汇编语言与机器语言之间的对应关系。
熟习常有的MIPS汇编指令6.掌握程序的内存映像。
二、实验内容
用汇编程序实现以下伪代码:要求使用移位指令实现乘除法运算。
Intmain( )
{
IntK,Y;
IntZ[50];
Y=56;
For(k=0;k<50;K++)Z[k]=Y-16*(k/4+210);
}
三、程序设计及剖析
语言剖析:
有两个变量是int型,一个数组型;还有一个循环履行过程。
汇编程序实现剖析:
第一需要定义用户数据段,获取一个内存空间作为数组空间。
再选定几个存放器作为K,Y以及输出,此中输出输出和Y能够合
用一个存放器。
设计思路:
分派完空间地点后,最重要的是达成循环控制。循环控制有
两个思路:能够是先判断后循环;或许是先循环后判断
即如图
开始
开始
赋值
赋值
计算
K<50
K=k+1
计算否
K<50
否是
K=k+1
是结束
结束
slti$t2,$t0,50#判断k能否于50slti$t2,$t0,50#判断k能否小
于50,
beq$t2,$t3($t2=1循环,不然结束。)
beq$t2,$0,#是则结束
四、程序实现及调试剖析
1.汇编程序代码实现:
方法一
.data#定义用户数据段
z:.space200#
数组为int型,大小为50,因此占内存4*50
str:.asciiz"
"#
输出结果之间的缝隙
.text
main:
la$s0,z#$s0
#
为数组在z[]
li$t0,0#$s1
#
代表k计数,初始值为0
li$t1,56#$t2
#
代表Y,初值为56
loop:
slti$t2,$t0,50#判断k能否于50
beq$t2,$0,done#当k大于等于50,跳转结束
srl$t3,$t0,2#k/4
addi$t3,$t3,210#k/4+210
sll$t3,$t3,4#16*(k/4+210)
sub$t3,$t1,$t3#y-16*(k/4+210)
sw$t3,0($s0)#写进z[k]
li$v0,1#输出
addi$a0,$s0,0
syscall
li$v0,4#输出间隔
la$a0,str
syscall
addi$s0,$s0,4#
地点移一位
addi$t0,$t0,1#k
加
1
jloop#循环
done:
li$v0,10
syscall
调试过程
1.编写程序:详尽见代码
2.装载程序
选择file,选择ReinitializeandLoadFile,把写好的文件导入
QtSpim。
3.假如没有错误,便运转。点击上图的小三角
运转以后点击不一样的窗口即可获取我们想要的结果。详细详尽结果如
下列图
内存占用状况映像
剖析:由图可知数组地点从0Xfffff318—0Xfffff258;每行有四个是
同样的,总合50个地点。这是因为数组含有50个元素,而int型数
据占4个字节空间,字对齐方式,因此连续四个地点是同样的
并且有上表也能够得出Qpstim仿真器是按大字节序
数据段内存映像
表格以下(数值都采纳16进制)
内存地点
变量
值
内存地点
变量
值
(16进
名
(16进制)
名
制)
fffff318
Z[0]
2
fffff2b8
Z[25]
2
fffff318
Z[1]
6
fffff2b8
Z[26]
6
fffff318
Z[2]
0
fffff2b8
Z[27]
0
fffff318
Z[3]
4
fffff2a8
Z[28]
4
fffff308
Z[4]
8
fffff2a8
Z[29]
8
fffff308
Z[5]
2
fffff2a8
Z[30]
2
fffff308
Z[6]
6
fffff2a8
Z[31]
6
fffff308
Z[7]
0
fffff298
Z[32]
0
fffff2f8
Z[8]
4
fffff298
Z[33]
4
fffff2f8
Z[9]
8
fffff298
Z[34]
8
fffff2f8
Z[10]
2
fffff298
Z[35]
2
fffff2f8
Z[11]
6
fffff288
Z[36]
6
fffff2e8
Z[12]
0
fffff288
Z[37]
0
fffff2e8
Z[13]
4
fffff288
Z[38]
4
fffff2e8
Z[14]
8
fffff288
Z[39]
8
fffff2e8
Z[15]
2
ffff
文档评论(0)