ARM汇编语言程序设计

ARM汇编语言程序设计

ID:40835838

大小:281.50 KB

页数:74页

时间:2019-08-08

ARM汇编语言程序设计_第1页
ARM汇编语言程序设计_第2页
ARM汇编语言程序设计_第3页
ARM汇编语言程序设计_第4页
ARM汇编语言程序设计_第5页
资源描述:

《ARM汇编语言程序设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第四章ARM汇编语言程序设计ADS1.2环境下的汇编语句格式1.ARM汇编中,所有标号必须在一行的顶格书写,其后面不要添加“:”,而所有指令均不能顶格书写。2.ARM汇编器对标识符大小写敏感,书写标号及指令时字母大小写要一致,在ARM汇编程序中,一个ARM指令、伪指令、寄存器名可以全部为大写字母,也可以全部为小写字母,但不要大小写混合使用(如果混合使用也能编译通过,如movSP,r6能编译通过,但是moVSP,r6则出现错误)。3.注释可以在一行的顶格书写。4.1伪操作在ARM汇编语言程序里,有一些特殊指令助记符,这些助记符与指令系统的助记符不同,没有

2、相对应的操作码,通常称这些特殊指令助记符为伪指令他们所完成的操作称为伪操作。ARM指令系统伪指令:由汇编器处理伪指令是由汇编器对源程序汇编期间进行处理的.伪指令仅在汇编过程中起作用,一旦汇编结束,伪指令的使命就完成。指令:由ARM处理器执行ARM指令系统在ARM的汇编程序中,有如下几种伪指令:符号定义伪指令、数据定义伪指令、汇编控制伪指令、宏指令以及其他伪指令。ARM指令系统4.1.1符号定义伪指令符号定义伪指令用于定义ARM汇编程序中的变量、对变量赋值以及定义寄存器的别名等操作。ARM指令系统4.1.1符号定义伪指令常见的符号定义伪指令有如下几种:—

3、用于定义全局变量的GBLA、GBLL和GBLS。—用于定义局部变量的LCLA、LCLL和LCLS。—用于对变量赋值的SETA、SETL、SETS。—为通用寄存器列表定义名称的RLIST。ARM指令系统1、GBLA、GBLL和GBLS语法格式:GBLA(GBLL或GBLS)全局变量名GBLA、GBLL和GBLS伪指令用于定义一个ARM程序中的全局变量,并将其初始化。GBLA伪指令用于定义一个全局的数字变量,并初始化为0;GBLL伪指令用于定义一个全局的逻辑变量,并初始化为F(假);GBLS伪指令用于定义一个全局的字符串变量,并初始化为空;由于以上三条伪指

4、令用于定义全局变量,因此在整个程序范围内变量名必须唯一。GBLATest1;定义一个全局的数字变量,变量名为Test1Test1SETA0xaa;将该变量赋值为0xaaGBLLTest2;定义一个全局的逻辑变量,变量名为Test2Test2SETL{TRUE};将该变量赋值为真GBLSTest3;定义一个全局的字符串变量,变量名为Test3Test3SETS"Testing";将该变量赋值为"Testing"2、LCLA、LCLL和LCLS语法格式:LCLA(LCLL或LCLS)局部变量名LCLA、LCLL和LCLS伪指令用于定义一个ARM程序中的局部

5、变量,并将其初始化。其中:LCLA伪指令用于定义一个局部的数字变量,并初始化为0;LCLL伪指令用于定义一个局部的逻辑变量,并初始化为F(假);LCLS伪指令用于定义一个局部的字符串变量,并初始化为空;以上三条伪指令用于声明局部变量ARM指令系统使用示例:LCLATest4;声明一个局部的数字变量,变量名为Test4Test3SETA0xaa;将该变量赋值为0xaaLCLLTest5;声明一个局部的逻辑变量,变量名为Test5Test4SETL{TRUE};将该变量赋值为真LCLSTest6;定义一个局部的字符串变量,变量名为Test6Test6SET

6、S“Testing”;将该变量赋值为“Testing”3、SETA、SETL和SETS语法格式:变量名SETA(SETL或SETS)表达式伪指令SETA、SETL、SETS给一个已经定义的全局变量或局部变量赋值。SETA伪指令用于给一个数学变量赋值;SETL伪指令用于给一个逻辑变量赋值;SETS伪指令用于给一个字符串变量赋值;其中,变量名为已经定义过的全局变量或局部变量,表达式为将要赋给变量的值。使用示例:LCLATest3;声明一个局部的数字变量,变量名为Test3Test3SETA0xaa;将该变量赋值为0xaaLCLLTest4;声明一个局部的逻

7、辑变量,变量名为Test4Test4SETL{TRUE};将该变量赋值为真ARM指令系统4、RLIST名称RLIST{寄存器列表}RLIST伪指令可用于对一个通用寄存器列表定义名称,使用该伪指令定义的名称可在ARM指令LDM/STM中使用。在LDM/STM指令中,列表中的寄存器访问次序为根据寄存器的编号由低到高,而与列表中的寄存器排列次序无关。RLIST使用示例:RegListRLIST{R0-R5,R8,R10}将寄存器列表名称定义为RegList,可在ARM指令LDM/STM中通过该名称访问寄存器列表。例:RegListRLIST{r1-r13};

8、必须顶格开始写LDMIAr0,RegList4.1.2数据定义(DataDefinition)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。