происходит сброс ram "железно" во всех регистрах в 00 или у вас бывали случаи, что в ram висит мусор?
Предположим, что вы работаете с PIC18F14K50 и имеете ввиду его набортный SRAM - тогда заглянув в даташит
http://ww1.microchip.com/downloads/en/D ... 01350F.pdf и дочитав до раздела "3.3 Data Memory Organization" можно заметить, что область эта называется GPR и как написано в разделе
3.3.4 GENERAL PURPOSE REGISTER FILE
PIC18 devices may have banked memory in the GPR
area. This is data RAM, which is available for use by all
instructions. GPRs start at the bottom of Bank 0
(address 000h) and grow upwards towards the bottom of
the SFR area.
GPRs are not initialized by a Power-on
Reset and are unchanged on all other Resets.
Но если вы пишете на С то до момента вызова вашей реализации main() все глобальные инициализированные переменные уже будут иметь заданные в исходном коде значения, а неинициализированные глобальные переменные - будут занулены. Пространство стека, впрочем, остаётся непроинициализированным - т.е. локальные переменные всё-же будут иметь неопределённые значения - но у них судьба такая. Если-же наш сферический С-ишник додумается организовать кучу и будет выкалывать из неё кусочки malloc-ом - в них тоже будет мусор. Ну а для ассемблерщика, как уже ответили, всё проще - 100% мусора исключая область занятую SFR. А правила инициализации SFR-ов нужно глядеть в их [регистров] личных делах.