ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:84.82KB ,
资源ID:2389029      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-2389029.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(微机原理实验报告.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

微机原理实验报告.docx

1、微机原理实验报告微机原理实验报告实验名称:MIPS汇编程序设计院系:电信学院班级: 姓名: 指导老师:一、 实验目的:1.熟悉MIPS汇编程序开发环境,学习使用Qtstim工具。知道如何查看内存空间分配。2.了解C语言语句与汇编指令之间的关系。3. 掌握MIPS汇编程序设计,掌握QTSPIM的调试技术。4. 了解MIPS汇编语言与机器语言之间的对应关系。5. 熟悉常见的MIPS汇编指令6.掌握程序的内存映像。二、实验内容1.用汇编程序实现以下伪代码:要求使用移位指令实现乘除法运算。Int main ()Int K,Y;Int Z50;Y=56;For(k=0;k50;K+) Zk=Y-16*(

2、k/4+210);三、程序设计及分析语言分析:有两个变量是int型,一个数组型;还有一个循环执行过程。2.汇编程序实现分析:首先需要定义用户数据段,获得一个内存空间作为数组空间。再选定几个寄存器作为K,Y以及输出,其中输出输出和Y可以合用一个寄存器。3.设计思路:分配完空间地址后,最重要的是完成循环控制。循环控制有两个思路:可以是先判断后循环;或者是先循环后判断即如图 否 否 是 是 slti $t2,$t0,50 #判断k是否于50beq $t2,$t3($t2=1循环,否则结束。)四、程序实现及调试分析1. 汇编程序代码实现:方法一.data #定义用户数据段 z:.space 200 #

3、数组为int型,大小为50,所以占内存4*50str:.asciiz #输出结果之间的空隙.textmain:la $s0,z #$s0 #为数组在zli $t0,0 #$s1 #代表k计数,初始值为0li $t1,56 #$t2 #代表Y,初值为56 loop:slti $t2,$t0,50 #判断k是否于50beq $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

4、($s0) #写进zk li $v0,1 #输出addi $a0,$s0,0syscallli $v0,4 #输出间隔la $a0,strsyscalladdi $s0,$s0,4 #地址移一位 addi $t0,$t0,1 #k加1 j loop #循环 done: li $v0,10 syscall2.调试过程1. 编写程序:详细见代码2. 装载程序选择file,选择Reinitialize and Load File,把写好的文件导入QtSpim。3. 如果没有错误,便运行。点击上图的小三角运行之后点击不同的窗口便可得到我们想要的结果。具体详细结果如下图内存占用情况映像分析:由图可知数组

5、地址从0Xfffff3180Xfffff258;每行有四个是一样的,总共50个地址。这是因为数组含有50个元素,而int型数据占4个字节空间,字对齐方式,所以连续四个地址是相同的而且有上表也可以得出Qpstim仿真器是按大字节序数据段内存映像表格如下(数值都采用16进制)内存地址(16进制)变量名值内存地址(16进制)变量名值fffff318Z02fffff2b8Z252fffff318Z16fffff2b8Z266fffff318Z20fffff2b8Z270fffff318Z34fffff2a8Z284fffff308Z48fffff2a8Z298fffff308Z52fffff2a8Z3

6、02fffff308Z66fffff2a8Z316fffff308Z70fffff298Z320fffff2f8Z84fffff298Z334fffff2f8Z98fffff298Z348fffff2f8Z102fffff298Z352fffff2f8Z116fffff288Z366fffff2e8Z120fffff288Z370fffff2e8Z134fffff288Z384fffff2e8Z148fffff288Z398fffff2e8Z152fffff278Z402fffff2d8Z166fffff278Z416fffff2d8Z170fffff278Z420fffff2d8Z184ff

7、fff278Z434fffff2d8Z198fffff268Z448fffff2c8Z202fffff268Z452fffff2c8Z216fffff268Z466fffff2c8Z220fffff268Z470fffff2c8Z234fffff258Z484fffff2b8Z248fffff258Z498点击Window选择console得下图运行结果显示代码段内存映像地址 机器码 汇编指令00400014 0c100009jal 0x00400024 main 00400018 00000000nop 0040001c 3402000aori $2, $0, 1000400020 0000

8、000csyscall00400024 3c101001lui $16, 4097 z 00400028 ori $8, $0, 0 0040002c ori $9, $0, 56 00400030 290a0032slti $10, $8, 5000400034 beq $10, $0, 64 done-0x0040003400400038 00085882srl $11, $8, 20040003c 216b00d2addi $11, $11, 21000400040 000b5900sll $11, $11, 400400044 012b5822sub $11, $9, $11 0040

9、0048 ae0b0000sw $11, 0($16)0040004c ori $2, $0, 100400050 addi $4, $16, 000400054 0000000csyscall00400058 ori $2, $0, 4地址 机器码 汇编指令0040005c 3c011001lui $1, 4097 str00400060 342400c8 ori $4, $1, 200 str 00400064 0000000c syscall00400068 addi $16, $16, 40040006c addi $8, $8, 100400070 0810000c j 0x0040

10、0030 loop00400074 3402000a ori $2, $0, 1000400078 0000000c syscall 0001d821 addu $27, $0, $1 3c019000 lui $1, -28672 ac220200 sw $2, 512($1) 8000018c 3c019000 lui $1, -28672 ac240204 sw $4, 516($1) 401a6800 mfc0 $26, $13 001a2082 srl $4, $26, 28000019c 3084001f andi $4, $4, 31800001a0 ori $2, $0, 48

11、00001a4 3c049000 lui $4, -28672 _m1_800001a8 0000000c syscall800001ac ori $2, $0, 1800001b0 001a2082 srl $4, $26, 2800001b4 3084001fandi $4, $4, 31800001b8 0000000csyscall800001bc ori $2, $0, 4800001c0 3344003candi $4, $26, 60800001c4 3c019000lui $1, -28672800001c8 00240821addu $1, $1, $4 800001cc 8

12、c240180lw $4, 384($1) 800001d0 00000000nop800001d4 0000000csyscall800001d8 ori $1, $0, 24800001dc 143a0008bne $1, $26, 32 ok_pc-0x800001dc 800001e0 00000000nop800001e4 mfc0 $4, $14800001e8 andi $4, $4, 3800001ec beq $0, $4, 16 ok_pc-0x800001ec 800001f0 00000000nop800001f4 3402000aori $2, $0, 1080000

13、1f8 0000000csyscall800001fc ori $2, $0, 4 3c019000lui $1, -28672 _m2_地址 机器码 汇编指令 3424000dori $4, $1, 13 _m2_ 0000000csyscall8000020c 001a2082srl $4, $26, 2 3084001fandi $4, $4, 31 bne $0, $4, 8 ret-0x 00000000nop8000021c 401a7000mfc0 $26, $14 275a0004addiu $26, $26, 4 409a7000mtc0 $26, $14 3c019000l

14、ui $1, -286728000022c 8c220200lw $2, 512($1) 3c019000lui $1, -28672 8c240204lw $4, 516($1) 001b0821addu $1, $0, $278000023c mtc0 $0, $13 401a6000mfc0 $26, $12 375a0001ori $26, $26, 1 409a6000mtc0 $26, $128000024c eret仿真器在真正的用户代码段内增加了部分代码以实现程序运行控制,用户代码都必须存储在地址为0x004000000x00440000的范围之内。用户代码段将每一行代码的地址

15、,及其对应的机器码都显示给用户,为方便查看,还给出了反汇编得到的汇编指令,而且在注释中显示了用户编写的源代码。通过地址部分信息,我们知道每一行代码的地址都是前一行代码地址+4,即PC+4,机器指令。实验总结1. 本次试验让我对汇编程序的编写以及原理有力深刻的了解。还有语法规范。书写技巧,如何对书写的程序一目了然,层次清晰,还有养成多写注释习惯,既清晰自己的思路,还有助于别人的阅读。2. 由于汇编与C语言有较大的差别,所以刚开始编写非常不适应,编写程序不熟练,后面就好了一些。首先要全局观,对各个寄存器所代表的意义要清晰;还要对程序执行过程了如指掌,尤其是跳转部分,跳转条件,是相等跳转,还是不相等跳转,是先循环在判断还是先循环后判断。3. 基本掌握了Qtspim软件的应用和程序的调试工作,并更深刻地理解了汇编语言中机器指令的执行方法。对各个窗口以及一些常用的菜单各个数据段的含义做到了一一熟悉了解。还有基本掌握了内存的分配区间。4. 还有最重要的是多练习。虽然基本上现在的这些程序都能做到看懂,但是一遇到让自己写的时候还是有许多艰难的,熟能生巧嘛。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2