Du musst außerdem wenn du einen Assembler/Compiler für Windows benutzt im Assemblercode immer Unterstriche vor die Symbole, die aus C sichtbar sind, setzen.
bei mir funktionierts zwar ohne, aber probieren geht über studieren also:
in dem Fall müsstest du im C-code vor jedem intr ein _ setzen:
extern void _intr1();
...
auch beim späteren gebrauch musst du den Strich davor setzen:
idt_set_gate(1,(unsigned)_intr(),...
im asm-code musst du ebenfalls nach dem extern ein _ setzen:
extern _interrupt_handler
und:
...
call _interrupt_handler
...
Wie gesagt, ich brauchs auf win nicht, desshalb kann ich mir nicht so wirklich vorstellen, dass es bei dir klappt.
Du könntest auch gucken, was gcc und nasm mit deinen Symbolen machen. Dafür musst du mit einem Editor die o-Datei öffnen und nachschauen wie die Symbole da heissen.
Aber wir werden ganz bestimmt in Zukunft nicht mehr die ganze Arbeit für dich machen(ein bisschen must du ja auch selber schreiben). Ausserdem hab ich manchmal auch genug probleme mit meinem eigenen OS(momentan diese verdammte Tastatur
), sodass ich wirklich nicht jedem seinen code aufräumen kann.
Die anderen sehen das bestimmt genauso.