18_ARM汇编自学笔记程序设计之符号定义&数据定义伪指令
2017-07-06 19:24
288 查看
四,ARM程序设计
符号定义(Symbol Definition)伪指令
GBLA、GBLL和 GBLS
GBLA Test1 ;定义一个全局的数字变量,变量名为Test1
Test1 SETA 0xaa ;将该变量赋值为 0xaa
GBLL Test2 ;定义一个全局的逻辑变量,变量名为Test2
Test2 SETL {TRUE} ;将该变量赋值为真
GBLS Test3 ;定义一个全局的字符串变量,变量名为Test3
Test3 SETS “Testing” ;将该变量赋值为“Testing”
LCLA、LCLL和 LCLS
LCLA Test4 ;声明一个局部的数字变量,变量名为Test4
Test3 SETA 0xaa ;将该变量赋值为 0xaa
LCLL Test5 ;声明一个局部的逻辑变量,变量名为Test5
Test4 SETL {TRUE} ;将该变量赋值为真
LCLS Test6 ;定义一个局部的字符串变量,变量名为Test6
Test6 SETS “Testing” ;将该变量赋值为“Testing”
SETA、SETL和 SETS
LCLA Test3 ;声明一个局部的数字变量,变量名为Test3
Test3 SETA 0xaa ;将该变量赋值为 0xaa
LCLL Test4 ;声明一个局部的逻辑变量,变量名为Test4
Test4 SETL {TRUE} ;将该变量赋值为真
RLIST
RegList RLIST {R0-R5,R8,R10} ;将寄存器列表名称定义为RegList,可在ARM指令LDM/STM中通过该名称访问寄存器列表。
数据定义(Data Definition)伪指令
DCB:
用于分配一片连续的字节存储单元并用伪指令中指定的表达式初始化
Str DCB “This is a test!”;分配一片连续的字节存储单元并初始化。
DCW(DCWU)
用于分配一片连续的半字存储单元并用伪指令中指定的表达式初始化
DataTest DCW 1,2,3 ;分配一片连续的半字存储单元并初始化。
DCD(DCDU)
分配一片连续的字存储单元并用伪指令中指定的表达式初始化
DataTest DCD 4,5,6 ;分配一片连续的字存储单元并初始化。
DCFD(DCFDU)
用于为双精度的浮点数分配一片连续的字存储单元并用伪指令中指定的表达式初始化。
FDataTest DCFD 2E115,-5E7 ;分配一片连续的字存储单元并初始化为指定的双精度数。
DCFS(DCFSU)
用于为单精度的浮点数分配一片连续的字存储单元并用伪指令中指定的表达式初始化。
FDataTest DCFS 2E5,-5E-7 ;分配一片连续的字存储单元并初始化为指定的单精度数。
DCQ(DCQU)
用于分配一片以 8 个字节为单位的连续存储区域并用伪指令中指定的表达式初始化
DataTest DCQ 100 ;分配一片连续的存储单元并初始化为指定的值。
SPACE
分配一片连续的存储区域并初始化为 0
DataSpace SPACE 100 ;分配连续 100 字节的存储单元并初始化为0。
MAP
用于定义一个结构化的内存表的首地址
MAP 0x100,R0 ;定义结构化内存表首地址的值为 0x100+R0。
FI LED
定义一个结构化内存表中的数据域
MAP 0x100 ;定义结构化内存表首地址的值为 0x100。
A FIELD 16 ;定义 A 的长度为 16 字节,位置为 0x100
B FIELD 32 ;定义 B 的长度为 32 字节,位置为 0x110
S FIELD 256 ;定义 S 的长度为 256 字节,位置为 0x130
符号定义(Symbol Definition)伪指令
GBLA、GBLL和 GBLS
GBLA Test1 ;定义一个全局的数字变量,变量名为Test1
Test1 SETA 0xaa ;将该变量赋值为 0xaa
GBLL Test2 ;定义一个全局的逻辑变量,变量名为Test2
Test2 SETL {TRUE} ;将该变量赋值为真
GBLS Test3 ;定义一个全局的字符串变量,变量名为Test3
Test3 SETS “Testing” ;将该变量赋值为“Testing”
LCLA、LCLL和 LCLS
LCLA Test4 ;声明一个局部的数字变量,变量名为Test4
Test3 SETA 0xaa ;将该变量赋值为 0xaa
LCLL Test5 ;声明一个局部的逻辑变量,变量名为Test5
Test4 SETL {TRUE} ;将该变量赋值为真
LCLS Test6 ;定义一个局部的字符串变量,变量名为Test6
Test6 SETS “Testing” ;将该变量赋值为“Testing”
SETA、SETL和 SETS
LCLA Test3 ;声明一个局部的数字变量,变量名为Test3
Test3 SETA 0xaa ;将该变量赋值为 0xaa
LCLL Test4 ;声明一个局部的逻辑变量,变量名为Test4
Test4 SETL {TRUE} ;将该变量赋值为真
RLIST
RegList RLIST {R0-R5,R8,R10} ;将寄存器列表名称定义为RegList,可在ARM指令LDM/STM中通过该名称访问寄存器列表。
数据定义(Data Definition)伪指令
DCB:
用于分配一片连续的字节存储单元并用伪指令中指定的表达式初始化
Str DCB “This is a test!”;分配一片连续的字节存储单元并初始化。
DCW(DCWU)
用于分配一片连续的半字存储单元并用伪指令中指定的表达式初始化
DataTest DCW 1,2,3 ;分配一片连续的半字存储单元并初始化。
DCD(DCDU)
分配一片连续的字存储单元并用伪指令中指定的表达式初始化
DataTest DCD 4,5,6 ;分配一片连续的字存储单元并初始化。
DCFD(DCFDU)
用于为双精度的浮点数分配一片连续的字存储单元并用伪指令中指定的表达式初始化。
FDataTest DCFD 2E115,-5E7 ;分配一片连续的字存储单元并初始化为指定的双精度数。
DCFS(DCFSU)
用于为单精度的浮点数分配一片连续的字存储单元并用伪指令中指定的表达式初始化。
FDataTest DCFS 2E5,-5E-7 ;分配一片连续的字存储单元并初始化为指定的单精度数。
DCQ(DCQU)
用于分配一片以 8 个字节为单位的连续存储区域并用伪指令中指定的表达式初始化
DataTest DCQ 100 ;分配一片连续的存储单元并初始化为指定的值。
SPACE
分配一片连续的存储区域并初始化为 0
DataSpace SPACE 100 ;分配连续 100 字节的存储单元并初始化为0。
MAP
用于定义一个结构化的内存表的首地址
MAP 0x100,R0 ;定义结构化内存表首地址的值为 0x100+R0。
FI LED
定义一个结构化内存表中的数据域
MAP 0x100 ;定义结构化内存表首地址的值为 0x100。
A FIELD 16 ;定义 A 的长度为 16 字节,位置为 0x100
B FIELD 32 ;定义 B 的长度为 32 字节,位置为 0x110
S FIELD 256 ;定义 S 的长度为 256 字节,位置为 0x130
相关文章推荐
- 20_ARM汇编自学笔记程序设计之汇编格式
- 03_ARM汇编自学笔记模型之处理器模式
- 06_ARM汇编自学笔记指令系统之分类与格式
- 04_ARM汇编自学笔记模型之ARM 状态下的寄存器组织
- Arm汇编学习笔记(五)——MOVS及^符号等
- 08_ARM汇编自学笔记指令系统之跳转指令
- 01_ARM汇编自学笔记之介绍
- 11_ARM汇编自学笔记指令系统之程序状态寄存器访问指令
- 12_ARM汇编自学笔记指令系统之加载存储指令
- 15_ARM汇编自学笔记指令系统之移位指令(操作)
- 13_ARM汇编自学笔记指令系统之批量数据加载存储指令
- 10_ARM汇编自学笔记指令系统之乘法指令与乘加指令
- 05_ARM汇编自学笔记模型之程序状态寄存器
- 09_ARM汇编自学笔记指令系统之数据处理指令
- 02_ARM汇编自学笔记模型之ARM微处理器的工作状态
- Arm汇编学习笔记(五)——MOVS及^符号等
- ARM汇编指令学习笔记(一)【为明天BOOTLOADER学习准备】
- ARM汇编指令学习笔记(一、二)【晚上BOOTLOAD了,速度】
- linux内核编程学习笔记一:AT&T汇编语言(转)
- 【自学笔记】定义一个标准的WPF窗口