嵌入式系统基础及应用第三章课件_第1页
嵌入式系统基础及应用第三章课件_第2页
嵌入式系统基础及应用第三章课件_第3页
嵌入式系统基础及应用第三章课件_第4页
嵌入式系统基础及应用第三章课件_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ARM汇编编程ARM汇编编程ARM汇编程序组成ARM汇编语言源程序中语句由指令、伪操作和宏指令组成在ARM汇编语言程序中,有一些特殊指令助记符,这些助记符没有相应的操作码,他们所完成的操作称为伪操作。在源程序中的作用是为完成汇编程序作各种准备工作的。宏是一段独立的程序代码,在程序中通过宏指令调用该宏ARM汇编程序组成ARM汇编语言源程序中语句由指令、伪操作和常用的伪操作AREA伪操作用于定义一个代码段或数据段AREA 段名 ,属性1 ,属性2 一个大的程序可以包括多个代码段和数据段。一个汇编程序至少包含一个段 AREA Example1,CODE, READONLY AREA Example2

2、,DATA, READWRITE常用的伪操作AREA伪操作用于定义一个代码段或数据段常用的伪操作EQU伪操作用于为程序中的常量、标号等定义一个等效的字符名称名称 EQU 表达式,类型 abcd EQU 50;定义标号abcd的值为50名称为EQU伪操作定义的字符名称,当表达式为32位的常量时,可以指定表达式的数据类型,可以有以下三种类型:CODE16 CODE32 DATAAddr EQU 0 x54, CODE32; 定义Addr的值为0 x54,且该处为32位的ARM指令。常用的伪操作EQU伪操作用于为程序中的常量、标号等定义一个等常用的伪操作ENTRY和ENDENTRY用于指定汇编程序的

3、入口每一个汇编源程序都包含END为操作,以告诉本源程序的结束AREA Example1,CODE, READONLYENTRYEND常用的伪操作ENTRY和END常用的伪操作EXPORT或GLOBALEXPORT用于在程序中声明一个全局的标号,该标号可在其他的文件中引用,可用GLOBAL代替。AREA Example, CODE, READONLYEXPORT DoAdd ;下面的函数名称DoAdd可以被其他源文件引用DoAdd ADD r0, r0, r1常用的伪操作EXPORT或GLOBAL常用的伪操作CODE16及CODE32若在汇编源程序中同时包含 ARM 指令和 Thumb 指令时,

4、可用 CODE16 伪指令通知编译器其后的指令序列为 16 位的 Thumb 指令, CODE32 伪指令通知编译器其后的指令序列为 32 位的 ARM 指令。因此,在使用 ARM 指令和 Thumb 指令混合编程的代码里,可用这两条伪指令进行切换,但注意他们只通知编译器其后指令的类型,并不能对处理器进行状态的切换。 AREA Example, CODE, READONLYCODE32 ;通知编译器后面的指令为32位的 ARM指令LDR R0, =start+1BX R0CODE16StartMOV R1, #10常用的伪操作CODE16及CODE32常用的伪操作IMPORT 伪操作告诉编译器

5、当前的符号不是在本源文件中定义的,而是在其他源文件中定义的,在本源文件中可能引用该符号IMPORT Main ;通知编译器当前文件要引用标号Main,但Main在其他文件中定义常用的伪操作IMPORT 伪操作告诉编译器当前的符号不是在本宏定义使用宏定义可以提高程序的可读性,简化程序代码和同步修改。ARM宏定义与标准C的#define相似。宏定义从MACRO伪指令开始,到MEND结束,并可以使用参数。宏要先定义,然后再使用,使用时直接书写宏名,并根据对应的宏定义格式设置输入参数或书写标号等,当源程序被汇编时,汇编编译器将展开每一个宏调用,用宏定义体代替程序中的宏调用,并使用实际的参数值代替宏定义

6、时的形式参数。MACRO$label macroname $parameter,$parameterMEND宏定义使用宏定义可以提高程序的可读性,简化程序代码和同步修改嵌入式系统基础及应用第三章课件嵌入式系统基础及应用第三章课件ARM汇编编程例子AREA Add, CODE, READONLY;程序起始定义ENTRY ;第一条指令的标示符,只能有一个 ;下面是程序主体StartMOV r0, #1MOV r1, #2BL doadd ;调用子程序doaddADD r0,r0,r1 ;r0=r0+r1MOV pc, lrEND ;END伪指令必须和ENTRY配对使用ARM汇编编程例子AREA A

7、dd, CODE, REA ARM汇编编程例子ARM汇编编程例子C语言与汇编语言在应用系统的程序设计中,若所有的编程任务均用汇编语言来完成,其工作量是可想而知的,同时不利于系统升级或应用软件移植ARM体系结构支持C/C+以及与汇编语言的混合编程,在一个完整的程序设计中,除了初始部分用汇编语言完成以外,其主要的编程任务一般都用C/C+完成C语言与汇编语言在应用系统的程序设计中,若所有的编程任务均用从汇编程序中访问C变量从汇编程序中访问C变量从C程序中调用汇编程序从C程序中调用汇编程序Any Question?Any Question?习题与思考ARM处理器有几种工作状态?各个状态之间如何切换?A

8、RM处理器的工作模式有哪几种?什么情况下会发生工作模式的改变?简述ARM处理器处理异常的过程。ARM处理器有几种存储格式?有什么不同?简述ARM处理器的寻址方式,并举例。习题与思考ARM处理器有几种工作状态?各个状态之间如何切换?试分析下面几段ARM汇编程序的执行结果: (1)AREAExample, CODE, READONLYEXPORTtestIMPORT test1ENTRY testLDRR1, =testLDRR0, R1ADDR0, R0, #1STRR0, R1MOVPC, LREND试分析下面几段ARM汇编程序的执行结果: AREACDO, CODE, READONLYCODE32 ADD_SIXGLOBALADD_SIXSTMFDR13, R4, R5LDRR4, R13LDRR5, R13, #4!ADDR

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论