支持PC系列微機(jī)的匯編程序有ASM、MASM、OPTASM等多種,現(xiàn)在廣泛使用的MASM是美國Microsoft公司開發(fā)的宏匯編程序。它不僅包含了ASM的功能,還增加了宏指令、結(jié)構(gòu)、記錄等高級宏匯編語言功能。
MASM宏匯編語言有兩種基本語句,它們是指令語句和指示語句(又稱偽指令語句)。
1.指令語句(Instruction Statement)
指令語句又稱可執(zhí)行語句,它要求CPU執(zhí)行某種操作。在第3章中介紹的各種指令都是指令語句,指令語句經(jīng)匯編后產(chǎn)生機(jī)器目標(biāo)代碼。
指令語句的格式為:[標(biāo)號:]指令助記符[操作數(shù)][;注釋]
一條指令語句可分為四個字段,其中方括號內(nèi)的字段為可選項。
1)標(biāo)號字段(Label field)
這是一個任選項,以“”作為結(jié)束符。標(biāo)號是該指令的符號地址,它代表該指令的第一個字節(jié)地址。一個程序段或子程序的入口處通常用一個標(biāo)號來表示,當(dāng)程序需要轉(zhuǎn)移或調(diào)用時,可直接引用此標(biāo)號,這給編程帶來了方便。
匯編語言中,用來標(biāo)識某種數(shù)據(jù)結(jié)構(gòu)名稱(如變量、標(biāo)號、過程名等)的有效字符序列稱為標(biāo)識符。MASM的標(biāo)識符組成規(guī)則如下:
。1)標(biāo)識符有效長度1~31個字符;
。2)標(biāo)識符由字母(大寫或小寫的英文字母),數(shù)字(0~9)或某些特殊字符如@S|:・/等組成;
。3)第一個字符必須是字母,不允許用數(shù)字開頭,也不允許用特殊符號單獨作為標(biāo)識符;
。4)標(biāo)識符不能使用系統(tǒng)專用字,如AX(寄存器名),MOV(助記符)等。
2)指令助記符字段(Mnemonic field)
助記符是指令的關(guān)鍵部分,不可省略,例如MOV、ADD、SHL等。助記符表示要CPU完成什么具體操作,必要時可在助記符前加前綴以實現(xiàn)某些附加操作(如重復(fù)前綴REP)
3)操作數(shù)字段(Operand field)
操作數(shù)是指令運算時需要的數(shù)據(jù)。由于有些指令不需要數(shù)據(jù),因此這部分可默認(rèn)。當(dāng)指令要求有兩個操作數(shù)時,必須用逗號將兩個操作數(shù)分開。操作數(shù)可以用表達(dá)式來表示。
4)注釋字段(Comment field)
注釋字段是可選項。如果語句中帶注釋字段,則必須用分號開始。注釋字段用于對程序或指令加注釋,用以提高程序的可讀性,但匯編程序不對它做任何處理。
2.指示性語句(Pseud Instruction Statement)
指示語句又稱偽指令,它不要求CPU執(zhí)行某種操作,匯編時也不產(chǎn)生對應(yīng)的機(jī)器代碼,而僅僅給匯編程序提供匯編信息,如源程序起止信息、段內(nèi)存的安排等。
偽指令的格式為:[名字]偽指令定義符[操作數(shù)][;注釋]
其中方括號內(nèi)的字段為可選項。
指示語句的格式與指令語句類似,不同之處有以下幾點:
。1)名字是給偽指令取的名稱,相當(dāng)于指令語句的標(biāo)號,但在名字后面不允許帶冒號(:),名字可以默認(rèn)。
。2)偽指令定義符是由MASM規(guī)定的符號,又稱為匯編命令,不可默認(rèn),如DB、DW、PROC等。
。3)操作數(shù)個數(shù)隨不同偽指令而相差懸殊,有的偽指令不允許有操作數(shù),有的偽指令允許帶許多個操作數(shù),這時必須用逗號將各個操作數(shù)分開。