伪指令是用于告诉汇编程序如何进行汇编的指令。这里指的是MDK下的伪指令与GNU下的伪指令不一样。
一、常见伪指令
【area】定义一个代码段或者数据段
格式:area 段名 属性1,属性2……
段名:code:代码段、data:数据段
属性:readonly:只读、readwrite、align[4] 4字节对齐、code32 4字节、code16
【entry】汇编程序的入口点,
一个完整的汇编程序至少要有一个entry,一个文件中最多有一个entry,也可以没有,如果有多个entry,由链接器指定哪个是程序的入口点
【end】程序的结尾
【EQU】定义一个变量,相当于c语言中的define
【export】声明一个全局的标号
【import】通知编译器,要使用的标号在其他的源文件中定义,相当于c语言中的extern
二、符号定义伪指令
gbla 、gbll 、gbls、
GBLA伪操作声明一个全局的算术变量,并将其初始化为0。
GBLL伪操作声明一个全局的逻辑变量,并将其初始化成{FALSE}。
GBLS伪操作声明一个全局的串变量,并将其初始化为空串""。
lcla、lcll 、lcls
GBLA伪操作声明一个局部的算术变量,并将其初始化为0。
GBLL伪操作声明一个局部的逻辑变量,并将其初始化成{FALSE}。
GBLS伪操作声明一个局部的串变量,并将其初始化为空串""。
seta 、setl 、sets
设置变量具体值
示例代码如下:
gbla test1
test1 seta 0xaa
gbll test2
test2 setl {true}
gbls test3
test3 sets "testing"
dcb 、dcw 、dcd 、dcfd 、dcfs 、dcq 、space 、map filed
dcb 类似于定义一个char数组,用于分配一片连续的字节存储单元,
space 类似于mallocfen分配一片连续的内存区域并初始化为0
filed 类似于一个结构体
其他暂时不必了解。
三、控制伪指令
【IF】
if 逻辑表达式
指令序列
else
指令序列
Endif
【while】
while
指令语句
wend