我如何在 NASM x86 中定义宏

问题描述

我正在尝试为 x86 项目实现几个宏。 我刚从 MARS mips 大会搬来,所以不要判断我的无能。 我想我正在按照本指南中的说明进行所有操作()

https://www.tutorialspoint.com/assembly_programming/assembly_macros.htm

这是我得到的错误
fun.asm:21: 错误:`%macro' 需要参数计数

我也试过在值(a 和 b)之前用“%”来做这件事,但它只产生了语法错误

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

解决方法

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

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

NASM manual 中有更多详细信息。