Ciao Orima5,
non sono un grande esperto di assembly per Pic, ma l'Hardware stack underflow è un errore che si verifica quando il programma esegue questa istruzione (ritorno da subroutine) senza che sia mai stata precedentemente chiamata alcuna subroutine.
Quando viene eseguita una subroutine (generata da un'istruzione di chiamata CALL oppure da un interrupt) il contenuto del Program counter (PC) viene salvato in una apposita locazione memoria (lo stack). Successivamente, al PC viene assegnato il nuovo indirizzo di memoria programma (cioè l'inizio della subroutine). La subroutine viene quindi eseguita fino in fondo e l'ultima sua istruzione è quella di ritorno (nel tuo caso RETLW).
RETLW non fa altro che ripristinare l'indirizzo prima della chimata nel PC (incrementando l'istruzione) estraendo i valori dallo stack e, ripristinando di fatto, il punto di esecuzione del programma all'istruzione successiva alla chiamata.
Lo stack, che conteneva quindi un dato con l'indirizzo "post subroutine", viene svuotato.
Se utilizzi l'istruzione RETLW senza mai aver chiamato alcuna subroutine, lo stack è già vuoto; di conseguenza il tentativo di estrarre l'indirizzo dallo stack vuoto genera lo stack underflow.
Sei sicuro di aver inserito le righe 10 e 11 all'interno di una subroutine?