嵌入式系统 指令集.pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章 Cortex-M3基础 4.1 汇编语言基础1、汇编指令的最典型书写模式如下所示: 标号 操作码 操作数1, 操作数2, … ;注释 举例: MOV R0, #0x12 ; R0 ? 0x12 MOV R1, #’A’ ; R1 ? 字母A的ASCII码 2、使用EQU指示字来定义常数可以使用EQU指示字来定义常数,然后在代码中使用它们例如: NVIC_IRQ_SETEN0 EQU 0xE000E100 ; 注意:常数定义必须顶格写NVIC_IRQ0_ENABLE EQU 0x1 …LDR R0, =NVIC_IRQ_SETEN0 ;在这里的LDR是个伪指令,它会被汇编器转换成一条“相对PC的加载指令” MOV R1, #NVIC_IRQ0_ENABLE ; 把立即数传送到R1中STR R1, [R0] ; *R0=R1,执行完此指令后IRQ #0被使能3、可以使用DCB来定义一串字节常数,可以使用DCD来定义一串32位整数。它们最常被用来在代码中书写表格。例如: LDR R3, =MY_NUMBER ; R3= MY_NUMBER LDR R4, [R3] ; R4= *R3 …LDR R0, =HELLO_TEXT ; R0= HELLO_TEXT BL PrintText ; 调用PrintText以显示字符串,R0传递参数… MY_NUMBER DCD 0HELLO_TEXT DCB ”Hello\n”,0 4.2 指令集 4.2.1 汇编语言1、汇编指令的最典型书写模式如下所示: 标号 操作码 操作数1, 操作数2, … ;注释 举例: MOV R0, #0x12 ; R0 ? 0x12 MOV R1, #’A’ ; R1 ? 字母A的ASCII码 2、统一汇编语言书写语法 为了最有力地支持Thumb-2,ARM汇编器引了一个“统一汇编语言(UAL)”语法机制。汇编器允许开发者统一使用32位Thumb-2指令的语法格式书写。以前,Thumb的语法和ARM的语法不同,在有了UAL之后,两者的书写格式就统一了。 ADD R0, R1 ; 使用传统的Thumb语法ADD R0, R0, R1 ; 引入UAL后允许的等效写法 (R0=R0+R1)AND R0, R1 ;传统的Thumb语法ANDS R0, R0, R1 ;等值的UAL语法(必须有S后缀) 4.2.2 分类指令表 表4.1 16位数据操作指令 表4.1 16位数据操作指令(续) 表4.2 16位转移指令 表4.3 16位存储器数据传送指令 16数据传送指令没有任何新内容,因为它们是Thumb指令,在v4T时就已经定格了表4.4 其它16位指令 表4.5 32位数据操作指令 表4.5 32位数据操作指令(续) 表4.5 32位数据操作指令(续2) 表4.6 32位存储器数据传送指令 表4.7 32位转移指令 表4.8 其它32位指令 4.3 ARM处理器寻址方式寻址方式分类 寻址方式是根据指令中给出的地址码字段来实现寻找真实操作数地址的方式。ARM处理器具有9种基本寻址方式。1.寄存器寻址; 2.立即寻址;3.寄存器移位寻址; 4.寄存器间接寻址;5.基址寻址;6.多寄存器寻址;7.堆栈寻址;8.块拷贝寻址;9.相对寻址。R20xAAR10x554.3 ARM处理器寻址方式寻址方式分类——寄存器寻址 操作数的值在寄存器中,指令中的地址码字段指出的是寄存器编号,指令执行时直接取出寄存器值来操作。寄存器寻址指令举例如下: MOV R1,R2 ;将R2的值存入R1 SUB R0,R1,R2 ;将R1的值减去R2的值,结果保存到R0 0xAAMOV R1,R2程序存储MOV R0,#0xFF00R00x554.3 ARM处理器寻址方式寻址方式分类——立即寻址 立即寻址指令中的操作码字段后面的地址码部分即是操作数本身,也就是说,数据就包含在指令当中,取出指令也就取出了可以立即使用的操作数(这样的数称为立即数)。立即寻址指令举例如下: SUBS R0,R0,#1 ;R0减1,结果放入R0,并 且影响标志位MOV R0,#0xFF00 ;将立即数0xFF00装入 R0寄存器 从代码中获得数据0xFF00MOV R0,#0xFF00R20x01R00x554.3 ARM处理器寻址方式寻址方式分类——寄存器移位寻址 寄存器移位寻址是ARM指令集特有的寻址方式。当第2个操作数是寄存器移位方式时,第2个寄存器操作数在与第1个操作数结合之前,选择进行移位操作。寄存器移位寻址指令举例如下:MOV R0,R2,LSL #3 ;R2的值左移3位,结果放入R0,;即是R0=R2×8 ANDS R1,

文档评论(0)

骨干 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档