第9章 ARM汇编语言程序设计基础.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第9章 ARM汇编语言程序设计基础.ppt》由会员分享,可在线阅读,更多相关《第9章 ARM汇编语言程序设计基础.ppt(66页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第9章章ARM汇编语言程序设计基础汇编语言程序设计基础ADSIDE(集成开发环境)nARM应用软件的开发工具根据功能的不同,可以分为编辑软件、编译软件、汇编软件、链接软件、调试软件、嵌入式实时操作系统、函数库、评估板,JTAG仿真器以及在线仿真器等。目前有多家公司可以提供以上不同类型的开发工具,用户采用ARM处理器进行嵌入式系统开发时,选择合适的开发工具可以加快开发进度,节省开发成本。ADS工具包的组成nADS是ARM公司推出的集成开发工具包,是专门用于ARM相关应用开发和调试的综合性软件。目前常用的版本是1.2,在功能和易用性上比早期的SDT都有提高,是一款功能强大又易于使用的开发工具。A
2、RMADS包含有编译器、链接器、CodeWarriorIDE、调试器、指令集模拟器、ARM开发包和应用库等部分,可以用ADS来开发、编译、调试采用包括C、C+和ARM汇编语言编写的程序。ADS工具包的组成n1.编译器编译器nADS提供多种编译器,以支持ARM和Thumb指令的编译。n2.链接器链接器nArmlink(ARM链接器)可以将编译得到的一个或多个目标文件和相关的一个或多个库文件进行链接,生成一个可执行文件,也可以将多个目标文件部分链接成一个目标文件,以供进一步的链接。ADS工具包的组成n3.CodeWarriorIDEnCodeWarriorIDE(集成开发环境)包括工程管理器、代码
3、生成接口、语法敏感编辑器、源文件和类浏览器、源代码版本控制系统接口以及文本搜索引擎等。ADS仅在其PC机版本中集成了该IDE。nCodeWarriorIDE为管理和开发项目提供了简单多样化的图形用户界面,用户可以使用ADS的CodeWarriorIDE为ARM和Thumb处理器开发用C、C+或者ARM汇编语言编写的程序代码。ADS工具包的组成n(1)调试器类型nADS中包含有3个调试器,分别是ARM扩展调试器AXD(ARMeXtendedDebugger.n(2)调试方式n在ARM体系中,可以选择Multi-ICE(Multi-processorin-circuitemulator)ARMul
4、ator或Angel多种调试方式。ADS工具包的组成n5.ARM开发包和函数库开发包和函数库nARM开发包由一些底层的例程和库组成,可以帮助用户快速开发基于ARM的应用程序和操作系统。nADS的ARM应用库完善并增强了SDT中的函数库,同时还包括一些非常有用的源码例程。ADS开发工具集n1命令行开发工具命令行开发工具n(1)armccnarmcc是ARMC编译器。在命令控制台环境下,输入命令:C:armcchelp可以查看armcc的语法格式以及最常用的一些操作选项。n(2)armcppnarmcpp是ARMC+编译器。它将ISOC+或EC+编译成32位ARM指令代码。n(3)tccntcc是
5、ThumbC编译器。该编译器通过了PlumHallCValidationSuite为ANSI一致性的测试。tcc将ANSIC源代码编译成16位的Thumb指令代码。ADS开发工具集(4)tcppntcpp是ThumbC+编译器。它将ISOC+和EC+源码编译成16位Thumb指令代码。n(5)armsmnarmsm是ARM和Thumb的汇编器.它对用ARM汇编语言和Thumb汇编语言写的源代码进行汇编。n(6)armlinknarmlink是ARM连接器。n(7)armsdnarmsd是ARM和Thumb的符号调试器。ADS开发工具集n2GUI开发环境开发环境nADSGUI开发环境主要包含Co
6、deWarrior和AXD,其中CodeWarrior是用于编译和链接的集成开发工具,而AXD则是支持单步执行、断点设置等功能的集成调试工具。n(1)CodeWarriornCodeWarriorforARM是一套完整的集成开发工具,充分发挥了ARMRISC指令系统的优势,使产品开发人员能够很好的应用尖端的片上系统技术.该工具是专为基于ARMRISC的处理器而设计的。ADS开发工具集n(2)AXDnAXD调试器本身是一个软件,用户通过这个软件可以对包含有调试信息的、正在运行的可执行代码进行变量的查看、断点的设置、单步执行等调试操作。在ARM体系中,它有Multi-ICE、ARMulator和A
7、ngel等几种方式。AXD可以在Windows和UNIX下进行程序的调试,它为用C、C+和汇编语言的源代码提供了一个全面的Windows和UNIX环境。ADS开发工具集n3、实用程序实用程序nADS提供以下的实用工具来配合前面介绍的命令行开发工具的使用。nfromELF是ARM映像文件转换工具。narmar是ARM库函数生成器。nFlashdownloader用于把二进制映像文件下载到ARM嵌入式设备上的Flash存储器中。ARM汇编伪指令n在ARM汇编语言程序里,有一些特殊指令助记符,这些助记符与指令系统的助记符不同,没有相对应的操作码,也就是不会生成机器码,仅仅是在编译器软件中起着格式化的
8、作用,通常称这些特殊指令助记符为伪指令。伪指令在源程序中的作用是为完成汇编程序作各种准备工作的,这些伪指令仅在汇编过程中起作用,一旦汇编结束,伪指令的使命就完成。在ARM的汇编程序中,有如下几种伪指令:数据常量定义伪指令、数据变量定义伪指令、内存分配伪指令及其他伪指令。1数据常量定义伪指令n数据常量定义伪指令EQU用于为程序中的常量、标号等定义一个等效的字符名称,类似于C语言中的#define。EQU语法格式:名称EQU表达式,类型;其中EQU可用“*”代替。名称为EQU伪指令定义的字符名称,当表达式为32位的常量时,可以指定表达式的数据类型,可以有以下三种类型:CODE16、CODE32和D
9、ATA。2数据变量定义伪指令(Cont.)n数据变量定义伪指令用于定义ARM汇编程序中的变量、对变量赋值以及定义寄存器的别名等操作。常见的数据变量定义伪指令有如下几种:(1)GBLA、GBLL和GBLS语法格式:GBLA(GBLL或GBLS)全局变量名GBLA、GBLL和GBLS伪指令用于定义全局变量,并将其初始化。其中:GBLA用于定义一个全局的数字变量,并初始化为0;GBLL用于定义一个全局的逻辑变量,并初始化F(假);nGBLS用于定义一个全局的字符串变量,并初始化为空;2数据变量定义伪指令(Cont.)n(2)LCLA、LCLL和LCLS语法格式:LCLA(LCLL或LCLS)局部变量
10、名LCLA、LCLL和LCLS伪指令用于定义一个ARM程序中的局部变量,并将其初始化。其中:LCLA伪指令用于定义一个局部的数字变量,并初始化为0;LCLL伪指令用于定义一个局部的逻辑变量,并初始化为F(假);LCLS伪指令用于定义一个局部的字符串变量,并初始化为空;2数据变量定义伪指令(Cont.)n(3)SETA、SETL和SETS语法格式:变量名SETA(SETL或SETS)表达式伪指令SETA、SETL、SETS用于给一个已经定义的全局变量或局部变量赋值。SETA伪指令用于给一个数学变量赋值;SETL伪指令用于给一个逻辑变量赋值;SETS伪指令用于给一个字符串变量赋值;2数据变量定义伪
11、指令(Cont.)n(4)RLIST语法格式:名称RLIST寄存器列表RLIST伪指令可用于对一个通用寄存器列表定义名称,使用该伪指令定义的名称可在ARM指令LDM/STM中使用。在LDM/STM指令中,列表中的寄存器访问次序为根据寄存器的编号由低到高,而与列表中的寄存器排列次序无关。3内存分配伪指令内存分配伪指令n内存分配伪指令一般用于为特定的数据分配存储单元,同时可完成已分配存储单元的初始化。常见的数据定义伪指令有如下几种:n(1)DCB语法格式:标号DCB表达式n(2)DCW(或DCWU)语法格式:标号DCW(或DCWU)表达式3内存分配伪指令内存分配伪指令(Cont.)n(3)DCD(
12、或DCDU)语法格式:标号DCD(或DCDU)表达式n(4)DCFD(或DCFDU)语法格式:标号DCFD(或DCFDU)表达式n(5)DCFS(或DCFSU)语法格式:标号DCFS(或DCFSU)表达式3内存分配伪指令内存分配伪指令(Cont.)n(6)DCQ(或DCQU)语法格式:标号DCQ(或DCQU)表达式n(7)SPACE语法格式:标号SPACE表达式n(8)MAP语法格式:MAP表达式,基址寄存器n(9)FILED语法格式:标号FIELD表达式4汇编控制伪指令汇编控制伪指令n汇编控制伪指令用于控制汇编程序的执行流程,常用的汇编控制伪指令包括以下几条:(1)IF、ELSE、ENDIF
13、语法格式:IF逻辑表达式n指令序列1nELSE指令序列2ENDIF4汇编控制伪指令汇编控制伪指令(Cont.)n(2)WHILE、WEND语法格式:WHILE逻辑表达式指令序列WENDn(3)MEXIT语法格式:MEXITMEXIT用于从宏定义中跳转出去。4汇编控制伪指令汇编控制伪指令(Cont.)n(4)MACRO、MEND语法格式:MACRO$标号宏名$参数1,$参数2,指令序列MENDMACRO、MEND伪指令可以将一段代码定义为一个整体,然后就可以在程序中通过宏指令多次调用该段代码。5其他常用的伪指令其他常用的伪指令n还有一些其他的伪指令,在汇编程序中经常会被使用,主要包括AREA、A
14、LIGN、CODE16、CODE32、ENTRY、END、EXPOR(或GLOBAL)IMPORT、EXTERN、GET(或INCLUDE)INCBIN、RN、ROUT等。5其他常用的伪指令其他常用的伪指令(Cont.)n(1)AREA语法格式:AREA段名属性1,属性2,AREA伪指令用于定义一个代码段或数据段。其中,段名若以数字开头,则该段名需用“|”括起来,如|1_test|。属性字段表示该代码段(或数据段)的相关属性,多个属性用逗号分隔。5其他常用的伪指令其他常用的伪指令(Cont.)n(2)ALIGNn语法格式:ALIGN表达式,偏移量n(3)CODE16、CODE32语法格式:CO
15、DE16(或CODE32)n(4)ENTRY语法格式:ENTRYn5其他常用的伪指令其他常用的伪指令(Cont.)n(5)END语法格式:ENDn(6)EXPORT(或GLOBAL)语法格式:EXPORT标号WEAKn(7)IMPORT语法格式:IMPORT标号WEAK5其他常用的伪指令其他常用的伪指令(Cont.)n(8)EXTERN语法格式:EXTERN标号WEAKn(9)GET(或INCLUDE)语法格式:GET文件名n(10)INCBIN语法格式:INCBIN文件名n(11)RN语法格式:名称RN表达式ARM的汇编语言结构n在ARM(Thumb)汇编语言程序中,以相对独立的指令或数据序
16、列的程序段为单位组织程序代码。段可以分为代码段和数据段,代码段的内容为执行代码,数据段存放代码运行时需要用到的数据。一个汇编程序至少应该有一个代码段,也可以分割为多个代码段和数据段,多个段在程序编译链接时最终形成一个可执行的映象文件。可执行映象文件通常由以下几部分构成:n一个或多个代码段,代码段的属性为只读。n零个或多个包含初始化数据的数据段,数据段的属性为可读写。n零个或多个不包含初始化数据的数据段,数据段的属性为可读写。ARM汇编语言的语句格式n1.基本语句格式基本语句格式nARM(Thumb)汇编语言的语句格式为:n标号指令或伪指令;注释n规则:n如果一条语句太长,可将其分为若干行来书写
17、,在行的末用续行符“”来标识下一行与本行为同一条语句。n每一条指令的助记符可以全部用大写、或全部用小写,但不能在一条指令中大、小写混用。ARM汇编语言的语句格式(Cont.)n2.汇编语言程序中常用的符号汇编语言程序中常用的符号n在汇编语言程序设计中,可以使用各种符号代替地址、变量和常量等,以增加程序的可读性。以下为符号命名的约定:n符号名不应与指令或伪指令同名n符号在其作用范围内必须唯一。n符号区分大小写,同名的大、小写符号被视为两个不同的符号。n自定义的符号名不能与系统保留字相同。ARM汇编语言的语句格式(Cont.)n3.程序中的常量程序中的常量n程序中的常量是指其值在程序的运行过程中不
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第9章 ARM汇编语言程序设计基础 ARM 汇编语言 程序设计 基础
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内