當我們想生成一系列的相同或相近**,我們就可以使用重複彙編的方式。
結構:
rept 整數表示式
重複體endm
其中整數表示式的值為迴圈次數。
比如我們需要設定乙個1-10的bd型別:
x=
0rept 10
x = x+
1 db x
endm
或者我們採取重複彙編將a到z填入陣列table中:
char = 『a』
table label byte
rept 26
db char
char = char+
1endm
其中的label標籤是不會分配位址的,就相當於乙個指標。
重複彙編在彙編的過程中
還記得我們的巨集嗎,巨集在彙編的過程中實際上就是乙個**塊替換,再加上幾個特殊符號,並沒有剩下指令數量,只是方便了程式設計。
同樣我們的重複彙編,其實在彙編的過程中是會被展開的,最後**行數也不會減少。
irp 形參,<實參表>
重複體endm
舉例說明:
irp reg,<ax,bx,cx,dx>
push reg
endm
在實際彙編的過程中,等價於這樣:
push ax
push bx
push cx
push dx
還有乙個類似的irpc,不過其引數列表限制為字串。
irpc x,0123456789
db x
endm
這樣就等價於:db 0,1,2,3,4,5,6,7,8,9
相比迴圈,重複彙編在彙編後的**量其實沒有減少。
不過因為不需要迴圈控制,重複彙編的執行速度會快,而且更加靈活。
彙編 巨集應該怎麼寫
還記得c中的define嗎,巨集是乙個和差不多的東西。c中的define可以替換掉一部分東西,然後在實際的實現中將define的別名換成實際內容,最後程式才能跑起來,這裡也一樣,我們可以定義乙個巨集,然後在程式設計中直接呼叫巨集,便於我們的程式設計,主要是減少 的長度。要明白,在最後的計算機實現,其...
彙編中的重複指令
duprep是字串操作指令movs,cmps等的字首,在cx不等於0的情況下,對字串執行重複操作。rep的重複次數也存在cx中,但是其實cx本身不具有讓cx 1的功能,一般是rep後面跟著的指令執行之後自動讓cx 1 還可以擴充套件出 repe 相等時重複 repne 不相等時重複 repz 為零時...
彙編 彙編介紹
what?什麼是組合語言 組合語言由3類指令組成 1.彙編指令 機器碼的助記符,有對應的機器碼 2.偽指令 沒有對應的機器碼,由編譯器執行,計算機並不執行 3.其他符號 如 等,由編譯器識別,沒有對應的機器碼 組合語言並不統一這個取決於硬體 不同的機器有不同的彙編指令集和不同的使用規則 why?為什...