欢迎来到天天文库
浏览记录
ID:50315024
大小:1.12 MB
页数:115页
时间:2020-03-08
《ARM嵌入式体系结构与接口技术 教学课件 华清远见嵌入式学院 刘洪涛 第4章 ARM汇编语言程序设计.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、ARM嵌入式体系结构与接口技术第4章ARM汇编语言程序设计第1章嵌入式系统基础知识第2章ARM技术概述第3章ARM的指令系统第4章ARM汇编语言程序设计第5章ARMRealviewMDK集成开发环境第6章GPIO编程第7章ARM异常中断处理及编程第8章串行通信接口课程安排:2第9章存储器接口第10章定时器第11章A/D转换器第12章LCD接口设计第13章温度监测仪开发实例课程安排:34.1ARM汇编器支持的伪操作4.2ARM汇编器支持的伪指令4.3ARM汇编语言的语句格式4.4ARM汇编语言的程序结构4.5汇编语言与C语言的混合编
2、程4.6小结4.7思考与练习本章课程:44.1.1伪操作概述在ARM汇编语言程序中,有一些特殊指令助记符,这些助记符与指令系统的助记符不同,没有相对应的操作码,通常称这些特殊指令助记符为伪操作标识符(directive)[1],它们所完成的操作称为伪操作。伪操作在源程序中的作用是为了完成汇编程序做各种准备工作的,这些伪操作仅在汇编过程中起作用,一旦汇编结束,伪操作的使命就完成。在ARM的汇编程序中,伪操作主要有符号定义伪操作、数据定义伪操作、汇编控制伪操作及其杂项伪操作等。4.1ARM汇编器支持的伪操作54.1.2符号定义伪操作符
3、号定义伪操作用于定义ARM汇编程序中的变量、对变量赋值及定义寄存器的别名等操作。常见的符号定义伪操作有如下几种。(1)用于定义全局变量的GBLA、GBLL和GBLS。(2)用于定义局部变量的LCLA、LCLL和LCLS。(3)用于对变量赋值的SETA、SETL和SETS。(4)为通用寄存器列表定义名称的RLIST。4.1ARM汇编器支持的伪操作64.1.2符号定义伪操作1.全局变量定义伪操作GBLA、GBLL和GBLS(1)语法格式GBLA、GBLL和GBLS伪操作用于定义一个ARM程序中的全局变量并将其初始化。其中:①GBLA伪
4、操作用于定义一个全局的数字变量并初始化为0。②GBLL伪操作用于定义一个全局的逻辑变量并初始化为F(假)。③GBLS伪操作用于定义一个全局的字符串变量并初始化为空。由于以上3条伪指令用于定义全局变量,因此在整个程序范围内变量名必须唯一。语法格式如下:①取值为GBLA、GBLL、GBLS三者中的之一②定义的全局变量名,在其作用范围内必须唯一。全局变量的作用范围为包含该变量的源程序4.1ARM汇编器支持的伪操作7全局变量定义伪操作GBLA、GBLL和GBLS(2)使用说明
5、,如果用这些伪操作重新声明已经声明过的变量,变量的值将被初始化成后一次声明语句中的值。(3)示例①使用伪操作声明全局变量。GBLATest1;定义一个全局的数字变量,变量名为Test1Test1SETA0xaa;将该变量赋值为0xaaGBLLTest2;定义一个全局的逻辑变量,变量名为Test2Test2SETL{TRUE};将该变量赋值为真GBLSTest3;定义一个全局的字符串变量,变量名为Test3Test3SETS"Testing";将该变量赋值为“Testing”②声明变量Objectsize并设置其值为0xff,为“S
6、PACE”操作做准备。GBLAobjectsizeObjectsizeSETAoxffSPACEobjectsize③下面的例子显示如何使用汇编命令设置变量的值。具体做法是使用“pd”选项Armasmpd"objectsizeSETAoxff"oobjectfilesourcefile4.1ARM汇编器支持的伪操作84.1.2符号定义伪操作2.局部变量定义伪操作LCLA、LCLL和LCLS(1)语法格式LCLA、LCLL和LCLS伪指令用于定义一个ARM程序中的局部变量并将其初始化。其中:①LCLA伪操作用于定义一个局部的数
7、字变量并初始化为0。②LCLL伪操作用于定义一个局部的逻辑变量并初始化为F(假)③LCLS伪操作用于定义一个局部的字符串变量并初始化为空。以上3条伪操作用于声明局部变量,在其作用范围内变量名必须唯一。语法格式如下:①取值为LCLA、LCLL、LCLS三者中的之一。②所定义的局部变量名,在其作用范围内必须唯一。局部变量作用范围为包含该局部变量的宏。4.1ARM汇编器支持的伪操作9局部变量定义伪操作LCLA、LCLL和LCLS(2)使用说明,如果用这些伪操作重新声明已经声
8、明过的变量,则变量的值将被初始化成后一次声明语句中的值。(3)示例①使用伪操作声明局部变量。LCLATest4;声明一个局部的数字变量,变量名为Test4Test3SETA0xaa;将该变量赋值为0xaaLCLLTest5;声明一个局部的逻辑变量,
此文档下载收益归作者所有