[uquote="andrey13",url="/forum/viewtopic.php?p=4142937#p4142937"]Я про pic-as
Я создаю прямой указатель на регистр данных
COUNT EQU 0x10h
Далее использую этот COUNT как указатель в коде в место адреса, стандартный приём, во всех даташитах он как пример используется.
Всё прекрасно работает и в старом мплабе и новом.[/uquote]
Тююю..., милейший!
Да вы оригинал. Причем тут старый/новый MPLAB?
Какие вы называете старым или новым?
Под "старым" MPLAB называют СРЕДУ РАЗРАБОТКИ (MPLAB IDE) версии 8.92 и ниже. А под "новым" - версию X (MPLABX IDE).
Вы же пытаетесь говорить об АССЕМБЛЕРЕ. Ассемблер не имеет отношения к среде разработки.
У Микрочипа для 8-битных МК семейства PIC есть ДВА ассемблера:
mpasm (mpasmx) и
pic-as. Последней версией СРЕДЫ содержащей в своем пакете установки mpasmx была MPLABX IDE ver. 5.35. Версии 5.45 и последняя 5.50 уже не имеют старого ассемблера mpasm (mpasmx) - Микрочип перестал его поддерживать. Вместо него надлежит использовать pic-as, который является ЧАСТЬЮ С-компилятора XC8 и входит в его пакет установки.
Синтаксис этих ассемблеров радикально отличается.
В pic-as переменные резервируются в секции udata, но синтаксис выделения памяти выглядит так:
DS - директива ассемблера выделяющая байты ОЗУ (Reserves storage). В мануале обозначена в таблице директив.
Однако непонятно зачем вам этот геморрой? С какой целью вы перешли на версии среды не поддерживающие mpasmx? У вас применяются какие то суперновые чипы?
Но даже если вы это сделали осмысленно, нужно отдавать себе отчет в том, что в сложившейся ситуации нет никакого смысла объявлять переменные в асм-файле. Проще это сделать в Си, а код можно писать на АСМе. У вас будет смешанный проект.