彙編中的巨集彙編

2021-05-22 13:19:33 字數 1181 閱讀 4600

從網上找的,關於巨集的操作,記錄一下

(1)定義巨集

巨集名 macro [形參1, 形參2, ……]

巨集的定義體

endm

macro和endm是二個必須成對出現的關鍵字,它們分別表示巨集定義的開始和結束;

macro和endm之間的部分是巨集的定義體,它是由指令、偽指令或引用其它巨集所組成的程式片段,是巨集所包含的具體內容;

「巨集名」是由程式設計師指定的乙個合法的識別符號,它代表該巨集;

巨集名可以與指令助憶符、偽指令名相同。在這種情況下,巨集指令優先,而同名的指令或偽指令都失效;

在endm的前面不要再寫一次巨集名,這與段或子程式定義的結束方式有所不同;

在巨集定義的首部可以列舉若干個形式引數,每個引數之間要用逗號分隔。

(2)取消巨集定義偽指令

偽指令purge的一般格式如下:

purge 巨集名1, 巨集名2, ……

(3)停止巨集擴充套件偽指令

偽指令exitm的一般格式如下:

exitm

(4)其他在巨集裡面注意的

在巨集定義中,如果形式引數與其它字元連線在一起,或形式引數出現在字串之中,那麼,就必須使用連線運算子(&)。

字串整體傳遞運算子是一對尖括號<>,用它括起來的內容將作為乙個字串來進行形式引數的整體替換

在引用巨集時,如果實參中含有特殊字元,而又要該特殊字元當作普通字元來出來,那麼,就必須在該特殊字元前加上字元轉義運算子「!」。

在引用巨集時,使用計算表示式運算子「%」表示把其後面表示式的結果當作實參進行替換,而不是該表示式的整個式子。

(5)重複彙編偽指令

a、偽指令rept的作用是把一組語句重複指定的次數,該重複次數由偽指令後面的數值表示式來確定。其一般使用格式如下:

rept 數值表示式

重複的語句組

endm

b、偽指令irp的作用是用每個引數建立一組語句,其重複次數由偽指令後面參數列中引數的個數來確定。其一般使用格式如下:

irp 形式引數, 《實參1, 實參2, ……, 實參n>

重複的語句組

endm

c、偽指令irpc的作用與irp相似,其實參表是乙個字串,並對字串中的每個字元建立一組語句,所以,其重複次數是由該字串中的字元數來確定。其一般使用格式如下:

irpc 形式引數, 字串

重複的語句組

endm

arm 彙編中的巨集

巨集定義用乙個單個的有意義的名字來來代替乙個 塊,避免重複乙個 塊好多次 macro label testandbranch dest,reg,cc label cmp reg,0 b cc dest mend 在macro偽指令之後是乙個巨集的原型語句,巨集的原型語句定義了你用來呼叫巨集的名字 t...

彙編巨集指令

在學習驅動程式設計的過程中 總會遇到牛人們使用巨集運算子 想想最初知道巨集的時候還是在x86的教材中 好歹也摸爬滾打了也有不少時間 最終卻忘得光光的 現在想起來唏噓不已 今天查了下書 複習了下部分巨集運算子 在巨集呼叫時,使用該運算子能把其後表示式的結果作為實參替換,而非表示式自身 譬如某巨集 x1...

x86彙編中巨集的使用

定義格式 巨集指令名 macro 形式引數 形式引數 巨集體 endm 注意事項 先定義後使用 macro與endm成對使用 使用舉例 write string macro a lea dx,a mov ah,9 int21h endmrclf db 0dh,0ah,write string rcl...