序列 1 ELSE 指令序列 2 ENDIF IF 、 ELSE 、 ENDIF 偽指令能根據(jù)條件的成立與否決定是否執(zhí)行某個(gè)指令序列。當(dāng) IF 后面的邏輯表達(dá)式為真,則執(zhí)行指令序列 1 ,否則執(zhí)行指令序列 2 。其中, ELSE 及指令序列 2 可以沒(méi)有,此時(shí),當(dāng) IF 后面的邏輯表達(dá)式為真,則執(zhí)行指令序列 1 ,否則繼續(xù)執(zhí)行后面的指令。 IF 、 ELSE 、 ENDIF 偽指令可以嵌套使用。 使用示例: GBLL Test ;聲明一個(gè)全局的邏輯變量,變量名為 Test…… IF Test = TRUE 指令序列 1 ELSE 指令序列 2 ENDIF
2、 WHILE、WEND 語(yǔ)法格式: WHILE 邏輯表達(dá)式 指令序列 WEND WHILE 、 WEND 偽指令能根據(jù)條件的成立與否決定是否循環(huán)執(zhí)行某個(gè)指令序列。當(dāng) WHILE 后面的邏輯表達(dá)式為真,則執(zhí)行指令序列,該指令序列執(zhí)行完畢后,再判斷邏輯表達(dá)式的值,若為真則繼續(xù)執(zhí)行,一直到邏輯表達(dá)式的值為假。 WHILE 、 WEND 偽指令可以嵌套使用。 使用示例: GBLA Counter ;聲明一個(gè)全局的數(shù)學(xué)變量,變量名為 Counter Counter SETA 3 ;由變量Counter 控制循環(huán)次數(shù) …… WHILE Counter < 10 指令序列 WEND
3、 MACRO、MEND 語(yǔ)法格式: $ 標(biāo)號(hào) 宏名 $ 參數(shù) 1 , $ 參數(shù) 2 ,…… 指令序列 MEND MACRO 、 MEND 偽指令可以將一段代碼定義為一個(gè)整體,稱為宏指令,然后就可以在程序中通過(guò)宏指令多次調(diào)用該段代碼。其中, $ 標(biāo)號(hào)在宏指令被展開(kāi)時(shí),標(biāo)號(hào)會(huì)被替換為用戶定義的符號(hào), 宏指令可以使用一個(gè)或多個(gè)參數(shù),當(dāng)宏指令被展開(kāi)時(shí),這些參數(shù)被相應(yīng)的值替換。 宏指令的使用方式和功能與子程序有些相似,子程序可以提供模塊化的程序設(shè)計(jì)、節(jié)省存儲(chǔ)空間并提高運(yùn)行速度。但在使用子程序結(jié)構(gòu)時(shí)需要保護(hù)現(xiàn)場(chǎng),從而增加了系統(tǒng)的開(kāi)銷,因此,在代碼較短且需要傳遞的參數(shù)較多時(shí),可以使用宏指令代替子程序。 包含在 MACRO 和 MEND 之間的指令序列稱為宏定義體,在宏定義體的第一行應(yīng)聲明宏的原型(包含宏名、所需的參數(shù)),然后就可以在匯編程序中通過(guò)宏名來(lái)調(diào)用該指令序列。在源程序被編譯時(shí),匯編器將宏調(diào)用展開(kāi),用宏定義中的指令序列代替程序中的宏調(diào)用,并將實(shí)際參數(shù)的值傳遞給宏定義中的形式參數(shù)。 MACRO 、 MEND 偽指令可以嵌套使用。
4、 MEXIT 語(yǔ)法格式: MEXIT MEXIT 用于從宏定義中跳轉(zhuǎn)出去。 其他常用的偽指令 還有一些其他的偽指令,在匯編程序中經(jīng)常會(huì)被使用,包括以下幾條: — AREA — ALIGN — CODE16 、 CODE32 — ENTRY — END — EQU — EXPORT (或 GLOBAL ) — IMPORT — EXTERN — GET (或 INCLUDE ) — INCBIN — RN — ROUT 1、 AREA 語(yǔ)法格式: AREA 段名 屬性 1 ,屬性 2 ,…… AREA 偽指令用于定義一個(gè)代碼段或數(shù)據(jù)段。其中,段名若以數(shù)字開(kāi)頭,則該段名需用 “ | ” 括起來(lái),如 |1_test| 。 屬性字段表示該代碼段(或數(shù)據(jù)段)的相關(guān)屬性,多個(gè)屬性用逗號(hào)分隔。常用的屬性如下: — CODE 屬性:用于定義代碼段,默認(rèn)為 READONLY 。 — DATA 屬性:用于定義數(shù)據(jù)段,默認(rèn)為 READWRITE 。 — READONLY 屬性:指定本段為只讀,代碼段默認(rèn)為 READONLY 。 — READWRITE 屬性:指定本段為可讀可寫(xiě),數(shù)據(jù)段的默認(rèn)屬性為 READWRITE 。 — ALIGN 屬性:使用方式為 ALIGN 表達(dá)式。在默認(rèn)時(shí), ELF (可執(zhí)行連接文件)的代碼段和數(shù)據(jù)段是按字對(duì)齊的,表達(dá)式的取值范圍為 0 ~ 31 ,相應(yīng)的對(duì)齊方式為 2 表達(dá)式次方。 — COMMON 屬性:該屬性定義一個(gè)通用的段,不包含任何的用戶代碼和數(shù)據(jù)。各源文件中同名的 COMMON 段共享同一段存儲(chǔ)單元。 一個(gè)匯編語(yǔ)言程序至少要包含一個(gè)段,當(dāng)程序太長(zhǎng)時(shí),也可以將程序分為多個(gè)代碼段和數(shù)據(jù)段。 使用示例: AREA Init , CODE , READONLY 該偽指令定義了一個(gè)代碼段,段名為 Init ,屬性為只讀
2、 ALIGN 語(yǔ)法格式: ALIGN { 表達(dá)式 { ,偏移量 }} ALIGN 偽指令可通過(guò)添加填充字節(jié)的方式,使當(dāng)前位置滿足一定的對(duì)其方式 | 。其中,表達(dá)式的值用于指定對(duì)齊方式,可能的取值為 2 的冪,如 1 、 2 、 4 、 8 、 16 等。若未指定表達(dá)式,則將當(dāng)前位置對(duì)齊到下一個(gè)字的位置。偏移量也為一個(gè)數(shù)字表達(dá)式,若使用該字段,則當(dāng)前位置的對(duì)齊方式為: 2 的表達(dá)式次冪+偏移量。 使用示例: AREA Init , CODE , READONLY , ALIEN = 3 ;指定后面的指令為 8 字節(jié)對(duì)齊。 指令序列 END
3、 CODE16、CODE32 & |