подскажите хотя бы с переменной в эти BSF/BCF
Набираешь в гугле "pic datasheet", (если знаешь какой именно PIC у тебя -- уточни, получишь более релевантный результат) получаешь ссылку на спецификацию конкретного процессора. Открываешь её и ищешь в оглавлении раздел "Instruction Set" или похожий по смыслу, в нём ищешь свою инструкцию. Если это сделать, то ты найдёшь такой текст:
For bit-oriented instructions, ‘b’ represents a bit field designator
which selects the bit affected by the operation, while ‘f’ represents
the address of the file in which the bit is located.
и такую картинку:
из чего ты сможешь сделать вывод, что нельзя этими инструкциями поменять бит по номеру, записанному в переменной, можно только явно указать в инструкции номер бита который надо поменять.
Выйти из положения можно несколькими способами, самый простой на мой взгляд -- иметь регистр в котором установлен единственный бит, соответствующий самому старшему биту, который должен быть установлен в наборе огоньков (а набор непрерывный, если я правильно понял задание). Этот бит можно двигать на 1 влево и вправо инструкциями rlf/rrf и операцией xorwf добавлять/убирать из набора огоньков.