An sich würde ich darauf tippen, dass du entweder a) den PIC nicht geremappt hast, dass also IRQ 0 zu einem Interrupt 8 führt (der dann wie eine Exception aussieht), oder b) die IDT initialisiert, geladen und das IF gesetzt hast, bevor du den PIC geremappt hast, sodass sich ein IRQ 0 als Interrupt 8 durchmogelt, bevor der PIC nach deinen Wünschen initialisiert ist. Zumindest mit letzterem hatte ich auch schon Probleme, wenngleich das eher Race Conditions waren (hin und wieder kam an der Stelle zwischen IDT- und PIC-Initialisierung eben zufällig ein IRQ 0 an).