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 这种格式.)在这种格式下,需要使用 $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).
|