* MAP
MAP
用于定义一个结构化的内存表的首地址。此时,内存表的位置计数器
{VAR}
设置为该地址值
{VAR}
为汇编器的内置变量。
^
与
MAP
同义
。
伪指令格式:
MAP expr
,
{base_register}
其中:
expr
数字表达式或程序中的标号。当指令中没有
base_register
时,
expr
即为结构化内存表的首地址。
base_register
一个寄存器。当指令中包含这一项时,结构化内存表的首地址为
expr
与
base_register
寄存器值的和。
MAP
伪指令和
FIELD
伪指令配合使用,用于定义结构化的内存表结构。
MAP
伪指令中的
base-register
寄存器的值对于其后所有的
FIELD
伪指令定义的数据域是默认使用的,直到遇到新的包含
base-register
项的
MAP
伪指令。
* FIELD
FIELD
用于定义一个结构化内存表中的数据域。
#
与
FIELD
同义
。
伪指令格式:
{label} FIELD expr
其中:
label
当指令中包含这一项时,
label
的值为当前内存表的位置计数器
{VAR}
的值,汇编编译器处理了这条
FIELD
伪指令后,内存表计数器的值将加上
expr
。
expr
表示本数据域在内存表中所占用的字节数。
MAP
,
FIELD
伪指令仅仅是定义数据结构,它们并不实际分配内存单元。
* SPACE
SPACE
用于分配一块内存单元,并用
0
初始化。
%
与
SPACE
同义
。
伪指令格式:
{label} SPACE expr
其中:
label
内存块起始地址标号。
expr
所要分配的内存字节数。
* DCB
DCB
用于分配一段字节内存单元,并用伪指令中的
expr
初始化。一般可用来定义数据表格,或文字符串。
=
与
DCB
同义
。
伪指令格式:
{label} DCB expr{
,
expr}{
,
expr}…
其中:
label
内存块起始地址标号。
expr
可以为-128~255 的数值或字符串。内存分配的字节数由expr 个数决定。
* DCD 和DCDU
DCD
用于分配一段字内存单元,并用伪指令中的
expr
初始化。
DCD
伪指令分配的内存需要字对齐,一般可用来定义数据表格或其它常数。
&
与
DCD
同义
。
DCDU
用于分配一段字内存单元,并用伪指令中的
expr
初始化。
DCD
伪指令分配的内存不需要字对齐,一般可用来定义数据表格或其它常数。
伪指令格式:
{label} DCD expr{
,
expr}{
,
expr}…
{label} DCDU expr{
,
expr}{
,
expr}…
其中:
label
内存块起始地址标号。
expr
常数表达式或程序中的标号。内存分配字节数由
expr
个数决定。
* IF、ELSE 和ENDIF
IF
,
ELSE
和
ENDIF
伪指令能够根据条件把一段代码包括在汇编程序内或将其排除在程序之外。
[
与
IF
同义,
|
与
ELSE
同义,
]
与
ENDIF
同义
。
伪指令格式:
IF logical_expr
;
指令或伪指令代码段
1
ELSE
;
指令或伪指令代码段
2
}
ENDIF
其中:
logical_expr
用于控制的逻辑表达式。若条件成立,则代码段落在汇编源程序中有效。若条件不成立,代码段
1
无效,同时若使用
ELSE
伪指令,代码段有效。
* EQU
EQU 伪指令为数字常量,基于寄存器的值和程序中的标号定义一个名称。*与EQU同义。
指令格式:
name EQU expr{,type}
其中:
name 要定义的常量的名称。
expr 基于寄存器的地址值,程序中的标号,32 位地址常量或32 位常量。
type 当expr 为32 位常量时,可用type 指示expr 表示的数据类型。如下
CODE16
CODE32
DATA
EQU 伪指令的作用类似于C 语言中的#define。用于为一个常量定义名称。
* GET 和INCLUDE
GET 伪指令将一个源文件包含到当前源文件中,并将被包含的文件在当前位置进行汇编处理。INCLUDE 与GFT 同义
指令格式
GET filename
INCLUDE filename
其中:
filename 要包含的源文件名,可以使用路径信息。
GET 伪指令通常用于包含一些宏定义或常量定义的源文件。如用EQU 定义的常量,用MAP 和FIELD 定义的结构化的数据类型,这样的源文件类似于C 语言中的头文件,GET,INCLUDE 伪指令不能用来包含目标文件,而INCBIN 伪指令可以包含目标文件。