Assembly 检查宏中是否存在参数

Assembly 检查宏中是否存在参数,assembly,x86,emu8086,Assembly,X86,Emu8086,我想检查宏命令中是否有参数,如果没有参数,请不要执行宏代码。在FASM中,它看起来像: F MACRO arg1 if ~ arg eq mov ax, arg1 add ax,ax add ax, 5 end if ENDM 但汇编此代码会返回一个错误: (19) 指令非法:if~arg eq或参数错误 如何重写该宏以使其在emu8086中工作?我从未使用过emu8086,但从我在线了解到,它有一个与MASM和TASM语法兼容的内置汇编程序。在这种情况下,您将使用(如果符号为空)和(

我想检查宏命令中是否有参数,如果没有参数,请不要执行宏代码。在FASM中,它看起来像:

F    MACRO  arg1
if ~ arg eq
mov ax, arg1
add ax,ax
add ax, 5
end if
ENDM
但汇编此代码会返回一个错误:

(19) 指令非法:if~arg eq或参数错误


如何重写该宏以使其在emu8086中工作?

我从未使用过emu8086,但从我在线了解到,它有一个与MASM和TASM语法兼容的内置汇编程序。在这种情况下,您将使用(如果符号为空)和(如果符号不为空)条件指令

因此,您的
F
宏将被编写如下:

F MACRO arg1
IFNB <arg1>         ; if arg1 is not blank/empty
    mov ax, arg1
    add ax, ax
    add ax, 5
ENDIF
ENDM F
F宏arg1
IFNB;如果arg1不是空的/空的
mov-ax,arg1
加斧头,斧头
加上斧头,5
恩迪夫
ENDM F

显然,emu8086与MASM不完全兼容。它可能不支持您想要的内容。这是一个非常高级的宏功能。