版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、微机原理实验报告十一月整理微机原理实验报告十一月整理 PAGE PAGE 1 微机原理实验报告实验名称:MIPS汇编程序设计院系:电信学院班级:姓名:指导老师:实验目的:1.熟悉MIPS汇编程序开发环境,学_使用Qtstim工具。知道如何查看内存空间分配。2.了解C语言语句与汇编指令之间的关系。3.掌握MIPS汇编程序设计,掌握QTSPIM的调试技术。4.了解MIPS汇编语言与机器语言之间的对应关系。5.熟悉常见的MIPS汇编指令6.掌握程序的内存映像。二、实验内容1.用汇编程序实现以下伪代码:要求使用移位指令实现乘除法运算。Intmain()IntK,Y;IntZ50;Y=56;For(k=
2、0;k50;K+)Zk=Y-16*(k/4+210);三、程序设计及分析1.C语言分析:有两个变量是int型,一个数组型;还有一个循环执行过程。2.汇编程序实现分析:首先需要定义用户数据段,获得一个内存空间作为数组空间。再选定几个寄存器作为K,Y以及输出,其中输出输出和Y可以合用一个寄存器。3.设计思路:分配完空间地址后,最重要的是完成循环控制。循环控制有两个思路:可以是先判断后循环;或者是先循环后判断即如图开始开始开始开始赋值int K, Y ;int Z50 ;K=0;赋值int K, Y ;int Z50 ;K=0;Y = 56;赋值赋值int K, Y ;int Z50 ;K=0;Y
3、= 56;计算ZK = Y - 16 * ( K / 4 + 210) ;计算ZK = Y - 16 * ( K / 4 + 210) ;K50K50计算ZK = Y - 16 * ( K / 4 + 210) ;K=计算ZK = Y - 16 * ( K / 4 + 210) ;K=k+1K50K50K=k+1结束K=k+1结束是slti $t2,$t0,50 #判断slti $t2,$t0,50 #判断k是否小于50,beq $t2,$0,#是则结束#否,循环结束slti$t2,$t0,50#判断k是否于50beq$t2,$t3($t2=1循环,否则结束。)四、程序实现及调试分析汇编程序代
4、码实现:方法一.data#定义用户数据段z:.space200#数组为int型,大小为50,所以占内存4*50str:.asciiz#输出结果之间的空隙.textmain:la$s0,z#$s0#为数组在zli$t0,0#$s1#代表k计数,初始值为0li$t1,56#$t2#代表Y,初值为56loop:slti$t2,$t0,50#判断k是否于50beq$t2,$0,done#当k大于等于50,跳转结束srl$t3,$t0,2#k/4addi$t3,$t3,210#k/4+210sll$t3,$t3,4#16*(k/4+210)sub$t3,$t1,$t3#y-16*(k/4+210)sw$
5、t3,0($s0)#写进zkli$v0,1#输出addi$a0,$s0,0syscallli$v0,4#输出间隔la$a0,strsyscalladdi$s0,$s0,4#地址移一位addi$t0,$t0,1#k加1jloop#循环done:li$v0,10syscall2.调试过程编写程序:详细见代码装载程序选择file,选择ReinitializeandLoadFile,把写好的文件导入QtSpim。如果没有错误,便运行。点击上图的小三角运行之后点击不同的窗口便可得到我们想要的结果。具体详细结果如下图内存占用情况映像分析:由图可知数组地址从0Xfffff3180Xfffff258;每行有四
6、个是一样的,总共50个地址。这是因为数组含有50个元素,而int型数据占4个字节空间,字对齐方式,所以连续四个地址是相同的而且有上表也可以得出Qpstim仿真器是按大字节序数据段内存映像表格如下(数值都采用16进制)内存地址(16进制)变量名值内存地址(16进制)变量名值fffff318Z0268500992fffff2b8Z25268501092fffff318Z1268500996fffff2b8Z26268501096fffff318Z2268501000fffff2b8Z27268501100fffff318Z3268501004fffff2a8Z28268501104fffff308
7、Z4268501008fffff2a8Z29268501108fffff308Z5268501012fffff2a8Z30268501112fffff308Z6268501016fffff2a8Z31268501116fffff308Z7268501020fffff298Z32268501120fffff2f8Z8268501024fffff298Z33268501124fffff2f8Z9268501028fffff298Z34268501128fffff2f8Z10268501032fffff298Z35268501132fffff2f8Z11268501036fffff288Z36268
8、501136fffff2e8Z12268501040fffff288Z37268501140fffff2e8ffff288Z38268501144fffff2e8ffff288Z39268501148fffff2e8ffff278Z40268501152fffff2d8Z16268501056fffff278Z41268501156fffff2d8ffff278Z42268501160fffff2d8ffff278Z43268501164fffff2d8Z19268
9、501068fffff268Z44268501168fffff2c8Z20268501072fffff268Z45268501172fffff2c8Z21268501076fffff268Z46268501176fffff2c8Z22268501080fffff268Z47268501180fffff2c8Z23268501084fffff258Z48268501184fffff2b8Z24268501088fffff258Z49268501188点击Window选择console得下图运行结果显示代码段内存映像地址机器码汇编指令0c100009jal0main00000000nop00400
10、01c340_aori$2,$0,100000000csyscall3c101001lui$16,4097z34080000ori$8,$0,00040002cri$9,$0,56290a0032slti$10,$8,5011400010beq$10,$0,64done-000085882srl$11,$8,20040003c216b00d2addi$11,$11,210000b5900sll$11,$11,4012b5822sub$11,$9,$11ae0b0000sw$11,0($16)0040004cri$2,$0,122040000addi$4,$16,00000000csyscall
11、340_4ori$2,$0,4地址机器码汇编指令0040005c3c011001lui$1,4097str342400c8ori$4,$1,200str0000000csyscall22100004addi$16,$16,40040006cddi$8,$8,10810000cj0loop340_aori$2,$0,100000000csyscall0001d821addu$27,$0,$13c019000lui$1,-28672ac220200sw$2,512($1)8000018c3c019000lui$1,-28672ac240204sw$4,516($1)401a6800mfc0$26,
12、$13001a2082srl$4,$26,28000019c3084001fandi$4,$4,31800001a0ri$2,$0,4800001a43c049000lui$4,-28672_m1_800001a80000000csyscall800001acri$2,$0,1800001b0001a2082srl$4,$26,2800001b43084001fandi$4,$4,31800001b80000000csyscall800001bcri$2,$0,4800001c03344003candi$4,$26,60800001c43c019000lui$1,-28672800001c8d
13、du$1,$1,$4800001cc8c240180lw$4,384($1)800001d0op800001d40000000csyscall800001d8ri$1,$0,24800001dc143a0008bne$1,$26,32ok_pc-0x800001dc800001e0op800001e4fc0$4,$14800001e8ndi$4,$4,3800001eceq$0,$4,16ok_pc-0x800001ec800001f0op800001f4340_aori$2,$0,10800001f80000000csyscall800001fcri$2,$0,43c019000lui$1,
14、-28672_m2_地址机器码汇编指令3424000dori$4,$1,13_m2_0000000csyscall8000020c001a2082srl$4,$26,23084001fandi$4,$4,3114040002bne$0,$4,8ret-000000000nop8000021c401a7000mfc0$26,$14275a0004addiu$26,$26,4409a7000mtc0$26,$143c019000lui$1,-286728000022c8c220200lw$2,512($1)3c019000lui$1,-286728c240204lw$4,516($1)001b08
15、21addu$1,$0,$278000023ctc0$0,$13401a6000mfc0$26,$12375a0001ori$26,$26,1409a6000mtc0$26,$128000024cret仿真器在真正的用户代码段内增加了部分代码以实现程序运行控制,用户代码都必须存储在地址为00范围之内。用户代码段将每一行代码的地址,及其对应的机器码都显示给用户,为方便查看,还给出了反汇编得到的汇编指令,而且在注释中显示了用户编写的源代码。通过地址部分信息,我们知道每一行代码的地址都是前一行代码地址+4,即PC+4,机器指令。实验总结本次试验让我对汇编程序的编写以及原理有力深刻的了解。还有语法规范。书写技巧,如何对书写的程序一目了然,层次清晰,还有养成多写注释_惯,既清晰自己的思路,还有助于别人的阅读。由于汇编与C语言有较大的差别,所以刚开始编写非常不适应,编写程序不熟练,后面就好了一些。首先要全局观
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 苹果素描课件教学课件
- 质量方针目标培训课件
- 内分泌治疗仪设备使用
- 学涯规划演讲
- 你好法语课件教学课件
- 企业文化工作规划行动方案
- 高三化学一轮复习 原电池课件
- 第二章 相互作用-共点力的平衡 2025年高考物理基础专项复习
- 3.4 1沉淀溶解平衡 课件 高二上学期化学人教版(2019)选择性必修1
- 防台风暴雨演练动员大会
- 《工业机器人》说课稿
- 中学班会-奋战“冬三月”课件
- 人工智能与机器人(小学版第1单元)课件
- 高考语文总复习必备课件作文中古诗词的运用
- 全科医学:常见急诊的处理和转诊课件
- 支气管肺炎完整版课件
- 二年级下册道德与法治课件 节约粮食 北师大版
- 宝石的分类及命名课件
- 环境影响评价文件编写
- 教培用针灸治疗学痤疮课件
- 部编版四年级语文上册PPT课件(精美版)21 古诗三首
评论
0/150
提交评论