微机原理实验报告Word文档下载推荐.docx

上传人:b****5 文档编号:16750699 上传时间:2022-11-25 格式:DOCX 页数:8 大小:18.73KB
下载 相关 举报
微机原理实验报告Word文档下载推荐.docx_第1页
第1页 / 共8页
微机原理实验报告Word文档下载推荐.docx_第2页
第2页 / 共8页
微机原理实验报告Word文档下载推荐.docx_第3页
第3页 / 共8页
微机原理实验报告Word文档下载推荐.docx_第4页
第4页 / 共8页
微机原理实验报告Word文档下载推荐.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

微机原理实验报告Word文档下载推荐.docx

《微机原理实验报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《微机原理实验报告Word文档下载推荐.docx(8页珍藏版)》请在冰豆网上搜索。

微机原理实验报告Word文档下载推荐.docx

For(k=0;

k<

50;

K++)Z[k]=Y-16*(k/4+210);

}

三、程序设计及分析

1.C语言分析:

有两个变量是int型,一个数组型;

还有一个循环执行过程。

2.汇编程序实现分析:

首先需要定义用户数据段,获得一个内存空间作为数组空间。

再选定几个寄存器作为K,Y以及输出,其中输出输出和Y可以合

用一个寄存器。

3.设计思路:

分配完空间地址后,最重要的是完成循环控制。

循环控制有

两个思路:

可以是先判断后循环;

或者是先循环后判断

即如图

开始开始

赋值

intK,Y;

intZ[50];

K=0;

Y=

计算

Z[K]=Y-16*(K/4+210);

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"

"

#输出结果之间的空隙

.textmain:

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,0syscall

li$v0,4#输出间隔

la$a0,str

syscall

addi$s0,$s0,4#地址移一位

addi$t0,$t0,1#k加1

jloop#循环

done:

li$v0,10

2.调试过程

1.编写程序:

详细见代码

2.装载程序

选择file,选择ReinitializeandLoadFile,把写好的文件导入QtSpim。

3.如果没有错误,便运行。

点击上图的小三角

运行之后点击不同的窗口便可得到我们想要的结果。

具体详细结果如

下图

内存占用情况映像

分析:

由图可知数组地址从0Xfffff318—0Xfffff258;

每行有四个是

一样的,总共50个地址。

这是因为数组含有50个元素,而int型数

据占4个字节空间,字对齐方式,所以连续四个地址是相同的

而且有上表也可以得出Qpstim仿真器是按大字节序

数据段内存映像

表格如下(数值都采用16进制)

内存地址变量值内存地址变量值

(16进(16进制)

名名

制)

fffff318Z[0]268500992fffff2b8Z[25]268501092

fffff318Z[1]268500996fffff2b8Z[26]268501096

fffff318Z[2]268501000fffff2b8Z[27]268501100

fffff318Z[3]268501004fffff2a8Z[28]268501104

fffff308Z[4]268501008fffff2a8Z[29]268501108

fffff308Z[5]268501012fffff2a8Z[30]268501112

fffff308Z[6]268501016fffff2a8Z[31]268501116

fffff308Z[7]268501020fffff298Z[32]268501120

fffff2f8Z[8]268501024fffff298Z[33]268501124

fffff2f8Z[9]268501028fffff298Z[34]268501128

fffff2f8Z[10]268501032fffff298Z[35]268501132

fffff2f8Z[11]268501036fffff288Z[36]268501136

fffff2e8Z[12]268501040fffff288Z[37]268501140

fffff2e8Z[13]268501044fffff288Z[38]268501144

fffff2e8Z[14]268501048fffff288Z[39]268501148

fffff2e8Z[15]268501052fffff278Z[40]268501152

fffff2d8Z[16]268501056fffff278Z[41]268501156

fffff2d8Z[17]268501060fffff278Z[42]268501160

fffff2d8Z[18]268501064fffff278Z[43]268501164

fffff2d8Z[19]268501068fffff268Z[44]268501168

fffff2c8Z[20]268501072fffff268Z[45]268501172

fffff2c8Z[21]268501076fffff268Z[46]268501176

fffff2c8Z[22]268501080fffff268Z[47]268501180

fffff2c8Z[23]268501084fffff258Z[48]268501184

fffff2b8Z[24]268501088fffff258Z[49]268501188

点击Window选择console得下图

运行结果显示

代码段内存映像

地址机器码汇编指令

[00400014]0c100009jal0x00400024[main]

[00400018]00000000nop

[0040001c]3402000aori$2,$0,10

[00400020]0000000csyscall

[00400024]3c101001lui$16,4097[z]

[00400028]34080000ori$8,$0,0[0040002c]34090038ori$9,$0,56[00400030]290a0032slti$10,$8,50

[00400034]11400010beq$10,$0,64[done-0x00400034]

[00400038]00085882srl$11,$8,2

[0040003c]216b00d2addi$11,$11,210

[00400040]000b5900sll$11,$11,4

[00400044]012b5822sub$11,$9,$11

[00400048]ae0b0000sw$11,0($16)

[0040004c]34020001ori$2,$0,1

[00400050]22040000addi$4,$16,0[00400054]0000000csyscall[00400058]34020004ori$2,$0,4

[0040005c]3c011001lui$1,4097[str]

[00400060]342400c8ori$4,$1,200[str]

[00400064]0000000csyscall

[00400068]22100004addi$16,$16,4

[0040006c]21080001addi$8,$8,1

[00400070]0810000cj0x00400030[loop]

[00400074]3402000aori$2,$0,10

[00400078]0000000csyscall

[80000180]0001d821addu$27,$0,$1

[80000184]3c019000lui$1,-28672

[80000188]ac220200sw$2,512($1)[8000018c]3c019000lui$1,-28672[80000190]ac240204sw$4,516($1)

[80000194]401a6800mfc0$26,$13

[80000198]001a2082srl$4,$26,2

[8000019c]3084001fandi$4,$4,31

[800001a0]34020004ori$2,$0,4

[800001a4]3c049000lui$4,-28672[__m1_][800001a8]0000000csyscall[800001ac]34020001ori$2,$0,1

[800001b0]001a2082srl$4,$26,2

[800001b4]3084001fandi$4,$4,31

[800001b8]0000000csyscall

[800001bc]34020004ori$2,$0,4

[800001c0]3344003candi$4,$26,60

[800001c4]3c019000lui$1,-28672

[800001c8]00240821addu$1,$1,$4

[800001cc]8c240180lw$4,384($1)[800001d0]00000000nop[800001d4]0000000csyscall

[800001d8]34010018ori$1,$0,24

[800001dc]143a0008bne$1,$26,32[ok_pc-0x800001dc]

[800001e0]00000000nop

[800001e4]40047000mfc0$4,$14

[800001e8]30840003andi$4,$4,3

[800001ec]10040004beq$0,$4,16[ok_pc-0x800001ec]

[800001f0]00000000nop

[800001f4]3402000aori$2,$0,10[800001f8]0000000csyscall[800001fc]34020004ori$2,$0,4

[80000200]3c019000lui$1,-28672[__m2_]

[80000204]3424000dori$4,$1,13[__m2_]

[80000208]0000000csyscall

[8000020c]001a2082srl$4,$26,2

[80000210]3084001fandi$4,$4,31

[80000214]14040002bne$0,$4,8[ret-0x80000214]

[80000218]00000000nop

[8000021c]401a7000mfc0$26,$14

[80000220]275a0004addiu$26,$26,4

[80000224]409a7000mtc0$26,$14

[80000228]3c019000lui$1,-28672

[8000022c]8c220200lw$2,512($1)[80000230]3c019000lui$1,-28672[80000234]8c240204lw$4,516($1)

[80000238]001b0821addu$1,$0,$27

[8000023c]40806800mtc0$0,$13

[80000240]401a6000mfc0$26,$12

[80000244]375a0001ori$26,$26,1

[80000248]409a6000mtc0$26,$12[8000024c]42000018eret

仿真器在真正的用户代码段内增加了部分代码以实现程序运行

控制,用户代码都必须存储在地址为0x00400000~0x00440000

的范围之内。

用户代码段将每一行代码的地址,及其对应的机器码都

显示给用户,为方便查看,还给出了反汇编得到的汇编指令,而且在

注释中显示了用户编写的源代码。

通过地址部分信息,我们知道每一

行代码的地址都是前一行代码地址+4,即PC+4,机器指令。

实验总结

1.本次试验让我对汇编程序的编写以及原理有力深刻的了

解。

还有语法规范。

书写技巧,如何对书写的程序一目

了然,层次清晰,还有养成多写注释习惯,既清晰自己

的思路,还有助于别人的阅读。

2.由于汇编与C语言有较大的差别,所以刚开始编写非常

不适应,编写程序不熟练,后面就好了一些。

首先要全

局观,对各个寄存器所代表的意义要清晰;

还要对程序

执行过程了如指掌,尤其是跳转部分,跳转条件,是相

等跳转,还是不相等跳转,是先循环在判断还是先循环

后判断。

3.基本掌握了Qtspim软件的应用和程序的调试工作,并

更深刻地理解了汇编语言中机器指令的执行方法。

对各

个窗口以及一些常用的菜单各个数据段的含义做到了一

一熟悉了解。

还有基本掌握了内存的分配区间。

4.还有最重要的是多练习。

虽然基本上现在的这些程序都

能做到看懂,但是一遇到让自己写的时候还是有许多艰

难的,熟能生巧嘛。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1