ARM嵌入式系统原理与开发 工业和信息化普通高等教育十二五 规划教材立项项目 教学课件 作者 王诚 梅霆 第3章 ARM汇编语言程序设计.pptx

ARM嵌入式系统原理与开发 工业和信息化普通高等教育十二五 规划教材立项项目 教学课件 作者 王诚 梅霆 第3章 ARM汇编语言程序设计.pptx

ID:52769758

大小:235.74 KB

页数:41页

时间:2020-03-07

ARM嵌入式系统原理与开发 工业和信息化普通高等教育十二五 规划教材立项项目 教学课件 作者 王诚 梅霆 第3章 ARM汇编语言程序设计.pptx_第1页
ARM嵌入式系统原理与开发 工业和信息化普通高等教育十二五 规划教材立项项目 教学课件 作者 王诚 梅霆 第3章 ARM汇编语言程序设计.pptx_第2页
ARM嵌入式系统原理与开发 工业和信息化普通高等教育十二五 规划教材立项项目 教学课件 作者 王诚 梅霆 第3章 ARM汇编语言程序设计.pptx_第3页
ARM嵌入式系统原理与开发 工业和信息化普通高等教育十二五 规划教材立项项目 教学课件 作者 王诚 梅霆 第3章 ARM汇编语言程序设计.pptx_第4页
ARM嵌入式系统原理与开发 工业和信息化普通高等教育十二五 规划教材立项项目 教学课件 作者 王诚 梅霆 第3章 ARM汇编语言程序设计.pptx_第5页
资源描述:

《ARM嵌入式系统原理与开发 工业和信息化普通高等教育十二五 规划教材立项项目 教学课件 作者 王诚 梅霆 第3章 ARM汇编语言程序设计.pptx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、ARM汇编语言程序设计ARM汇编语言程序设计汇编语言都具有一些相同的基本特征。①一条指令一行。②使用标号(label)给内存单元提供名称,从第1列开始书写。③指令必须从第2列或能区分标号的地方开始书写。④注释跟在指定的注释字符后面(ARM使用的是“;”),一直书写到行尾。ARM汇编语言基本的的语句格式如下:{symbol}{instruction

2、directive

3、pseudo-instruction}{;comment}符号指令、伪指令或伪操作[;注释]ARM汇编的语句格式ARM汇编语言程序设计①符号由大小写字母、数字及下

4、画线组成,符号不能用数字开头。②符号区分大小写,同名的大、小写符号会被编译器认为是两个不同的符号。③符号在其作用范围内必须唯一。④自定义的符号名不能与系统的保留字相同。⑤符号名不应与指令或伪指令同名。符号命名规则ARM汇编语言程序设计伪操作(Directive)是ARM汇编语言程序里的一些特殊的指令助记符,其作用主要是为完成汇编程序做各种准备工作,对源程序运行汇编程序处理,而不是在计算机运行期间由处理器执行。不同的编译程序所使用的伪操作有所不同,本书中仅列举在ARM公司推出的开发工具ADS/SDT中常用的部分伪操作,如表3-1

5、所示,如有更进一步需要,请查阅编译工具的技术文档。ARM汇编语言伪操作ARM汇编语言程序设计ARM汇编语言伪操作ARM汇编语言程序设计伪指令是ARM处理器支持的汇编语言程序里的特殊助记符,它不在处理器运行期间由机器执行,只是在汇编时将被合适的机器指令代替成ARM或Thumb指令,从而实现真正的指令操作。ARM汇编语言伪指令如表3-2所示。ARM汇编语言伪指令ARM汇编语言程序设计ARM汇编语言伪指令ARM汇编语言程序设计在汇编编译器编译源程序时,ADR伪指令被编译器替换成一条合适的指令。通常,编译器用一条ADD指令或SUB指令

6、来实现该ADR伪指令的功能,若不能用一条指令实现,则产生错误,编译失败。ADR伪指令中的地址是基于PC或寄存器的,当ADR伪指令中的地址是基于PC时,该地址与ADR伪指令必须在同一个代码段中。地址表达式expr的取值范围如下:当地址值是字节对齐时,其取指范围为−255B~255B;当地址值是字对齐时,其取指范围为−1020B~1020B。ADR伪指令—小范围的地址读取ARM汇编语言程序设计ADRL比ADR伪指令可以读取更大范围的地址。在汇编编译器编译源程序时,ADRL伪指令被编译器替换成两条合适的指令。若不能用两条指令实现,则

7、产生错误,编译失败。地址表达式expr的取值范围如下:当地址值是字节对齐时,其取指范围为−64KB~64KB;当地址值是字对齐时,其取指范围为−256KB~256KB。示例:LOOPMOVr0,#10;LOOP为行标,指示某一行代码ADRLr4,LOOP;将LOOP地址放入r4(相对地址);因为PC值为当前指令地址值加8字节,替换成本ADR伪指令将被编译器编译为;SUBr4,PC,#0xc;NOP(MOVr0,r0)ADRL伪指令—中等范围的地址读取ARM汇编语言程序设计在汇编编译源程序时,LDR伪指令被编译器替换成一条合适的

8、指令。若加载的常数未超出MOV或MVN的范围,则使用MOV或MVN指令代替该LDR伪指令,否则汇编器将常量放入文字池,并使用一条程序相对偏移的LDR指令从文字池读出常量。示例:LDRr1,=0xff;将0xff读取到r1中;编译后得到MOVr1,0xff示例:LDRr1,=ADDR;将外部地址ADDR读取到R1中;汇编后将得到:;LDRr1,[PC,OFFSET_TO_LPOOL];…;LPOOLDCDADDRLDR伪指令—大范围的地址读取ARM汇编语言程序设计【例3-1】汇编语言源程序的基本格式。AREAEXAMPLE,CO

9、DE,READONLY;定义段的名称和属性,表示了一个段的开始ENTRY;标识程序的入口点start;以下为具体指令MOVR0,#10MOVR1,#3ADDR0,R0,R1END;标识源文件的结束ARM汇编的程序结构ARM汇编语言程序设计没有分支、循环等架构的程序,会顺序执行汇编指令,实际的程序段中大量存在,可参见例3-1。【例3-1】汇编语言源程序的基本格式。AREAEXAMPLE,CODE,READONLY;定义段的名称和属性,表示了一个段的开始ENTRY;标识程序的入口点start;以下为具体指令MOVR0,#10MOV

10、R1,#3ADDR0,R0,R1END;标识源文件的结束顺序程序设计ARM汇编语言程序设计ARM汇编中大部分的指令都支持条件执行,因此类似C语言中的if-else分支很容易实现。例如:CMPR1,#3;比较R1和#3ADDHIR0,R0,R1;ifR1>3thenR0=R0+

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
相关文章
更多