欢迎来到天天文库
浏览记录
ID:23528829
大小:60.50 KB
页数:16页
时间:2018-11-08
《[工学]arm教材第5章arm汇编程序设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、第5章ARM汇编程序设计ARM编译器,如ADS集成开发环境,一般都支持汇编语言的程序设计。本章介绍ARM程序设计的一些基本概念,如ARM汇编语言的伪指令、汇编语言的语句格式和汇编语言的程序结构等到,并在些基础上介绍一些常用的ARM汇编子程序的设计。4.1ARM伪指令ARM汇编程序由汇编指令、伪指令和宏指令组成,伪指令不介汇编指令那样在处理器的运行期间执行,而是在汇编器对汇编程序进行汇编时处理。宏是一段独立的汇编程序代码,它是通过伪指令定义的,在程序中宏指令即调用宏指令。当程序被汇编时,汇编程序对每个宏调用进行展开,用宏定义代汇编程序中的宏指令。由于指令也发球汇编伪指令的一部
2、分,因此本书将宏指令放在汇编伪一起介绍。与单片机汇编程序设计一样,在ARM汇编语言程序里,有一些特殊指令助记符,这些助记符与指令系统的助记符不同,它们没有相对应的操作友码,通常称这些特殊指令助记符为伪指令,它们所完成的操作称为伪操作。伪指令在源程序中的作用是为完成汇编程序做各种准备工作,这些伪指令仅在汇编过程中起作用,一旦汇编结束,伪指令的使命就完成了。在ARM的光荣称号程序中,有如下几种伪指令:符号定义伪指令、数据定义伪指令、汇编控制伪指令以及其他伪指令。4.1.1符号定义(SymbolDefinition)伪指令符号定义伪指令用于定义ARM汇编程序中的变量、对变量赋值以
3、及定义寄存器的别名等。常见的符号定义伪指令有以下几种:l用于宝玉局变量的GBLA、GBLL和GBLS;l用于定义局部变量的LCLA、SETL、LCLS;l用于对变量赋值的SETA、SETL、SETS;l为通用寄存器列表定义名称的RLIST;l为一个协处理器的寄存器定义名称的伪指令CN;l为一个协处理器定义名称的伪指令CP;l为一个CFP寄存器定义名称的伪指令DN和SN;l为一个FPA浮点寄存器定义名称的伪指令FN。1.GBLA、GBLL和GBLS语法格式:GBLA(GBLL或GBLS)全局变量名GBLA、GBLL和GBLS伪指令用于定义一个ARM程序中的全局变量,并半其初始
4、化。其中:GBLA伪指令用于定义一个全局的数字变量,并初始化为0;GBLL伪指令用于定义一个全局的逻辑变量,并初始化为F(假);GBLS伪指令用于定义一个全局的字符串变量,并初始化为空。由于以上三条伪指令用于定义全局变量,因此在整个程序范围内变量名必须唯一。使用示例:GBLANumber1;定义一个全局的数字变量,变量名为Number1Number1SETA0xaa;将Number1变量赋值为0xaaGBLLTrue1;定义一个全局的逻辑变量,变量名为True1True1SETL{TRUE};将True1变量赋值为真GBLSString1;定义一个全局的字符串变量,变量名为
5、String1String1SETS“Testing”;将String1变量赋值为“Testing”1.LCLA、LCLL和LCLS语法格式:LCLA(LCLL或LCLS)局部变量名LCLA、LCLL和LCLS伪指令用于定义一个ARM程序中的局部变量,并将其初始化,其中:lLCLA伪指令用于定义一个局部的数字变量,并初始化为0;lLCLL伪指令用于定义一个局部的逻辑变量,并初始化为F(假);lLCLS伪指令用于定义一个局部的字符串变量,并初始化为空。以上三条伪指令用于声明局部变量,在其作用范围内变量名必须唯一。使用示例:LCLANumber2;声明一个局部的数字变量,变量名
6、为Number2Number2SETA0xaa;将Number2变量赋值为0xaaLCLLLogic2;声明一个局部的逻辑变量,变量名为Logic2Logic2SETL{TRUE};将Logic2变量赋值为真LCLSString2;定义一个局部的字符串变量,变量名为String2String2SETS“Testing”;将String2变量赋值为“Testing”3.SETA、SETL和SETS语法格式:变量名SETA(SETL或SETS)表达式伪指令SETA、SETL、SETS用于给一个已经定义的全局变量或局部变量赋值。lSETA伪指令用于给一个数学变量赋值;lSETL伪
7、指令用于给一个逻辑变量赋值;lSETS伪指令用于给一个字符串变量赋值。其中,变量名是已经定义地的全局变量或局部变量,表达式是将要赋给变量的值。使用示例:LCLANumber3;声明一个局部的数字变量,变量名为Number3Number3SETA0xaa;将Number3变量赋值为0xaaLCLLLogic3;声明一个局部的逻辑变量,变量名为Logic3Logic3SETL{TRUE}了;将Logic3变量赋值为真4.RLIST语法格式:名称RLIST{寄存器列表}RLIST伪指令可用于对一个通用寄存器列表定义名称,
此文档下载收益归作者所有