您的位置:首页 > 其它

arm学习笔记四(arm伪指令)

2013-02-21 21:46 239 查看
arm伪指令

符号定义伪指令

定义arm汇编程序中的变量、对变量赋值以及定义寄存器的别名

定义全局变量

gbla(全局数字变量,初始化值为0)

GBLA 全局变量名

示例代码如下:

GBLA Test1;定义全局数字变量test1

Test1 SETA 0x123;将该变量赋值为0x123

gbll(全局逻辑变量,初始化为F)

GBLL 全局变量名

示例代码如下:

GBLL Test2;定义全局逻辑变量test2

Test2 SETL {TRUE};将变量赋值为真

bgls(全局字符串变量,初始化为空)

GBLS 全局变量名

示例代码如下:

GBLS Test3;定义全局字符串变量test3

Test3 SETS "Testing";将变量赋值为testing

定义局部变量

lcla

lcll

lcls

对变量赋值

seta

setl

sets

为通用寄存器列表定义名称 rlist

在LDM/STM指令中,列表中的寄存器访问次序根据寄存器的编号由低到高

与列表中的寄存器的排列次序无关

语法格式:

名称 RLIST {寄存器列表}

示例代码如下:

RegList RLIST (R0-R5,R8,R10);定义RegList寄存器列表

数据定义伪指令

DCB 分配一片连续的字节存储单元,并且用指令中指定的表达式初始化

语法格式:

标号 DCB 表达式

示例代码如下:

str DCB "this is a test!";分配一片连续的字节存储单元并初始化

SPACE 分配一片连续的存储区域并初始化为0,表达式的值为要分配的字节数

语法格式:

标号 SPACE 表达式

示例代码如下:

DataSpace SPACE 100;分配连续100字节的存储单元并初始化为0

MAP 定义一个结构化内存表的首地址

语法格式:

MAP 表达式{,基址寄存器}

示例代码如下:

MAP 0X100,R0;定义结构化内存表首地址为0x100+R0

FILED 定义一个结构化内存表中的数据域

语法格式:

标号 FILED 表达式

示例代码如下:

MAP 0X0100;定义结构化内存表首地址的值为0x100

A FILED 16;定义A的长度为16字节,位置为0x100

B FILED 32;定义B的长度为32字节,位置为0x110

C FILED 256;定义C的长度为256字节,位置为0x130

汇编控制伪指令

IF ELSE ENDIF

语法格式:

IF 逻辑表达式

指令序列1

ELSE

指令序列2

ENDIF

示列代码如下:

GBLL Test;

IF Test=TRUE

指令序列1

ELSE

指令序列2

ENDIF

WHILE WEND

语法格式:

WHILE 逻辑表达式

指令序列

WEND

示例代码如下:

GBLA Counter;声明一个全局数学变量

Counter SETA 3;赋值

WHILE Counter<10

指令序列

WEND

MACRO MEND

MEXIT

宏指令

其它伪指令

AREA 定义一个代码段或数据段

语法格式:

AREA 段名 属性1,属性2

常用属性:

CODE:定义代码段,默认为readonly

DATE:定义数据段,默认为readwirte

READONLY:只读

READWRITE:可读可写

ALIGN:对齐方式 语法格式:ALIGN {表达式{,偏移量}}

示例代码如下:

AREA Init,CODE,READONLY;定义一个名为init的代码段,属性为只读

AREA Init,CODE,READONLY,ALIEN=3;指定后面的指令为8字节对齐

CODE16(CODE32)通知编译器,其后的指令序列为16位的thumb指令

ENTRY 指定汇编程序的入口点

示例代码如下:

AREA Init,CODE,READONLY

ENTRY;指定应用程序的入口点

EQU 为程序中的常量,标号等定义一个等效的字符名称(类似于define)

语法格式:

名称 EQU 表达式{,类型}

示例代码如下:

Test EQU 50;定义标号Test的值为 50

Addr EQU 0x55,CODE32;定义Addr 的值为0x55,且该处为32位的arm指令

EXPORT 在程序中声明一个全局的标号,该标号可在其他的文件中引用

语法格式:

EXPORT 标号

示例代码:

AREA Init,CODE,READONLY

EXPORT Stest;声明一个可全局引用的标号Stest
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: