Сам не новичек, но вопрос правда дебилен =) macro num id{lol.#id#.desc equ 'yo'} any = 1 ;либо equ - не принципиально ;num 1 ;получаем lol.1.desc equ 'yo' num any ;увы, не то же самое: lol.any.desc equ 'yo' display lol.1.desc Когда-то возникла потребность использовать значения счетчика в метках, упершись в это, нашел другое решение. Есть ли возможность (пусть по-ягодичному) подставлять числовые значения в названия меток/констант?
Если я правильно понял, то тебе надо переименовывать метки в процессе работы программы, и, следовательно, менять логику её работы? вообще-то метки транслируются в адреса и строками не являются
Разумеется не являются. Я не собираюсь менять логику работы - просто необходимо объявить немерено однотипных констант, по которым будут генерироваться обработчики в нескольких частях программы. Если например следующая конструкция нормально переваривается macro num id1,id2,id3{lol.#id1#id2#id3 equ 'yo'} num 1,2,3 display lol.123 то теоретически задача решима. Вот только как? Не верю, что никто не сталкивался с этим.
экранировать # ? macro num id{lol.\#id\#.desc equ 'yo'} может и сталкивался, но непомню. читай fasm.pdf
Нет разницы. Если б кто ткнул пальцем... Если объявлять any через equ или define, да, криво, но будет lol.#1#.desc equ 'yo'. Беда в том, что equ просто заменяет одно выражение другим, это не численное значение, которые можно перечислить в макросе (равно как и fix). Если подсовывать макросу число все равно будет подставляться его имя вместо значения.
тогда используй match для преобразования имени в значение Код (Text): macro num id { match id_,id \{ lol.\#id_\#.desc equ 'yo' \} } foo equ 1 num foo display lol.1.desc