0
  szText MACRO Name, Text:VARARG
    LOCAL lbl
      jmp lbl
        Name db Text,0
      lbl:
    ENDM

有人知道这个宏在做什么吗?

4

1 回答 1

1

看起来它创建了一个以零结尾的字符串(因此,sz)。字符串的符号是您作为 Name 参数传递给宏的任何内容,它包含您作为 Text 参数传递的任何内容,加上终止符 0。

它输出一个跳转指令以跳过字符串,然后是字符串本身的字节。跳转的标签被声明为宏的本地标签,因此它不会污染全局命名空间。

自从我完成 x86 汇编语言以来已经有一段时间了,但我想这会将字符串数据正确地放在代码段中,而不是把它放在数据段中,这似乎有点奇怪。

于 2011-03-13T09:46:42.770 回答