Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
Ok, so this is probably a very basic problem but I'm having trouble with the idt & isrs.
The problem is that whenever a hardware interrupt fires, say a "Divide by zero error" happens the interrupt get's called but it continually repeat's itself. But if a software interrupt fires like "int 0" then the interrupt is called and returns normally.
Exceptions are going to repeat unless you fixed the problem caused by the code that caused the exception.
Upon return from a Divide by Zero exception, the next instruction that gets executed is going to be the one that divides by zero. This isn't generally recoverable. Similarly, after a Page Fault returns, the next instruction that executes is going to cause a page fault unless you fixed the problem (generally by putting a page wherever didn't have one. that's not the only reason for page faults though).
Generally one doesn't recover from divide by zero errors. The only way to do so would be to figure out the instruction that divided by zero and replace the zero with a different number; then you end up with bad math results for whatever program did the division. Usually programs are killed by the OS when a divide by zero happens (afaik).
If the interrupt is firing without you dividing anywhere, my best guess is that you haven't remapped the PIC. In protected mode, IRQs from devices overlap with exceptions, so you're probably getting Timer IRQs which will likely be interrupt zero until you remap them somewhere else (remapping the IRQs to start at INT 0x20 is common).