资源描述:
《arm的存储器访问指令》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、ARM的存储器访问指令实验目的l熟悉使用ADS开发环境。l通过实验掌握ARM存储器访问指令的使用方法。实验设备l硬件:PC机。l软件:ADS集成开发环境,Windows2000/XP/2003。实验内容l熟悉开发环境,并使用LDR/STR指令等访问寄存器或存储单元。。实验原理ARM处理器是Load/Store型的,即它对数据的操作是通过将数据从存储器加载到片内寄存器中进行处理,处理完成后的结果经过寄存器存回到存储器中,以加快对片外存储器进行数据处理的执行速度.存储器访问指令分为单寄存器操作指令,多寄存器操作指令和寄存器和存储器交换指令。LDR指令用于从内存中读取单一字或
2、字节数据存入寄存器中,STR指令用于将寄存器中的单一字或字节数据保存到内存。LDR{cond}{T}Rd,<地址>;将指定地址上的字数据读入RdSTR{cond}{T}Rd,<地址>;将Rd中的字数据存入指定地址LDR{cond}B{T}Rd,<地址>;将指定地址上的字节数据读入RdSTR{cond}B{T}Rd,<地址>;将Rd中的字节数据存入指定地址其中,T为可选后缀。若指令有T,那么即使处理器是在特权模式下,存储系统也将访问看成是在用户模式下进行的。T在用户模式下无效,不能与前索引偏移一起使用T。LDR/STR指令寻址非常灵活,它由两部分组成,其中一部分为一个基址
3、寄存器,可以为任一个通用寄存器;另一部分为一个地址偏移量。地址偏移量有以下3种格式:§立即数。立即数可以是一个无符号的数值。这个数据可以加到基址寄存器,也可以从基址寄存器中减去这个数值。如:LDRR1,[R0,#0x12]§寄存器。寄存器中的数值可以加到基址寄存器,也可以从基址寄存器中减去这个数值。如:LDRR1,[R0,R2]§寄存器及移位常数。寄存器移位后的值可以加到基址寄存器,也可以从基址寄存器中减去这个数值。如:LDRR1,[R0,R2,LSL#2]LDR和STR——字和无符号字节加载/存储指令编码指令执行的条件码I为0时,偏移量为12位立即数,为1时,偏移量为
4、寄存器移位P表示前/后变址U表示加/减B为1表示字节访问,为0表示字访问W表示回写为指令的寻址方式Rd为源/目标寄存器Rn为基址寄存器L用于区别加载(L为1)或存储(L为0)ARM存储器访问指令——多寄存器加载/存储多寄存器加载/存储指令可以实现在一组寄存器和一块连续的内存单元之间传输数据。LDM为加载多个寄存器;STM为存储多个寄存器。允许一条指令传送16个寄存器的任何子集或所有寄存器。它们主要用于现场保护、数据复制、常数传递等。助记符说明操作条件码位置LDM{mode}Rn{!},reglist多寄存器加载reglist←[Rn...],Rn回写等LDM{cond}
5、{mode}STM{mode}Rn{!},reglist多寄存器存储[Rn...]←reglist,Rn回写等STM{cond}{mode}实验参考程序AREAExample1,CODE,READONLY;声明代码段Example1ENTRY;标识程序入口CODE32;声明32位ARM指令STARTLDRR1,[R8]LDRR2,[R8,#4]STRR2,[R8]STRR1,[R8,#4]STOPMOVR0,#0x18LDRR1,=0x20026SWI0x123456END;标记程序结束实验结论实验总结及心得体会实验思考题1.分别使用前变址,后变址,自动回写的寻址方式,
6、将存储单元0x00000040,0x00000044的值存放到R1,R2.再将R1,R2的值存储到内存单元0x00000050,0x00000054.2.根据LDR/STR指令的二进制编码形式对下列指令译码,用16进制表示.LDRR0,[R1,#0]LDRR3,[R5,-#0xC]STRR7,[R9],#8