szText MACRO Name, Text:VARARG
LOCAL lbl
jmp lbl
Name db Text,0
lbl:
ENDM
Anyone knows what this macro's doing?
ゼロで終わる文字列 (したがって、sz) を作成するように見えます。文字列の記号は、Name パラメーターとしてマクロに渡したものであり、Text パラメーターとして渡したものと、末尾の 0 が含まれています。
文字列を越えてジャンプするジャンプ命令を出力し、その後に文字列自体のバイトを出力します。ジャンプのラベルは、マクロに対してローカルであると宣言されているため、グローバル名前空間を汚染しません。
x86 アセンブリ言語を使ってからしばらく経ちましたが、これは文字列データをデータ セグメントに入れるのではなく、コード セグメントに入れるのではないかと思います。これは少し奇妙に思えます。