读书人

罗云彬的13章代码关于宏汇编的部分解决

发布时间: 2012-03-09 16:54:57 作者: rapoo

罗云彬的13章代码关于宏汇编的部分
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 将参数列表的顺序翻转
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
reverseArgsmacroarglist:VARARG
localtxt,count

txtTEXTEQU<>
count= 0
fori,<arglist>
count= count + 1
txtTEXTEQU @CatStr(i,<!,>,<%txt>)
endm
ifcount GT 0
txtSUBSTR txt,1,@SizeStr(%txt)-1
endif
exitmtxt
endm
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 建立一个类似于 invoke 的 Macro
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_invokemacro_Proc,args:VARARG
localcount

count= 0
%fori,< reverseArgs( args ) >
count= count + 1
pushi
endm
calldword ptr _Proc

endm
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

请教一个问题啊,为什么第一个for前面没 % ,而第二个for却加了 % ?我就这一处想不明白,查了好多资料也没查到,还请大家帮我想想,谢谢了!

[解决办法]
%放在行首是展开操作符,他用来展开该行发现的所有文本宏和宏函数。

% for i,< reverseArgs( args ) >

这意味着如果args是一个文本宏,则展开后的值被reverseArgs操作!

读书人网 >汇编语言

热点推荐