arm汇编程序基本知识

arm汇编程序基本知识

ID:21951003

大小:62.00 KB

页数:9页

时间:2018-10-25

arm汇编程序基本知识_第1页
arm汇编程序基本知识_第2页
arm汇编程序基本知识_第3页
arm汇编程序基本知识_第4页
arm汇编程序基本知识_第5页
资源描述:

《arm汇编程序基本知识》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、ARM汇编程序基本知识1.汇编程序的基本组成ARM汇编语言程序中,程序是以程序段为单位组织代码的。段是相对独立的指令或者代码序列,拥有特定的名称。段的种类有代码段、数据段和通用段,代码段的A容为执行代码,数据段存放代码运行时需要用到的数据,通用段不包含用广代码和数据,所有通用段共用一个空间。段使用AREA伪操作来定义,并且说明相关属性,如代码段定义AREAInit,CODE,READONLY数据段定义AREAStackl,DATA,READWRITE,NOINIT,ALIGN=3等一个汇编程序至少应该有一个代码段,可以有零或者多个数据段。在格式上,一个汇编程序需要至少有一个ENTRY

2、(关于ENTR丫具体P、j容看伪操作符ENTRY),还需要在汇编源文件结束处,写上END表示该源文件的结束。如一个基本的汇编源程序AREAInit,CODE,READONLY;定义一个代码段ENTRY;标记程序入口点StartLDRR0,0x3FF5000;标号Start可以要,也可以不要LDRR1,OXffSTRR1,[R0]LDRR1,OxO1STRR1,[R0]END;END伪操作表示本源文件结束当汇编程序较长时,可以分割为多个代码段和多个数据段,多个段在程序编译链接时,最终形成一个可执行的映像文件。一个可执行映像文件通常巾以下几部分组成i一个或者多个代码段,代码段属性为只读(

3、只读数据也放在代码段?R0)"4零个或者多个初始化数据的数据段,W读写(存放初始化了的变量数据,RW)士零个或者多个不包含初始化数据的数据段,可读写(所有未初始化的变量,也就是ZI)链接器根据系统默认或者用户设定的规则,将各段安排在存储器中的相应位置,闪此源程序中段之间的相对位置与付执行映像文件中的段的相对位置一般不会相同。1.汇编语句应该注意的地方汇编语句格式[LABEL]OPERATION,[OPERAND],[;COMMENT]LABEL必须在一行的开头写。OPERATION包桮指令、伪操作、宏指令或伪指令。每一条操作助记符必须全部大写或者全部小写。在写操作助记符前,必须有空格

4、。OPERAND表示操作的对象,可以使常量、变量、細号、寄存器或者表达式,不同的对象之间必须用逗号分开。例子:AREAEX2,CODE,READONLY;操作助记符前而必须有空格GBLADATA;操作助记符前而必须有空格DATASETA,0x20;变砧名DATA前而不能留空格ADDR0,R1,R2ADDR0,R1,r2addR0,R1,r2AddR0,R1,r2;寄存器小写正确,指令助记符大小写混合错误1.常用符号汇编语言中,经常使用各种符号表示变量、常量和地址。变量的定义:使用伪操作GBLA、GBLL、GBLS,分别是定义全局的数值变量、逻辑变量和字符变量;LCLA、LCLL、LC

5、LS定义局部的数值变量、逻辑变量和字符变量。相应的变量使用SETA、SETL、SETS来进行赋值。注意字符串长度不应超过512个字节。例子:GBLADATADATASETA0x20LCLSstr1str1SETS“PEN”LCLLIcIcSETL{TRUE}常量是在运行过程中不能改变的量。ARM支持数值常量、逻辑常量和字符串常量。汇编中使用EQU来定义一个数值常量,如TestEQU10;定义标号Test的值为20.AddrEQUOx55,CODE32;关于EQU的具体使用,看伪操作EQU。数伉常垃一般为32为的整数,可以使十进制、十六进制,也可以是n进制(n=2〜9)如8_247是一

6、个八进制数。1.常见的伪操作符符号定义伪操作GBLA、GBLL、GBLSLCLA、LCLL、LCLSSETA、SETL、SETSRUST其中RUST用来定义通用寄存器列表名称,使用该伪操作定义的名称可以在ARM指令LDM/STM中使用。在LDM/STM中,访问列表中的寄存器次序为寄存器编号由低到高的顺序。如RegListRLIST{r0-r5,r8,r10};将寄存器列表名称定义为RegList在程序中使用STMFDSP!,RegList;存储列表到堆栈LDMIAR5,RegList;加载列表数据定义伪操作DCB分配一片连续的字节存储单元并初始化DCW(DCWU)分配一片连续的半字存

7、储单元并初始化DCD(DCDU)分配一片连续的字存储单元并初始化DCDO、DCI、DCQ(DCQU)DCFS(DCFSU)为单精度浮点数分配一片连续的字存储单元并初始化DCFD(DCFDU)为双精度浮点数分配一片连续的字存储单元并初始化SPACE分配一片连续的存储单元FIELD、MAP、LTORG如:StrDCB“thisisatest”;分配一片连续的字节存储单元并初始化DataDCW1,2,3;分配一片连续的半字存储单元并初始化DataDCD4,5,6

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

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

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