Code:
.include "m8def.inc" 
.def temp = r16 

rjmp reset ; Reset Handler 
;rjmp interrupt0 ; IRQ0 Handler 
;andere Interrupt-Vektoren 
;reti

;----------Interruptprozedur-------------- 
interrupt0: 
   com r17 
   out PORTC, r17 
reti 
;---------------------------------------- 

reset: 
   ldi temp, LOW(RAMEND) ;LOW-Byte der obersten RAM-Adresse 
   out SPL, temp 
   ldi temp, HIGH(RAMEND) ;HIGH-Byte der obersten RAM-Adresse 
   out SPH, temp 

   ldi r16, 0xFF 
   out DDRC, r16 ; Port C output 
   ldi r17, 0x00 
   out PORTC, r17 ; Port C LEDs an 

;-----------externer Interrupt enablen-------------- 
   ldi r16, 1<<int0 
   out GICR, r16 
    
   ldi r16, 1<<ISC01 
   out MCUCR, r16 

   sei         ;global interrupt enable 
   rjmp main ;<----
;---------------------------------------------------- 
main: 
   loop: 
      rjmp loop
Also erstmal ein wenig zu der RJMP-Instruction. Der ganze Befehl verbraucht 2 Byte Speicher. 1Byte für den Befehl, 1 Byte für den Parameter k also die Addresse die angesprungen werden soll. Deswegen solltest du die Interrupt-Vektoren mit einem RJMP-Statement auf ein Label festsetzen, welches unmittelbar unter der Vektoren-Tabelle steht. (Das hat eigentlich nur Geschwindigkeitsrelevante Gründe - der JMP-Befehl nimmt ein Wort als Parameter) Deswegen hab ich die Routine für den externen Interrupt mal direkt unter die Tabelle geschrieben.

Das einzige, was ich sonst noch geändert habe, ist das Einfügen eines RJMP-Befehls auf das Main-Label.

So hier mal eine Erklärung zum Thema Interrupts:
Der Reset-Handler wird immer dann ausgeführt, wenn ein Hardware-Reset am Controller selbst bzw. am Reset-Pin durchgeführt wird. Das gilt quasi als Reset des Controllers, was durch einen Abfall der Spannungsversorgung passiert sein könnte, oder eben durch das gewollte betätigen eines Schalters. Über den Interrupt-Vektor wird die Reset-Routine aufgerufen, der Stack und und der Port initialisiert. Anschließend wir dann via rjmp main, die Main-Routine aufgerufen, dort fängt dein Programmfluss an.

Der Mikrocontroller kann eingentlich nicht kaputt sein. Versuchs mal so wie oben. Es kann daran liegen, das es nicht funktioniert hat, dass direkt nach dem Reset in die interrupt0-Routine weitergeganen wurde, wo dann per reti der saubere Ablauf zerhackt wurde.
;andere Interrupt-Vektoren
Hier müssen noch die anderen Interrupt-Vektoren eingefügt werden, die habe ich vorhin entfernt.

Falls es nicht klappt, dann machs nocheinmal so wie vorher ohne das interrupt0 label.