A51提供的匯編控制指令,針對(duì)A51匯編器的,用于改變A51的狀態(tài),A51匯編器能夠識(shí)別2類匯編控制指令,首要的匯編控制指令和次要的匯編控制指令. 首要控制指令:首要控制指令只能在源程序中出現(xiàn)一次,可以放在命令行或者是源程序的開頭,他們不能被別的控制改變.如果需要使用多個(gè)首要控制指令,則最好把他們放在源程序的開頭,(這樣可以在命令行中少輸入這些指令,)首要控制指令在源程序中一行只能由一個(gè)首要控制指令, 命令的格式: $ 匯編控制指令 (參數(shù)) 以$符號(hào)開始,且位于第一列,符號(hào)與控制指令助記符之間要有空格. 次要控制指令,次要控制指令不能出現(xiàn)在命令行中,只能出現(xiàn)在源程序中,其命令的格式個(gè)首要控制指令的格式一樣. 一: 首要控制指令 1) DEBUG/NODEBUG 縮寫:DB/NODB 默認(rèn)值:NODEBUG 功能:DEBUG指示A51在目標(biāo)文件中加入DS51或其他的Intel兼容的仿真器使用的調(diào)試信息,而NODEBUG指示不加入調(diào)試信息. 1) OBJECT/NOOBJECT 縮寫: OJ/NOOJ 參數(shù):僅OBJECT 需要以用括號(hào)括起來的文件名 默認(rèn)值:OBJECT(源文件名.OBJ) 功能:OBJECT指示生成以文件名參數(shù)命名的目標(biāo)文件,如果該指令末未帶文件名,則默認(rèn)目標(biāo)文件名與源文件名相同,擴(kuò)展名.OBJ,通常目標(biāo)文件與源文件位于同一目錄下.NOOBJECT指示不生成目標(biāo)文件.默認(rèn)的控制是生成與源文件同名,擴(kuò)展名.OBJ. 2) PRINT/NOPRINT 縮寫:PR/NOPR 參數(shù):可有可無(wú)的由括號(hào)括起來的文件名(僅PRINT指令需要) 默認(rèn)值:PRINT(源文件名.LST) 功能:PRINT生成以文件名參數(shù)命名的列表文件,如果未指定文件名,默認(rèn)的列表文件名為源文件名.LST.NOPRINT指示不生成列表文件.默認(rèn)的控制是生成與源文件名同名的,擴(kuò)展名為.LST的列表文件. 3) SYMBOLS/NOSYMBOLS 縮寫:SB/NOSB 默認(rèn)值:SYMBOLS 功能:SYMBOLS指示在列表文件中生成符號(hào)表,該指令的功能可被NOPRINT抑制,而NOSYMBOLS指示不生成符號(hào)表,該指令的功能可被XREF(在列表文件中生成符號(hào)的交叉參考列表)指令激活,默認(rèn)的控制為SB,即在列表文件中生成符號(hào)表. 4) MOD51/NOMOD51 縮寫:MO/NOMO 默認(rèn)值:MOD51 功能:MOD指令使編程者能使用預(yù)定義的8051的BIT和DATA符號(hào),而NOMOD51使51不識(shí)別8051所定義的所有符號(hào),從而使用戶可以對(duì)MCS-51系列其他的單片機(jī)編程并自定義符號(hào)文件.自定義的文件必須使用 $ INCLUDE指令包含到源文件中去,(這種格式是在A51源文件中,在C源文件中使用預(yù)處理指令 #Include <filename.h>這種格式.)在這種格式下,需要使用 $NOMOD51 指令,否則會(huì)因?yàn)槎嘀囟x產(chǎn)生錯(cuò)誤. 5) COND和 NOCOND 默認(rèn)值:COND 功能:指示在列表文件中列出IF—ELSEIF—ENDIF條件匯編結(jié)構(gòu)中未匯編的部分.NOCOND指示不列出未匯編的部分,此時(shí)未列出的部分可以通過丟失的行號(hào)識(shí)別.默認(rèn)的控制是COND,即在列表文件中列出為匯編的部分. 二 次要控制指令 次要控制指令可多次出現(xiàn)在源程序中的任何地方,但不能出現(xiàn)在命令行,對(duì)于同一指令的多次出現(xiàn),A51總是只接受最新出現(xiàn)的指令的控制. 1) INCLUDE 參數(shù):用括號(hào)括起來的文件名 功能:在該指令出現(xiàn)的地方插入?yún)?shù)所指定的文件名,INCLUDE指令可以嵌套,該指令常和NOMOD51指令一起使用,在程序中除了插入為單片機(jī)自定義的包含文件外,也可以使有效的匯編語(yǔ)言源代碼. Example : $ INCLUDE (REG52.inc) 2) 條件匯編 條件匯編語(yǔ)據(jù)屬于次要控制指令,但SET 和 RESET 可在源程序或者是命令行中使用.使用條件匯編,可根據(jù)不同需要部分的匯編源程序代碼,使用同一程序能滿足不同的應(yīng)用需要. 條件匯編的部分是位于IF/ELSEIF/ELSE/ENDIF指令之間的源代碼塊,他們又帶有美元符和不帶美元符兩種不同形式.兩種形式的差異僅在于前者只能訪問由SET 和 RESET指令定義的符號(hào),而后者可訪問除SET和RESET定義之外所有的符號(hào).除SET 和RESET指令可用于命令行之外,其他的條件匯編條件匯編指令只能用于源程序中. a) SET 和RESET 參數(shù):(變量[,變量][,變量]……) (變量=數(shù)值[,變量=數(shù)值][,變量=數(shù)值]……) (變量,變量=數(shù)值,變量[,……]…) 功能:指令SET和RESET將變量賦值,這些變量與CODE,BIT,DATA,IDATA,XDATA不同,他們只能用在條件匯編的表達(dá)式里以控制條件匯編,不能用于其他地方.數(shù)值的類型可以是常數(shù)或者是無(wú)類型的表達(dá)式. Example: $ SET (TMP,TMP1=55,TMP2,TMP3) 將變量TMP,TMP2,TMP3賦默認(rèn)值0FFFFH(TURE) ,變量TMP1被賦值為55 $ RESET(TMP,VAR,TMP3) 將變量TMP,VAR,TMP3都賦以默認(rèn)值0000H(FALSE). |