CTEXT MACRO y:VARARG
LOCAL symCONST segment
IFIDNI <y>,<>
sym db 0
ELSE
sym db y,0
ENDIF
CONST ends
EXITM <OFFSET sym>
ENDM
一般来说,在MASM里这个可能够用了,可是。。。
它不支持/r/n换行的东东呢
好吧,我偷来了一个改进版。。。
ctext macro text:VARARG
local tmp,pos,var
local j1,j2,txt,f1
.data
ife @InStr(1,<text>,</>) ;没有用到转义符号,不用任何转换
var db text,0
.code
exitm <offset var>
else
f1 SUBSTR <text>,1,1
txt SUBSTR <text>,2,@SizeStr(<text>)-2
var db 0
pos=1
:next1
j1 SUBSTR txt,pos,1
ifidn j1,</>
pos=pos+1
j2 SUBSTR txt,pos,1
ifidni j2 ,<n> ;/n
db 13,10
elseifidni j2,<txt> ;/txt
db 9
elseifidn j2,</> ;//
db '/'
elseifidn j2,<0> ;/0
db 0
endif
else
tmp textequ f1,j1,f1
db tmp ;;;
endif
pos=pos+1
if pos LE @SizeStr(<%txt>)
goto next1
endif
db 0 ;;;
.code
exitm< offset var+1>
endif
endm
_T equ <ctext>
CTEXT equ <ctext>
SADD equ <ctext>
额,Ctrl+C、Ctrl+V就完了
继续干活
本文介绍了一种在MASM中使用的改进型文本宏定义方法,该方法能够更好地处理包含特殊字符如/n等转义序列的字符串。通过使用局部变量和条件判断,此宏能将这些转义序列转换为对应的ASCII码值,适用于需要在汇编语言中处理复杂文本的情况。
707

被折叠的 条评论
为什么被折叠?



