ARM嵌入式系统原理及应用开发 第4章 ARM嵌入式系统程序设计及调试基础

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

格式:标号 DCD(或DCDU) 表达式
用途:分配一片连续的字存储单元并用伪指令指定的表达式初
始化。其中,表达式可以为程序标号或数字表达式。DCD伪指令
也可用“&”代替。DCD伪指令和DCDU伪指令的区别仅在于用
DCD伪指令分配的字存储单元是字对齐的,而用DCDU伪指令分配
的字存储单元并不严格字对齐。例如:
FdataTest DCD 4,5,6 ;分配一片连续的字存储单元并初
始化
4)DCFD(或DCFDU)
格式:标号 DCFD(或DCFDU) 表达式
用途:为双精度的浮点数分配一片连续的字存储单元并用伪指
令中指定得表达式初始化。每个双精度的浮点数占据2个字单元。
DCFD伪指令和DCFDU伪指令的区别仅在于用DCFD伪指令分配的
第4章 ARM嵌入式系统程序设计及调试基础
4.1 ARM嵌入式汇编语言程序设计基础 4.2 ARM嵌入式C语言程序设计基础 4.3 ARM汇编语言与C/C++的混合编程 4.4 ARM ADS集成开发环境的使用 4.5 Embest IDE集成开发环境的使用
1
4.1 ARM嵌入式汇编语言程序设计基础
在ARM得汇编程序中,有符号定义(Symbol Defintion) 伪指令,数据定义(Data Definition)伪指令,地址读取伪 指令,汇编控制(Assembly Control)伪指令,宏指令以及 其它伪指令。
2
1.符号定义伪指令 1)GBLA、GBLL和GBLS 格式:GBLA(GBLL或GBLS) 全局变量名 用途:定义一个ARM程序中的全局变量,并将其初始化。其 中GBLA伪指令用于定义一个全局的数字变量,并初始化为0; GBLL伪指令用于定义一个全局的逻辑变量,并初始化为F(假); GBLS伪指令用于定义一个全局的字符串变量,并初始化为空。 由于以上3条伪指令用于定义全局变量,因此在整个程序范围 内变量名必须唯一。例如: GBLA Test1 ;定义一个全局的数字变量,变量名为Test1 Test1 SETA 0xAA ;将该变量赋值为0xAA GBLL Test2 ;定义一个全局的逻辑变量,变量名为Test2 Test2 SETL {TRUE} ;将该变量赋值为真 GBLS Test3 ;定义一个全局的字符串变量,变量名为 Test3 Test3 SETS “Testing” ;将该变量赋值为“Testing”
6
2.数据定义伪指令Байду номын сангаас1)DCB 格式:标号 DCB 表达式 用途:分配一片连续的字节存储单元并用伪指令中的表达式初
始化。其中,表达式可以为0~255的数字或字符串。DCB伪指令也 可用“=”代替。例如:
Str DCB “This is a test!” ;分配一片连续的字节存储单元并初 始化
2)DCW(或DCWU) 格式:标号 DCW(或DCWU)伪指令 用途:分配一片连续的半字节存储单元,并用伪指令中指定的
4.1.1 ARM汇编器支持的伪指令
在ARM汇编语言程序里,有一些特殊指令助记符,这 些助记符与指令系统的助记符不同,没有相应的操作码, 通常称这些特殊指令助记符为伪指令,他们所完成的操作 称为伪操作。伪指令在源程序中的作用是为完成汇编语言 程序作各种准备工作的,这些伪指令仅在汇编过程起作用, 一旦汇编结束,伪指令的使命就完成。
字存储单元是字对齐的,而用DCFDU伪指令分配的字存储单元并
不严格对齐。例如:
FdataTest DCFD 2E115,-5E7 ;分配一片连续的字存储单元
4
3)SETA、SETL、SETS 格式:变量名 SETA(SETL或SETS) 表达式 用途:给一个已经定义的全局变量或局部变量赋值。 其中变量名为已经定义过的全局变量或局部变量,表达式为将 要赋值给变量的值。SETA伪指令用于给一个数学变量赋值; SETL伪指令用于给一个逻辑变量赋值;SETS伪指令用于给一个 字符串变量赋值。例如: LCLA Test3 ;声明一个局部的数字变量,变量名为Test3 Test3 SETA 0xAA ;将该变量赋值为0xAA LCLL Test4 ;声明一个局部的逻辑变量,变量名为Test5 Test4 SETL {TRUE} ;将该变量赋值为真
3
2)LCLA、LCLL、LCLS 格式:LCLA(LCLL或LCLS)局部变量名 用途:定义一个ARM程序中的局部变量,并将其初始化。其中 LCLA伪指令用于定义一个局部的数字变量,并初始化为0;LCLL 伪指令用于定义一个局部的逻辑变量,并初始化为F(假);LCLS 伪指令用于一个局部的字符串变量,并初始化为空。 由于以上3条伪指令用于声明局部变量,因此在其作用范围内变 量名必须唯一。例如: LCLA Test4 ;声明一个局部得数字变量,变量名为Test4 Test4 SETA 0xAA ;将该变量赋值为0xAA LCLL Test5 ;声明一个局部的逻辑变量,变量名为Test5 Test5 SETL {TURE} ;将该变量赋值为真 LCLS Test6 ;定义一个局部的字符串变量,变量名为Test6 Test6 SETS “Testing” ;将该变量赋值为“Testing”
表达式初始化。其中,表达式可以为程序标号或数字表达式。DCW 伪指令和DCWU伪指令的区别仅在于用DCW伪指令分配的字存储单 元是半字对齐,而用DCWU伪指令分配的字存储单元并不严格半字 对齐。例如:
DataTest DCW 1,2,3 ;分配一片连续的半字存储单元并初 始化
7
3)DCD(或DCDU)
5
4)RLIST 格式:名称 RLIST{寄存器列表} 用途:对一个通用寄存器列表定义名称,使用该伪指令定 义的名称可在ARM指令LDM/STM中使用。在LDM/STM指令 中,列表中的寄存器访问次序为根据寄存器的标号由低到高, 而与列表中得寄存器排列次序无关。例如: RegList RLIST {R0–R5,R8,R10} ;将寄存器列表 名称定义为RegList,可在ARM指令LDM/STM中通过该名称 访问寄存器列表。
相关文档
最新文档