64位匯編
64 模式中,PROTO 偽指令指定程序的外部過程,示例如下:
ExitProcess PROTO ;指定外部過程,不需要參數.code
main PROCmov ebx, 0FFFFFFFFh mov ecx,0 ;結束程序call ExitProcess ;調用外部過程main ENDP
END
32位匯編
然而在32位模式中,PROTO需要包含過程參數列表
PROTO 必須在 INVOKE 之前首先岀現。換句話說,這些偽指令的標準順序為:
MySub PROTO??????? ;過程原型
.
INVOKE MySub?????? ;過程調用
.
MySub PROC? ? ? ? ? ;過程實現
..
MySub ENDP
還有一種情況也是可能的:過程實現可以出現在程序的前面,先于調用該過程的 INVOKE 語句
MySub PROC ;過程定義
..
MySub ENDP
.
INVOKE MySub ;過程調用
聲明函數的格式是:
函數名 proto [距離] [語言] [參數1]:數據類型,[參數2]:數據類型,......? ?
距離可以是NEAR, FAR, NEAR 16, NEAR 32, FAR 16或FAR 32, Win 32中只有一個平坦的段, 無所謂距離, 所以在定義時是忽略的; 語言類型就是.model那些類型, 如果忽略, 則使用.model定義的默認值
對于編譯器來說, 它只關心參數的數量, 參數的名稱在這里是“無用”的,僅是為了可讀性而設置的,可以省略掉,所以下面兩句消息框函數的定義實際上是一樣的: