我如何在 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 中有更多详细信息。
我正在尝试为 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 中有更多详细信息。