Interrupts ? Tabbele ?



  • Hi,
    wollte mal wissen was der unterschied zwischen einen interrupt und einer interruptroutine ist...mhh und wenn ich den code habe :

    int 21h

    was ist int ? was ist 21h ?

    thx!



  • Hi.

    "Interrupt" kannst du an sich woertlich uebersetzen: Bei einem Interrupt wird der normale Programmablauf unterbrochen.
    Stattdessen wird dann der code der Interruptbehandlungsroutine (=Interruptroutine) ausgefuehrt.

    Der x86-CPU im PC kennt 256 verschiedene Interrupts.
    Die Adressen der dazugehoerigen Behandlungsroutinen liegen in einer Tabelle im Speicher alle hintereinander => Diese Tabelle hat 256 Eintraege - fuer jeden Interrupt einen.

    Es gibt nun 3 Moeglichkeiten, einen Interrupt auszuloesen.
    Eine davon ist der OpCode "int".
    Dieser unterbricht die Programmausfuehrung und ruft den Code einer Interruptroutine auf. Welche das nun sein soll, wird im Parameter dieses OpCodes angegeben. "int 21h" ruft beispielsweise den Code des Interrupts mit der Nummer 21h auf.
    Die CPU fuehrt dann die Codeausfuehrung also an der Adresse fort, die im 21h. Eintrag oben genannter Interrupttabelle steht.
    Normalerweise wird die Ausfuehrung deines Codes dann einfach hinter diesem int fortgesetzt, sobald der Code der Interruptroutine durchlaufen wurde.



  • Wo liegt denn diese Tabelle, bzw. wie kann man da was reinschreiben?



  • Hi.

    Die Interrupttabelle liegt immer im Speicher, also kannst du mit einem einfachen Speicherzugriff was reinschreiben.

    Im RealMode faengt die Interrupttabelle bei 00000h an.
    Dort liegt dann fuer jeden Interrupt - angefangen bei Int 0 - ein FarPointer, also ist die Tabelle 256*4Byte lang und endet somit bei 00400h.
    In dieser Tabelle kannst du nach Lust und Laune rumwueten - aber nicht wundern, wenn dann der PC irgendwann mal abstuerzt... 😉

    Im ProtecetdMode liegt die Interrupt Descriptor Tabelle irgendwo im Speicher.
    Die Physikalisch Adresse wird durch das IDT-Register bestimmt.
    In den meisten Faellen (zB. unter anderen Betriebssystemen wie Windows o.ae.) kannst du nichts direkt an dieser Tabelle aendern.



  • k thx! 🙂 👍
    Ich glaube, das ist jetzt schon FAQ reif.


Anmelden zum Antworten