Применение команд, описанных в данной главе, предполагает довольно интенсив- ное использование меток. На определенном этапе работы многие программисты типовые фрагменты кода берут из ранее разработанных программ, реализуя свое- образное фрагментарно-модульное программирование. При этом может оказать- ся, что фрагменты кода имеют одинаковые метки. Что делать — пересматривать весь текст? Если не проанализировать код с должным вниманием, потом можно провести много часов за работой с отладчиком или, что еще хуже, программа на- чнет неправильно работать у заказчика. Поэтому полезными могут оказаться не- которые средства работы с метками, описанные в этом разделе. Пакет TASM поддерживает директиву LOCALS, разрешающую использовать в программе локалън ые блоковые метки. Формат директивы: LOCALS[символ_префикса] Операнд символ_префикса определяет двухсимвольное имя, которое впослед- ствии потребуется при автоматическом формировании меток в качестве их пер- вых символов. По умолчанию в качестве символа префикса используется двух- символьная комбинация @@. Благодаря механизму локальных блоковых меток можно в пределах одной про- граммы, но в разных блоках, использовать одинаковые метки. В качестве блока здесь понимаются две конструкции — процедуры и фрагменты программы между двумя обычными метками. Структурно вариант с процедурами выглядит так: model, small .data' LOCALS ;@@ - префикс локальных меток по умолчанию prod proc i⅞ml: prod endp рrос2 proc @@ml: рrос2 endp Итоги 235 Область видимости локальных блоковых меток также можно ограничить обыч- ными метками. Для примера возьмем фрагмент последней программы и поставим в ней бессмысленные с точки зрения логики, но наглядные в контексте нашего обсуждения локальные блоковые метки:Результат трансляции будет положительным, одноименные локальные блоко- вые метки @@ml будут интерпретированы транслятором как разные. Пакет MASM также поддерживает механизм определения локальных блоко- вых меток, позволяя определить три ближние метки с предопределенными имена- ми: @@, @F и @В. Между этими метками существует связь. Определение метки с именем @@ указывает транслятору на необходимость заменить ее уникальной меткой в форме @@хххх, где хххх — уникальное в пределах текущей программы шестнадцатеричное значение. После того как такая метка определена, на нее мож- но ссылаться с помощью неизменяемых меток @F и @В: