ARM的存储器访问指令
实验目的
熟悉使用ADS开发环境。
通过实验掌握ARM存储器访问指令的使用方法。
实验设备
硬件:PC机。
软件:ADS集成开发环境,Windows 2000/XP/2003。
实验内容
熟悉开发环境,并使用LDR/STR指令等访问寄存器或存储单元。。
实验原理
ARM处理器是Load/Store型的,即它对数据的操作是通过将数据从存储器加载到片内寄存器中进行处理,处理完成后的结果经过寄存器存回到存储器中,以加快对片外存储器进行数据处理的执行速度.
存储器访问指令分为单寄存器操作指令,多寄存器操作指令和寄存器和存储器交换指令。
LDR指令用于从内存中读取单一字或字节数据存入寄存器中,STR指令用于将寄存器中的单一字或字节数据保存到内存。
LDR{cond}{T} Rd,<地址> ;将指定地址上的字数据读入Rd
STR{cond}{T} Rd,<地址> ;将Rd中的字数据存入指定地址
LDR{cond}B{T} Rd,<地址> ;将指定地址上的字节数据读入Rd
STR{cond}B{T} Rd,<地址> ;将Rd中的字节数据存入指定地址
其中,T为可选后缀。若指令有T,那么即使处理器是在特权模式下,存储系统也将访问看成是在用户模式下进行的。T在用户模式下无效,不能与前索引偏移一起使用T。
LDR/STR指令寻址非常灵活,它由两部分组成,其中一部分为一个基址寄存器,可以为任一个通用寄存器;另一部分为一个地址偏移量。地址偏移量有以下3种格式:
立即数。立即数可以是一个无符号的数值。这个数据可以加到基址寄存器,也可以从基址寄存器中减去这个数值。
如:LDR R1,[R0,#0x12]
寄存器。寄存器中的数值可以加到基址寄存器,也可以从基址寄存器中减去这个数值。
如:LDR R1,[R0,R2]
寄存器及移位常数。寄存器移位后的值可以加到基址寄存器,也可以从基址寄存器中减去这个数值。
如:LDR R1,[R0,R2,LSL #2]
LDR和STR——字和无符号字节加载/存储指令编码
指令执行的条件码
I为0时,偏移量为12位立即数,为1时,偏移量为寄存器移位
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}
{mode}
STM{mode} Rn{!},reglist
多寄存器存储
[
ARM存储器访问指令 来自淘豆网m.daumloan.com转载请标明出处.