Z_h_e писал(а):Ваш пример рабочий? Как компилятор узнает зону ответственности метки?
Это просто показательный пример, чтобы была ясна идеология локальных меток.
На avrasm-е никогда не пользовался локальными метками, за то в fasm-е и fasmarm постоянно. Там вот такие конструкции с локальными метками:
Код: Выделить всё
procname1:
cmp r0,0
bge .label1
blt .label2
.label1:
.label2:
procname2:
cmp r0,0
bge .label1
blt .label2
.label1:
.label2:
преобразуется препроцессором в:
Код: Выделить всё
cmp r0,0
bge procname1.label1
blt procname1.label2
cmp r0,0
bge procname2.label1
blt procname2.label2
Зона корректности локальной метки вида .label1 - после глобальной метки и до следующей глобальной метки.
P.S.: Сейчас очень активно развивается проект fasmg, там на мощнейший препроцессорный скелет можно навесить надстройки практически для любых МК. Для AVR уже есть
Добавлено after 20 minutes 7 seconds:ptr128 писал(а): Дайте возможность компоновщику потрудиться )
Никогда не нравилась возня с объектниками и компоновкой. Делаю так только на x86 и то на относительно больших проектах. Не каждый ассемблер умеет генерить отладочную информацию в формате, поддерживаемом линкером, а отладка на уровне исходного кода очень удобна. Например, идеология fasm не предусматривает компоновку, поэтому он умеет генерить сразу исполняемые файлы многих форматов, хоть и объектники тоже поддерживает.