* 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 伪指令可以包含目标文件。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/bird67/archive/2008/04/08/2261422.aspx