%assign 和 %define 的区别

Difference between %assign and %define

NASM 程序集 x86 中的 %assign%define 有什么区别?因为对我来说,它们看起来像是同一件事,好吧,不是真的。 %assign 只是一个 %define,您可以稍后在代码中更改它吗?

它们不是 x86 程序集的一部分,它们特定于 nasm。它们相似但不完全相同:%assign 定义了一个数值常量并且可以重新定义。它不能带参数。%define 定义一个数值或字符串值的宏,它可以带参数,也可以重新定义。

更多信息在 documentation