использование макро и необъявленных переменных - PullRequest
0 голосов
/ 22 марта 2012

Хорошо. Когда я делал макросы, я не мог заставить цикл работать должным образом.

    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 Ответ

2 голосов
/ 22 марта 2012

Если вы не параметризовали метку, вы поместите одинаковую метку в каждый экземпляр, где вы используете макрос. Вы не можете иметь одно и то же название ярлыка в нескольких местах. Ваше решение выглядит разумным, но ваш ассемблер может также поддерживать локальные метки (@@: в некоторых, нумерованные как 1: в других), что также решит вашу проблему и станет более простым в использовании.

...