2017-06-18 5 views
0

Je veux vérifier s'il y a un argument dans ma commande macro et s'il n'y a pas d'argument, n'effectue pas mon code de macro. Dans FASM, il ressemble à:Vérifiez si l'argument existe dans la macro

F MACRO arg1 
if ~ arg eq 
mov ax, arg1 
add ax,ax 
add ax, 5 
end if 
ENDM 

Mais l'assemblage de ce code renvoie une erreur:

(19) illegal instruction: if ~ arg eq or wrong parameters.

Comment puis-je réécrire cette macro il fonctionne en EMU8086?

Répondre

1

Je n'ai jamais utilisé Emu8086, mais d'après ce que je peux dire en ligne, il a un assembleur intégré qui est compatible avec la syntaxe MASM et TASM. Dans ce cas, vous utiliserez le IFB (si le symbole est vide) et le IFNB (si le symbole est et non vide) les directives conditionnelles.

Par conséquent, votre F macro serait alors écrit comme suit:

F MACRO arg1 
IFNB <arg1>   ; if arg1 is not blank/empty 
    mov ax, arg1 
    add ax, ax 
    add ax, 5 
ENDIF 
ENDM F 
+0

http://imgur.com/a/XkfJn – Burning

+0

sans if-endif il fonctionne correctement – Burning

+0

Eh bien clairement EMU8086 n'est pas complètement MASM compatible. Il ne peut pas soutenir ce que vous voulez. C'est une capacité de macros assez avancée. –