組合語言中macro的用法

2021-10-10 14:35:03 字數 686 閱讀 2950

如果有一段程式需要多次使用,為使程式不重複書寫這段程式,可用巨集定義把所需要重複出現的程式塊定義成巨集指令,此後在巨集指令出現的地方,巨集匯程式設計序總是自動地把它們替換成相應的**段。

*

*巨集指令格式*

*[ 巨集指令名 ] macro [形式引數,...

....

..] **段

endm

在巨集定義中,使用了「形式引數「,它們引用巨集指令時被給出的一些名字或數值(實在引數)所替換。使用形式引數給巨集指令帶來了很大的
靈活性。

(2)巨集呼叫格式

[ 巨集指令名 ] [實在引數, …]

比如:

delay macro

mov r2,#200

djnz r2,$

endm

flash:

setb p1.

0 delay

clr p1.

0 delay

sjmp flash

與子程式不同的是,子程式呼叫要用lcall,子程式返回要用ret,而巨集只是一段程式,子程式中用到時,編譯程式自動將這段程式在該位置展開,所以巨集呼叫其實相對與子程式而言占用的記憶體空間要大。

組合語言中OUT和IN的用法

組合語言中,cpu對外設的操作通過專門的埠讀寫指令來完成 讀埠用in指令,寫埠用out指令。例子如下 in al,21h 表示從21h埠讀取一位元組資料到al in ax,21h 表示從埠位址21h讀取1位元組資料到al,從埠位址22h讀取1位元組到ah mov dx,379h in al,dx 從...

組合語言中的常數

1,數值常數 二進位制數 10110100b 八進位制數146q,5430 十進位制數146d,543 十六進製制數 1a2fh,0ff00h 實數12.48e 2,1a3c0000r 彙編時,則有匯程式設計序將所有的數值常數都轉換成二進位制標示的目標 凡是以字母a f開頭的十六進製制數,唏噓在前面...

組合語言中ASSUME簡介

size large url 組合語言中的assume偽指令 directive assume偽指令通知匯程式設計序為 段 資料段 附加段以及堆疊段選擇什麼名字。沒有assume偽指令時,匯程式設計序假設不分段,並自動把段超越字首用於所有定址儲存器資料的偽指令。assume語句只能用於完整的段定義。...