A51提供的汇编控制指令,针对A51汇编器的,用于改变A51的状态,A51汇编器能够识别2类汇编控制指令,首要的汇编控制指令和次要的汇编控制指令. 首要控制指令:首要控制指令只能在源程序中出现一次,可以放在命令行或者是源程序的开头,他们不能被别的控制改变.如果需要使用多个首要控制指令,则最好把他们放在源程序的开头,(这样可以在命令行中少输入这些指令,)首要控制指令在源程序中一行只能由一个首要控制指令, 命令的格式: $ 汇编控制指令 (参数) 以$符号开始,且位于第一列,符号与控制指令助记符之间要有空格. 次要控制指令,次要控制指令不能出现在命令行中,只能出现在源程序中,其命令的格式个首要控制指令的格式一样. 一: 首要控制指令 1) DEBUG/NODEBUG 缩写:DB/NODB 默认值:NODEBUG 功能:DEBUG指示A51在目标文件中加入DS51或其他的Intel兼容的仿真器使用的调试信息,而NODEBUG指示不加入调试信息. 1) OBJECT/NOOBJECT 缩写: OJ/NOOJ 参数:仅OBJECT 需要以用括号括起来的文件名 默认值:OBJECT(源文件名.OBJ) 功能:OBJECT指示生成以文件名参数命名的目标文件,如果该指令末未带文件名,则默认目标文件名与源文件名相同,扩展名.OBJ,通常目标文件与源文件位于同一目录下.NOOBJECT指示不生成目标文件.默认的控制是生成与源文件同名,扩展名.OBJ. 2) PRINT/NOPRINT 缩写:PR/NOPR 参数:可有可无的由括号括起来的文件名(仅PRINT指令需要) 默认值:PRINT(源文件名.LST) 功能:PRINT生成以文件名参数命名的列表文件,如果未指定文件名,默认的列表文件名为源文件名.LST.NOPRINT指示不生成列表文件.默认的控制是生成与源文件名同名的,扩展名为.LST的列表文件. 3) SYMBOLS/NOSYMBOLS 缩写:SB/NOSB 默认值:SYMBOLS 功能:SYMBOLS指示在列表文件中生成符号表,该指令的功能可被NOPRINT抑制,而NOSYMBOLS指示不生成符号表,该指令的功能可被XREF(在列表文件中生成符号的交叉参考列表)指令激活,默认的控制为SB,即在列表文件中生成符号表. 4) MOD51/NOMOD51 缩写:MO/NOMO 默认值:MOD51 功能:MOD指令使编程者能使用预定义的8051的BIT和DATA符号,而NOMOD51使51不识别8051所定义的所有符号,从而使用户可以对MCS-51系列其他的单片机编程并自定义符号文件.自定义的文件必须使用 $ INCLUDE指令包含到源文件中去,(这种格式是在A51源文件中,在C源文件中使用预处理指令 #Include <filename.h>这种格式.)在这种格式下,需要使用 $NOMOD51 指令,否则会因为多重定义产生错误. 5) COND和 NOCOND 默认值:COND 功能:指示在列表文件中列出IF—ELSEIF—ENDIF条件汇编结构中未汇编的部分.NOCOND指示不列出未汇编的部分,此时未列出的部分可以通过丢失的行号识别.默认的控制是COND,即在列表文件中列出为汇编的部分. 二 次要控制指令 次要控制指令可多次出现在源程序中的任何地方,但不能出现在命令行,对于同一指令的多次出现,A51总是只接受最新出现的指令的控制. 1) INCLUDE 参数:用括号括起来的文件名 功能:在该指令出现的地方插入参数所指定的文件名,INCLUDE指令可以嵌套,该指令常和NOMOD51指令一起使用,在程序中除了插入为单片机自定义的包含文件外,也可以使有效的汇编语言源代码. Example : $ INCLUDE (REG52.inc) 2) 条件汇编 条件汇编语据属于次要控制指令,但SET 和 RESET 可在源程序或者是命令行中使用.使用条件汇编,可根据不同需要部分的汇编源程序代码,使用同一程序能满足不同的应用需要. 条件汇编的部分是位于IF/ELSEIF/ELSE/ENDIF指令之间的源代码块,他们又带有美元符和不带美元符两种不同形式.两种形式的差异仅在于前者只能访问由SET 和 RESET指令定义的符号,而后者可访问除SET和RESET定义之外所有的符号.除SET 和RESET指令可用于命令行之外,其他的条件汇编条件汇编指令只能用于源程序中. a) SET 和RESET 参数:(变量[,变量][,变量]……) (变量=数值[,变量=数值][,变量=数值]……) (变量,变量=数值,变量[,……]…) 功能:指令SET和RESET将变量赋值,这些变量与CODE,BIT,DATA,IDATA,XDATA不同,他们只能用在条件汇编的表达式里以控制条件汇编,不能用于其他地方.数值的类型可以是常数或者是无类型的表达式. Example: $ SET (TMP,TMP1=55,TMP2,TMP3) 将变量TMP,TMP2,TMP3赋默认值0FFFFH(TURE) ,变量TMP1被赋值为55 $ RESET(TMP,VAR,TMP3) 将变量TMP,VAR,TMP3都赋以默认值0000H(FALSE). |