我如何在 NASM x86 中定义宏

How do i define macros in NASM x86

我正在尝试为 x86 项目实现几个宏。 我刚从 MARS mips 程序集搬过来,所以不要判断我的无能。 我想我正在按照本指南中的所有内容进行操作 https://www.tutorialspoint.com/assembly_programming/assembly_macros.htm

  %macro assign a,b
       mov ax, [b]
       mov [a], ax
  %endmacro

这是我得到的错误:
fun.asm:21: 错误:“%macro”需要一个参数计数

我也试过在值(a 和 b)前加上“%”,但它只会产生语法错误

谁能指出我到底做错了什么?

我不认为你可以像那样直接给参数命名。相反,您提供您期望的参数数量并引用 %1%2 等。因此您的宏将如下所示:

%macro assign 2
       mov ax, [%2]
       mov [%1], ax
%endmacro

NASM manual 中有更多详细信息。