- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.3 基于ARM的汇编语言程序设计基础 3.3.1 ARM汇编语言的伪操作、宏指令与伪指令 3.3.2 ARM汇编语言程序设计 3.3.3 ARM汇编语言编程的重点 3.3.4 ARM汇编程序实例 3.3.1 ARM汇编语言的伪操作、宏指令与伪指令 1 两种常见的ARM编译开发环境 ADS/SDT IDE开发环境:它由ARM公司开发,使用了CodeWarrior公司的编译器; 集成了GNU开发工具的IDE开发环境:它由GNU的汇编器as、交叉编译器gcc、和链接器ld等组成。 2 ADS编译环境下的伪操作和宏指令 ADS编译环境下的伪操作可分为以下几类: 符号定义(Symbol Definition)伪操作 数据定义(Data Definition)伪操作 汇编控制(Assembly Control)伪操作 信息报告(Reporting)伪操作 其他(Miscellaneous)伪操作 符号定义伪操作 1.符号定义伪操作 GBLA、GBLL、GBLS 作用:声明一个ARM程序中的全局变量 语法格式:GBLX Variable 例: GBLA arithmetic arithmetic SETA 0xFF SPACE arithmetic GBLL logical logical SETL {TRUE} GBLS string1 string1 SETS “helloworld” 1.符号定义伪操作2) LCLA、LCLL、LCLS 作用:声明一个ARM程序中的局部变量 语法格式:LCLX Variable MACRO $label message $a LCLS string string SETS “error” …… INFO 0,“string” : CC: :STR: $a MEND LCLA Mathmatic 1.符号定义伪操作 3)SETA、SETL、SETS 作用;给一个ARM程序中的全局或局部变量赋值 语法格式:Variable SETX expr GBLA arithmetic arithmetic SETA 0xEF SPACE arithmetic GBLL logical logical SETL {TRUE} LCLS string1 string1 SETS “helloworld” 1.符号定义伪操作 4)RLIST 作用:为一个通用寄存器列表定义名称 格式:Name RLIST {list of registers} 例:List RLIST {R0,R2-R7} STMFD SP!, List 5)CN----为一个协处理器的寄存器定义名称 CP----为一个协处理器定义名称。 格式:name CP/CN expr power CN 6; dzx CP 6; 1.符号定义伪操作 2. 数据定义伪操作 2. 数据定义伪操作 1) LTORG 语法格式:LTORG 用于声明一个数据缓冲池的开始 当程序中使用LDR之类的指令时,数据缓冲池的使用可能越界,为了防止越界发生,使用LTORG定义数据缓冲池。 通常ARM汇编编译器把数据缓冲池放在代码段的最后面,即下一个代码段开始之前,或者END伪操作之前。 AREA Example,Code,READONLY start BL funcl … funcl LDR R1,=0x8000 MOV PC,LR LTORG ;定义数据缓冲池 Data SPACE 40 END 2) SPACE——也可以用符号“%”表示 用于分配一块连续的内存单元供程序使用,并且将这个内存单元的内容初始化为0。 语法格式: {label} SPACE expr 或 {label} % expr 其中: {label} :是一个标号,可选项。 expr:数值表达式,用来规定内存单元的字节数。 2. 数据定义伪操作 3) MAP, FIELD 语法格式:MAP expr {,base-register} 用于定义一个结构化的内存表的首地址 语法格式:{label} FIELD expr 用于定义一个结构化的内存表的数据域 MAP和FIELD伪操作配合使用来定义结构化的内存表结构,MAP可以用^符号来替代,FIELD可以用#符号来替代。 由MAP和FIELD伪操作配合定义的数据结构有
文档评论(0)