- 1、本文档共99页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1. LDR和STR指令 寄存器装载和存储指令LDR/STR可分为按字操作指令、按半字操作指令、按字节操作指令,以下进行简要介绍它们的格式与功能、以及寻址方式等。 ⑴ LDR/STR的指令格式与功能 ※以字方式操作的指令格式与功能如下: LDR{cond}{T} Rd,addr ;将存储器地址为addr的内容装载到寄存器Rd中 STR{cond}{T} Rd,addr ;将寄存器Rd的内容写入到存储器地址addr单元中 ※ 以半字方式操作的指令格式与功能如下: LDR{cond}H Rd,addr ;将存储器地址addr的无符号数半字装载到Rd中,高16位补0。 LDR{cond}SH Rd,addr ;将存储器地址addr的有符号数半字装载到Rd中,高16位用其符号位填充。 STR{cond}H Rd,addr ;将寄存器Rd的半字数据写入到存储器地址addr半字单元中。 注意:半字操作时,地址值必须为偶数,即按半字对齐。非半字对齐的操作地址不可靠。 ※以字节操作的指令格式与功能 LDR{cond}B{T} Rd,addr ;将存储器地址addr中的无符号字节数据装载到Rd中,高24位用0补充。 LDR{cond}SB Rd,addr ;将存储器地址addr中的有符号字节数据装载到Rd中,高24位用其符号位填充。 STR{cond}B{T} Rd,addr ;将寄存器Rd内容低8位字节数据写入到存储器地址addr的字节单元中。 * ⑵ LDR/STR的指令寻址 LDR/STR的指令寻址方式非常灵活,由2部分组成,一是基址寄存器,可以使用任意一个通用寄存器;另一部分是基址偏移量。它有3种形式,以下进行简要介绍。 ※立即数形式。立即数用一个无符号数表示,它既可以与基址寄存器Rn相加,也可以与基址寄存器相减,从而形成一个有效的地址存储器操作地址。例如: LDR Rd,[Rn,#0x08] ;将Rn+0x08地址单元中的内容装载到Rd寄存器,Rn内容不变 LDR Rd,[Rn,#-0x08] ;将Rn-0x08地址单元中的内容装载到Rd寄存器,Rn内容不变 LDR Rd,[Rn] ;将Rn地址单元中的内容装载到Rd寄存器,0偏移。 ※寄存器形式。就是用寄存器的内容作为偏移量,与基址寄存器Rn内容相加或相。例如: LDR Rd,[Rn,Rm] ;将Rn+ Rm地址单元中的内容装载到Rd寄存器,Rn的内容不变 LDR Rd,[Rn,-Rm] ;将Rn-Rm地址单元中的内容装载到Rd寄存器,Rn的内容不变 ※寄存器移位偏移量形式。就是将寄存器Rm的内容经过移位操作后,与Rn的内容相加,从而形成一个有效地址作为存储器操作地址。移位的方法在3.1.1节已将介绍,主要有逻辑左移LSL、逻辑右移LSR、算术右移ASR、循环右位ROR和带扩展的循环右移RRX。例如: LDR Rd,[Rn,Rm,LSL #3] ;将Rn+Rm*8的内容作为存储器地址,取其内容装载到Rd。 * 2. LDM和STM 批量寄存器装载指令LDM,它完成的操作是将存储器块中的n个字数据装载到n个寄存器中。批量数据存储指令STM,就是将n个寄存器中的值写入到地址连续的存储器块中。 LDM和STM相配合主要完成2项工作:一是可以完成将存储器中某一个首地址连续的数据块传送到存储器中的另一个数据区域中,实现数据的复制。二是用于堆栈区数据的压栈与弹栈。指令的格式如下: LDM{cond}mode Rn{!},reglist {^} STM{cond}mode Rn{!},reglist {^} 其中:mode:根据完成的工作,可分为2个类型。 ※类型1是在进行存储器块的复制工作时,使用以下4种模式之一。 IA:先传送数据后修改地址指针+4;IB:先修改地址指针+4后传送数据 DA:先传送数据后修改地址指针-4;DB:先修改地址指针-4后传送数据。 ※类型2是当进行堆栈操作时,使用以下4种模式之一。 FA:满栈增堆栈;FD:满栈减堆栈; EA:空栈增堆栈;ED:空栈减堆栈。它们代表的物理操作前已讲述。 注意:压栈与弹栈指令选取的mode必须相同。 * 注意:LDM和STM指令操作时,要求字对齐,否则会出现意想不到的问题;使用这两条指令时,使用的指令应该配对,即选取的mode相同 堆栈操作时有4对指令:LDMFA/STMFA、LDMFD/STMFD、LDMEA/STMEA、LDMED/STM
文档评论(0)