首页 > 解决方案 > 我如何在 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: error: `%macro' expects a parameter count

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

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

标签: assemblyx86macrosnasm

解决方案


我认为您不能直接为这样的论点命名。相反,您提供您期望的参数数量并引用 with %1%2等。所以您的宏看起来像这样:

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

NASM 手册中有更多详细信息。


推荐阅读