- 1、本文档共61页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式系统4(ARM指令详细介绍)报告
西安电子科技大学计算机学院 * 2.3 半字数据加载指令 LDRH指令 LDRH指令的格式为: LDR{条件}H 目的寄存器,存储器地址 LDRH指令用于从存储器中将一个16位的半字数据传送到目的寄存器中,同时将寄存器的高16位清零。该指令通常用于从存储器中读取16位的半字数据到通用寄存器,然后对数据进行处理。 LDRH R0,[R1];将内存单元[R1]中的半字(16位)数据读 取到R0寄存器中,R0中高16位设置为0 LDRH R0,[R1,#8];将内存单元[R1+8]中的半字(16位) 数据读取到R0寄存器中,R0中高16位设置为0 LDRH R0,[R1,R2];将内存单元[R1+R2]中的半字(16位) 数据读取到R0寄存器中,R0中高16位设置为0 西安电子科技大学计算机学院 * 2.4 字数据存储指令 STR指令 STR指令的格式为: STR{条件} 源寄存器,存储器地址 STR指令用于从源寄存器中将一个32位的字数据传送到存储器中。该指令在程序设计中比较常用,且寻址方式灵活多样,使用方式可参考指令LDR。 STR R0,[R1],#8 ;将R0的字数据保存到内存单元 [R1]中,同时R1←R1+8(后变) STR R0,[R1,#8] ;将R0的字数据保存到内存单元 [R1+8]中(前变) 西安电子科技大学计算机学院 * 2.5 字节数据存储指令 STRB指令 STRB指令的格式为: STR{条件}B 源寄存器,存储器地址 STRB指令用于从源寄存器中将一个8位的字节数据传送到存储器中。该字节数据为源寄存器中的低8位。 STRB R0,[R1] ;将R0的低8位数据保存到 内存单元[R1]中 STRB R0,[R1,#8] ;将R0的低8位数据保存到 内存单元[R1]中 西安电子科技大学计算机学院 * 2.6 半字数据存储指令 STRH指令 STRH指令的格式为: STR{条件}H 源寄存器,存储器地址 STRH指令用于从源寄存器中将一个16位的半字数据传送到存储器中。该半字数据为源寄存器中的低16位。 STRH R0,[R1] ;将R0中的16位的半字数据 保存到内存单元[R1]中 STRH R0,[R1,#8] ;将R0中的16位的半字数据 保存到内存单元[R1+8]中 西安电子科技大学计算机学院 * LDR/STR指令的寻址方式 基址寻址 变址寻址 变址寻址灵活多变,需要认真掌握 西安电子科技大学计算机学院 * 批量数据加载(LDM)/存储(STM)内存访问指令 ARM微处理器所支持批量数据加载/存储指令可以一次在一片连续的存储器单元和多个寄存器之间传送数据。批量数据加载指令(LDM)用于将一片连续的存储器中的数据传送到多个寄存器,批量数据存储指令(STR) 则完成相反的操作。 IA、IB、DA、DB FD、ED、FA、EA 西安电子科技大学计算机学院 * 2.7 批量数据存储指令 STM指令 STM指令的格式为: STM{条件}{类型} 基址寄存器{!},寄存器列表{^} STM指令用于将寄存器列表所指示的多个寄存器数据送到由基址寄存器所指示的一片连续存储器,该指令的常见用途是将多个寄存器的内容入栈。例如: STMFD R0!, {r0-r4};将寄存器列表中的寄存器 (R1~R4)内容按照满递减的方式 存入到[R0]指示的4个连续存储器单元中 西安电子科技大学计算机学院 * 2.8 批量数据加载指令 LDM指令 LDM指令的格式为: LDM{条件}{类型} 基址寄存器{!},寄存器列表{^} LDM指令用于从由基址寄存器所指示的一片连续存储器送字数据到寄存器列表所指示的多个寄存器中,该指令的常见用途是将多个寄存器出栈。例如: LDMFD R0!, {r1-r4} ;将[R0]指示的4个连续存储器 单元的内容按照满递减的方式送到 寄存器列表中的寄存器(R1~R4)中 西安电子科技大学计算机学院 * 可选后缀 {!}回写使能标志为可选后缀,若选用该后缀,则当数据传送完毕之后,将最后的地址写入基址寄存器,否则基址寄存器的内容不改变。 {^}为可选后缀,当指令为LDM,且寄存器列表中包含R15,选用该后缀时表示:除了正常的数据传送之外,还将SPSR复制到CPSR。 西安电子科技大学计算机学院 * 2.9 存储器和寄存器交换指令 ARM微处理器所支持数据交换指令能在存储器和寄存器之间交换数据。数据交换指令主要用于实现信号量操作,信号量用于进程间的同步与互斥。 西安电子科技大学计算机学院 * 2.9 存储器和寄存器交换指令 SWP指令 SWP指令的格式为: SWP{条件} 目的寄存器,源
文档评论(0)