实验六ARM数据加载与存储指令实验

实验六ARM数据加载与存储指令实验

ID:41648043

大小:81.38 KB

页数:5页

时间:2019-08-29

实验六ARM数据加载与存储指令实验_第1页
实验六ARM数据加载与存储指令实验_第2页
实验六ARM数据加载与存储指令实验_第3页
实验六ARM数据加载与存储指令实验_第4页
实验六ARM数据加载与存储指令实验_第5页
资源描述:

《实验六ARM数据加载与存储指令实验》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验六ARM数据加载与存储指令实验一、实验目的1、熟悉教学ADS集成开发环境,2、懂得各种ARM寻址方式,并能自己动手写一些简单小程序。3、能够运行程序并进行简单分析二、实验环境硬件:PC机一台。软件:Windows98/XP/2000系统,ADS集成开发坏境。三、预备知识LDR和STR——用于字和无符号字节指令格式:LDR/STR{cond}{T)Rd,v地址〉LDR/STR{cond}B{T}Rd,v地址〉指令LDR{cond}{T}Rd,v地址〉,加载指定地址的字数据到Rd中;指令STR{cond){T)R

2、d,v地址〉,存储Rd中的字数据到指定的地址单元中。LDR{cond}B{T}Rd,v地址〉指令加载指定地址的字节数据到Rd的的最低字节屮(Rd的高24位清零);STR{cond}B{T}Rd,v地址〉指令存储Rd中的最低字节数据到指定的地址单元中。T为可选后缀,若有T,那么即使处理器是在特权模式下,存储系统也将访问看成处理器是在用户模式下,T在用户模式下无效,不能与前索引偏移一起使用T。地址部分可用的形式有4种:零偏移(zerooffset)[Rn],Rn的值作为传送数据的地址。如:LDRRO,[R1];前索引

3、偏移(pre-indexedoffset)[Rn,FlexoffsetJ{!)在数据传送之前,将偏移量Flexoffset加到Rn中。其结果作为传送数据的存储器地址。若使用后缀“!”,则结果写回到Rn中,35且Rn不允许是R15,如:LDRBRO,[R1,#8]LDRRO,[R1,#8]!程序相对偏移(programrelative)label(label必须是在当前指令的土4KB范围内)。程序相对偏移是前索引形式的另-•种版本。从PC计算偏移量,并将PC作为Rn生成前索引指令,不能使用后缀“!”,如:LDRRO

4、,place;place地址装入R0后索引偏移(post-indexedoffset)[Rn],Flexoffset<.在数据传送后,将偏移量Flexoffset加到Rn中,结果写回到Rn,Rn不允许是R15,如:LDRRO,[R1],R2,LSL#2;将存储器地址为R1的字数据读入寄存器R0,并将新地址R1+R2X4写入R1。四、实验内容(1)分析单寄存器操作,并学会简化给出的代码同时实现相同的效果;(2)使用多寄存器操作指令:LDM1A、STMIA实验上血单寄存器操作所实现的功能;(3)给出实验所提供的堆栈操

5、作的代码执行过程的详细分析;(4)根据给出的用C写成的数码管显示,用相应的汇编实现同样功能。五、实验程序(1)单寄存器操作代码如下:AREALabi,CODEENTRYSTARTADRRl,SRCADRR2,DSTCOPYLDRROJR1JSTRR0JR21ADDRl,Rl,#0x4ADDR2,R2,#0x4LDRRO,[R1JSTRR0,[R2]ADDRl,Rl,#0x4ADDR2,R2,#0x4LDRR0JR1]STRR0JR2JSTOPBSTOPSRCDCB"onesmall!HALIGNDSTDCB“th

6、reebig!“END对以上这段用单寄存器操作实现的代码的分析:功能实现的就是将“onesmall!”穿送到"threebig!"所在的内存空间,不过因为只是通过单寄存器来实现传送操作的,显得有些繁琐,这里是加一次数据,在分别给2个寄存器加地址,一共写了3段和同的代码才完成,卜-面我对这段不断重复的代码:LDRRO,[R1];STRR0,[R2];ADDRl,Rl,#0x4;ADDR2,R2,#0x4加以修改,使用两条指令实现与上面代码相同的功能操作:简化如下:指令一:LDRRO,[R1],#0x4;指令二:ST

7、RR0,[R2],#0x4。(2)多寄存器操作实验尽管前一个实验在完成后,对繁琐的蛋寄存器操作加以简化,提高了一点效率,但是这是在寄存器之间传递数据,那么就有了更加高效的方法来实现相同的功能。那就是使川多寄存器操作指令:LDMIA、STMIA实验上而代码的功能。下而我给出了给出完整的代码实现:AREALabi,CODEENTRYSTARTADRRl,SRCADRR2,DSTCOPYLDMIAR1!,{R3R4R5}STMIAR2!,{R3,R4,R5}STOPBSTOPSRCDCB“onesmall!"ALIGN

8、DSTDCB"threebig!1*END对以上这段用多寄存器实现数据的传递,耍说的是只有在寄存器直接的数据传递才能使川多寄存器操作,在这里SRCQST分别代码2组数据的所在的首地址,SRC将“onesmall!”地址赋值给了寄存器Rl,DST将"threebig!"地址赋值给了寄存器R2,然后通过多寄存器操作“LDMIAR1!,{R3,R4,R5}”将"onesmall

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。