- 1、本文档共187页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
四、基于ARM的系统应用程序设计基础.ppt
嵌入式系统设计 第四讲 基于ARM的 应用程序设计基础 1、ARM汇编语言的伪操作、宏指令与伪指令 ARM汇编语言源程序由指令、伪操作、宏指令与伪指令组成 伪操作是特殊指令助记符,作用是为完成汇编语言程序做准备工作,在汇编时由汇编程序处理,不在系统中运行,只在汇编过程中起作用 宏指令是一段独立的代码,可插在源程序中,由伪操作来定义。宏在使用前必须定义好,宏之间可互相调用,也可自己递归调用。通过直接书写宏名来使用宏,并根据宏指令的格式设置相应的输入参数。宏定义本身不产生代码,,只是在调用它时把宏体插入到源程序中。宏与C语言的子函数形参与实参的传递很相似,调用宏时通过实际的指令来代替宏体实现相关的一段代码,但宏的调用和子程序调用有本质不同,宏不会节省程序空间,其优点是简化程序代码,提高程序的可读性以及宏内容可同步修改 伪操作与宏指令一般与编译器有关,不同编译器有不同的编写形式和规则 伪指令也是ARM汇编语言程序里的特殊指令助记符,也不由处理器执行,而是在汇编时被合适的机器指令代替为ARM或Thumb指令,实现真正的指令操作 (1)2种编译模式的集成开发环境IDE ADS/SDT IDE开发环境:由ARM公司开发,使用CodeWarrior编译器 集成了GNU开发工具的IDE开发环境:由GNU的汇编器as、交叉编译器 gcc和链接器ld等组成 (2)ADS编译环境下的ARM伪操作和宏指令 符号定义(Symbol Definition)伪操作 数据定义(Data Definition)伪操作 汇编控制(Assembly Control)伪操作 框架描述(Frame Description)伪操作 信息报告(Reporting)伪操作 其他(Miscellaneous)伪操作 符号定义伪操作 GBLA、GBLL及GBLS 用于声明一个全局变量,并在默认情况下将其初始化 GBLA声明一个全局算术变量,并将其初始化成0; GBLL声明一个全局逻辑变量,并将其初始化成(FALSE); GBLS声明一个全局字符串变量,将其初始化成空串“ ”。 语法格式 GBLX Variable ;变量名称 使用说明 变量名称在作用范围内惟一,全局变量的作用范围为包含该变量名 的源程序。 例子: GBLA arithmetic ;声明一个全局的算术变量 Arithmatic SETA 0xEF ;向该变量赋值 SPACE arithmetic ;使用该变量 GBLL logical ;声明一个全局的逻辑变量 Logical SETL{TRUE} ;向该变量赋值 LCLA、LCLL及LCLS 用于声明一个局部变量,并在默认情况下将其初始化 LCLA声明一个局部算术变量,并将其初始化成0; LCLL声明一个局部逻辑变量,并将其初始化成(FALSE); LCLS声明一个局部字符串变量,将其初始化成空串“ ”。 语法格式 LCLX Variable ;变量名称 使用说明 变量名称在作用范围内惟一,全局变量的作用范围为包含该 局部变量的宏代码的一个实例,即局部变量一般只用于宏代 码中。 例子: MACRO ;声明一个宏 $ lable message $a ;宏的原型,宏的名称为message, 有一个参数$a LCLS string ;声明一个局部串变量string String SETS “error” ;向该变量赋值 $ lable ;代码 INFO 0,“string”;CC,STR:$a ;使用该串变量 MEND ;宏定义结束 SETA、SETL及SETS 用于给一个全局或局部变量赋值 SETA:用于给一个全局或局部算术变量赋值 SETL:用于给一个全局或局部逻辑变量赋值 SETS:用于给一个全局或局部字符串变量赋值 语法格式 SETX Variable expr ;表达式,即赋予变量的值 使用说明 在向变量赋值前,必须先声明变量 例子: GBLA
文档评论(0)