Есть понятие "макрос" и там некоторые примеры авторазметки/автозаполнения.
НО...
Макросы перед подстановкой в код обрабатываются препроцессором компилятора.
И всего-то выполняют роль подстановок сгенерированного фрагмента кода в нужное место программы, а не непосредственного исполнения - участок кода будет исполняться АЛУ(ядром) МК.
Посему - любое изменение делать должен исключительно МК, опираясь на имеющиеся ресурсы.
Ежли есть изменяемая константа - то только в регистре(ЕЕПРОМ) и/или акумуляторе.
А далее используя имеющуюся систему команд и ресурсы ядра проводим с той переменной необходимые действия ПОКОМАНДНО.
Это ассемблер, а не чего более "высокоуровневого" (к примеру СИ).

Отсюда такой перл
"CODESTART:
variable a = 0x06
LOOP:
CALL a
MOVWF 0x06
a = a + 1
GOTO LOOP"
вообще весьма сомнительный: "а" (в CALL a) есть адрес подпрограммы, котроая выполняет "= a + 1"
а затем без усякого return принудительно посылается на GOTO LOOP...
Это всего-то вместо использования какого-нибудь регистра ОЗУ в текущем банке с командой INCF Rn,f даже без использования W
...
