macro foo
{
local loc
xor ecx, ecx
loc:
xchg ebx, ebx
loop loc
@@:
xchg ebx, ebx
loop @b
}
Уникальные метки в Turbo Shell v.3.02
Стоит задача написаать макрос в вышеупомянутой среде (т.к. имею хоть каке-то поверхностные навыки роботы с оной, иначе говоря начал изучение ассемблера именно в этой среде), однако столкнулся с проблемой что прграмма на этапе компиляции выдает соответствующую ошибку о том что такая метка уже используется. Если в программе используется более одного моего горе-макроса =) Метки использую таким образом:
jmp Mark1
Mark1:
Скажите добрые люди каким образом мне объявить уникальные метки в данной среде, а если не тяжело покажите на маленьком примерчике.
Создать данную тему побудили безрезультатные попытки поиска интересующего меня вопроса как на этом форуме, так и в других местах.
Единственное что нашел в гугле, так это вот такой пример:
Цитата:
Уникальное имя метки может формироваться формате, подобном следующему:
&имя.nnnnnn
где - nnnnnn - число, увеличивающееся на 1 для каждой следующей уникальной метки.
Другой возможный способ формирования, например:
имя&SYSNDX
где SYSNDX - предустановленное имя, имеющее числовое значение, начинающееся с 00001 и увеличивающееся на 1 для каждой следующей уникальной метки.
&имя.nnnnnn
где - nnnnnn - число, увеличивающееся на 1 для каждой следующей уникальной метки.
Другой возможный способ формирования, например:
имя&SYSNDX
где SYSNDX - предустановленное имя, имеющее числовое значение, начинающееся с 00001 и увеличивающееся на 1 для каждой следующей уникальной метки.
Понятия не имею для какого ассемблера данное объявление, но я так и не смог откомпилировать этот пример, компилятор указывал на синтактическую ошибку.
Ребята, ну скажите же вы наконец как вы объявляете метки в ваших макросах, так чтобы их (макосы) можно было многократно и корректно использовать в одной пограмме.
Не знаю (точнее уже не помню) как в других ассемблерах, но в fasm'е локальные метки макросов нужно объявлять с помощью директивы local. Кроме того можно использовать псевдометки @@:
Да, это оно спасибо большое !