Se supone que el micro guarda el contexto de acumulador/es en cada entrada a interrupción,por lo que si usas return no sacarías de la pila este guardado de contexto.Si lo haces en C,puede valer que uses un goto,tal y como dice Nocturno,que te haga saltar al final de la rutina de interrupción,pero sin añadir sentencias del tipo return,el compilador ya lo hace por tí,por ejemplo:
void interrupcion()
{
...
...
...
goto sal_int;
...
...
...
sal_int: asm("nop"); // Por ejemplo...a lo mejor te deja poner la etiqueta
// sin añadir ninguna instrucción,pruébalo
}