宏和未声明的变量用法

时间:2012-03-22 18:28:03

标签: assembly macros x86

好的当我制作宏时,如果我这样做,我就无法使循环正常工作。

    move macro x,y
          mov   esi, 0 
          mov   ecx, SIZEOF x       
          a:
          mov   al, x[esi]
          mov   y[esi], al
          inc   esi
          LOOP a
endm

但是当我添加参数并更改标签时,它可以正常工作

move macro x,y,a
          mov   esi, 0 
          mov   ecx, SIZEOF x       
          a:
          mov   al, x[esi]
          mov   y[esi], al
          inc   esi
          LOOP a
endm

当我调用宏时,我会做一些事情 移动a,b,L1 移动c,d,L2

但我不确定它为什么会起作用..

1 个答案:

答案 0 :(得分:2)

如果您没有参数化标签,则会在使用宏的每个实例中放置相同的标签。您不能在多个地方拥有相同的标签名称。您的解决方案看起来很合理,但您的汇编程序也可能支持本地标签(在某些标签@@:中,在其他标签中编号为1:),这也可以解决您的问题,并且更易于使用。< / p>