Habe nur schnell drüber gesehen.
Mein letztes Assembler Programm ist schon ne Weile her, aber hier fehlt definitiv die Initialisierung des Reset-Vektors und des Stackpointers.
Darüber hinaus wird es nicht funktionieren, weil ein Sprungbefehl fehlt, der bei Nichtausführen von "rcall Lampe48" wieder zu Start springt. Sonst wird Lampe14 und 48 jedes Mal ausgeführt.
Die LEDs sollen also nur solange brennen, wie man den Taster drückt?
Lampe14: in temp, PortA liest nicht Port B!
Wenn Du die Pullups aktivierst, müsste die Logik eigentlich umgekehrt sein: Drücken=0, Loslassen =1.
Gruß