网站大量收购闲置独家精品文档,联系QQ:2885784924

《嵌入式系统》课件_第3章ARM指令系统及程序设计基础报告.ppt

《嵌入式系统》课件_第3章ARM指令系统及程序设计基础报告.ppt

  1. 1、本文档共161页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《嵌入式系统》课件_第3章ARM指令系统及程序设计基础报告

ARM指令集中没有用于栈的操作指令,但是可以借用LDM / STM指令来完成栈操作。 POP操作使用一条LDM指令,PUSH操作使用一条STM指令。 FA 满递增堆栈; FD 满递减堆栈; EA 空递增堆栈; ED 空递减堆栈; BL指令在跳转的同时将PC地址加4字节存入链接寄存器 存储的是偏移量 (2^24)*4=4MB(因为ARM是32位的,其每个单位占4字节) BX 和 BLX是唯一可使用的切换指令集的方法。 CPSR T bit = Rm[0] BLX有两种形式: 带链接无条件转移到程序相对偏移地址(LABEL) 带链接有条件转移到寄存器中的绝对地址(Rm) BLX有两种形式: 带链接无条件转移到程序相对偏移地址(LABEL) 带链接有条件转移到寄存器中的绝对地址(Rm) 如果立即数被忽略,则用户程序调用系统例程的类型由R0的内容决定,同时,参数通过其它通用寄存器传递。 LDR/STR指令:寄存器在前,地址在后 LDM/STM指令:地址在前,寄存器在后 LABEL:相对PC的寻址方式。编译器在汇编时,会将标号LABEL汇编成PC的偏移量存入该指令的立即数字段。 B: Byte S: Sign H: Half LDM和STM指令可将任何范围为R0~R7的寄存器子集加载和存储, B指令是Thumb指令集中唯一可条件执行的指令。 PC = PC + (SignExtend(signed_immed_8) 1) 例如: LDR R0, [R1], #4 ; R0 ? [R1] 且 R1 ? R1+4 Reglist:低寄存器范围的、用逗号隔开的列表。 低寄存器和可选的LR进栈,低寄存器和可选的PC出栈。 L:表示指令为长读取操作,如用于双精度数据的传输。 指示编译器处理的是32位ARM指令 该表列出的是ADS/SDT中常用的部分伪操作 将操作数1与操作数2相乘,将结果放置Rn中。 将操作数1与操作数2相乘,将结果的低32位放置在Rn_L中,将高32位放置在Rn_H中。 将操作数1与操作数2相乘,并将结果的低32位与Rn_L相加后,又放置在Rn_L中,将高32位与Rn_H相加后,又放置在Rn_H中。 将有符号操作数1与有符号操作数2相乘,将结果的低32位放置在Rn_L中,将高32位放置在Rn_H中 MSR和MRS配合使用,可作为更新PSR的“读取—修改——写回”序列的一部分。 LDC 指令用于将源寄存器所指向的存储器中的字数据传送到目的寄存器中 STC 指令用于将源寄存器中的字数据传送到目的寄存器所指向的存储器中 若协处理器不能成功完成传送操作,则产生未定义指令异常。 CPSR T bit = Rm[0] 寄存器移位寻址是ARM指令集特有的寻址方式。 当第二个操作数是寄存器移位方式时,第二个寄存器操作数在与第一个操作数结合之前,选择进行移位操作。 例如: LDR R0, [R1], #4 ; R0 ? [R1] 且 R1 ? R1+4 {!}为可选后缀,若选用该后缀,表示当数据传送完后,将最后的地址写入基址寄存器,否则,基址寄存器内容不变。 前变址 后缀IA表示每次执行完加载/存储操作后,R1按字长度增加。 指令可将连续存储单元的值送到R1,R2,R4中。 I: Increment D: Decrement A: After B: Before LDMIA / STMIA Increment After(先传送,后地址加4) LDMIB / STMIB Increment Before(先地址加4 ,后传送) LDMDA / STMDA Decrement After(先传送,后地址减4) LDMDB / STMDB Decrement Before (先地址减4,后传送) 在Keil中新建一个工程,选择LPC2101处理器(ARM7)或STM32F103ZE处理器(Cortex-M3) LDR/STR指令:寄存器在前,地址在后 LDM/STM指令:地址在前,寄存器在后 LABEL:相对PC的寻址方式。编译器在汇编时,会将标号LABEL汇编成PC的偏移量存入该指令的立即数字段。 B: Byte S: Sign H: Half 相对PC的寻址方式。编译器在汇编时,会将标号LABEL汇编成PC的偏移量存入该指令的立即数字段。 “数据”一列指的是这条指令所访问的存储单元 “基址寄存器”一列的内容是指执行指令之后“基址寄存器”的内容 借助实际的程序代码和Keil软件介绍 LDR R0, [R1, R2] 其编码为:E7910002 见P463 !:表示执行完操作后将变化之后的地址值写入基址寄存器 LDR/STR指令:寄存器在前,地址在后 LDM/STM指令:地址在前,寄存器在后 Rn: 基址寄存器 Regist

文档评论(0)

6663144 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档