资源描述:
《《存储器访问指令》ppt课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、嵌入式与ARM体系结构知识回顾ARM体系结构概述了解ARM结构的特点了解ARM系列微处理器掌握ARM处理器的模式掌握ARM存储器用途及结构3嵌入式ARM指令系统第章本章目标了解ARM指令系统的特点掌握ARM指令的寻址方式及指令了解Thumb指令系统3.2ARM指令系统3.2.4存储器访问指令ARM指令集——存储器访问指令ARM处理器是Load(从内存加载到CPU)/Store(从CPU存储到内存)型的,即它对数据的操作是通过将数据从存储器(内存)加载到(CPU)片内寄存器中进行处理,处理完成后的结果经过寄存器存回到存储器中,以加快对片外存储器进行数据处理的执行速度.存储器访问指
2、令分为单寄存器操作指令,多寄存器操作指令和寄存器和存储器交换指令。3.2ARM指令系统助记符说明操作条件码位置LDRRd,addressing加载字数据(32bit)Rd←[addressing],addressing索引LDR{cond}LDRBRd,addressing加载无符号字节数据Rd←[addressing],addressing索引LDR{cond}BLDRTRd,addressing以用户模式加载字数据Rd←[addressing],addressing索引LDR{cond}TLDRBTRd,addressing以用户模式加载无符号字节数据Rd←[address
3、ing],addressing索引LDR{cond}BTLDRHRd,addressing加载无符号半字数据Rd←[addressing],addressing索引LDR{cond}HLDRSBRd,addressing加载有符号字节数据Rd←[addressing],addressing索引LDR{cond}SBLDRSHRd,addressing加载有符号半字数据Rd←[addressing],addressing索引LDR{cond}SHARM存储器访问指令——单寄存器加载(LDR)3.2ARM指令系统助记符说明操作条件码位置STRRd,addressing存储字数据[a
4、ddressing]←Rd,addressing索引STR{cond}STRBRd,addressing存储字节数据[addressing]←Rd,addressing索引STR{cond}BSTRTRd,addressing以用户模式存储字数据[addressing]←Rd,addressing索引STR{cond}TSTRBTRd,addressing以用户模式存储字节数据[addressing]←Rd,addressing索引STR{cond}BTSTRHRd,addressing存储半字数据[addressing]←Rd,addressing索引STR{cond}HAR
5、M存储器访问指令——单寄存器存储(STR)所有单寄存器加载/存储指令可分为“字和无符号字节加载存储指令”和“半字和有符号字节加载存储指令。3.2ARM指令系统LDR和STR——①字和无符号字节加载/存储指令LDR指令用于从内存中读取单一字或字节数据存入寄存器中,STR指令用于将寄存器中的单一字或字节数据保存到内存。指令格式如下:ARM存储器访问指令——单寄存器加载/存储LDR{cond}{T}Rd,<地址>;将指定地址上的字数据读入RdSTR{cond}{T}Rd,<地址>;将Rd中的字数据存入指定地址LDR{cond}B{T}Rd,<地址>;将指定地址上的字节数据读入RdST
6、R{cond}B{T}Rd,<地址>;将Rd中的字节数据存入指定地址其中,T为可选后缀。若指令有T,那么即使处理器是在特权模式下,存储系统也将访问看成是在用户模式下进行的。T在用户模式下无效,不能与前索引偏移一起使用T。3.2ARM指令系统ARM存储器访问指令——单寄存器加载/存储LDR和STR——①字和无符号字节加载/存储指令编码指令执行的条件码I为0时,偏移量为12位立即数,为1时,偏移量为寄存器移位P表示前/后变址U表示加/减B为1表示字节访问,为0表示字访问W表示回写为指令的寻址方式Rd为源/目标寄存器Rn为基址寄存器L用于区别加载(L为1)或存储(L为0)3.2ARM
7、指令系统ARM存储器访问指令——单寄存器加载/存储LDR和STR——①字和无符号字节加载/存储指令LDR/STR指令寻址非常灵活,它由两部分组成,其中一部分为一个基址寄存器(不可改变),可以为任一个通用寄存器;另一部分为一个地址偏移量。地址偏移量有以下3种格式:立即数。立即数可以是一个无符号的数值。这个数据可以加到基址寄存器,也可以从基址寄存器中减去这个数值。如:LDRR1,[R0,#0x12]寄存器。寄存器中的数值可以加到基址寄存器,也可以从基址寄存器中减去这个数值。如:LDRR1,[R0