Autor Thema: Interrupt Vector Table  (Gelesen 5728 mal)

bscreator

  • Gast
Gespeichert
« am: 22. June 2005, 22:47 »
Hi OS-Coder,

hab ne Frage, bezüglich der LowLevel-Ausgabe 3, in dem Roshl darauf eingegangen ist, wie man einen Interrupt mit der Nummer 0x21 in der IVT registriert.

Wenn man einen zweiten Interrupt, z.B. 0x22, registrieren will (verzeiht mir, wenn der schon belegt ist, nur als Beispiel), muss man dann wieder die ganze folgende Prozedur für 0x22 durchführen

push dx
push es
xor ax,ax
mov es,ax
cli
mov word [es:0x22*4], _int0x22
mov [es:0x22*4+2], cs
sti
pop es
pop dx


oder genügt es, wenn ich die Zeilen zwischen CLI und STI so ergänze ?:

mov word [es:0x21*4], _int0x21
mov [es:0x21*4+2], cs
mov word [es:0x22*4], _int0x22
mov [es:0x22*4+2], cs


Thanks, bscreator

Argone

  • Beiträge: 10
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 22. June 2005, 23:05 »
Letzteres reicht völlig aus.

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #2 am: 22. June 2005, 23:53 »
Ausgabe 3 stammt von Mastermesh, mein Name steht nur da, weil die Datenbank erst viel später von mir erstellt wurde.
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

joachim_neu

  • Beiträge: 1 228
    • Profil anzeigen
    • http://www.joachim-neu.de
Gespeichert
« Antwort #3 am: 23. June 2005, 06:57 »
Int 0x22 dürfte nicht belegt sein im RM. Im PM geht der Code so eh nicht.
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de

System: 256 RAM, GeForce 2 MX 400, AMD Athlon XP 1600+, Windows XP, 1x Diskette, 1x DVD-ROM, 1x CD-R(W) Brenner,...

bscreator

  • Gast
Gespeichert
« Antwort #4 am: 23. June 2005, 14:09 »
Ich code sowieso noch im Real-Mode. Vom Protected Mode bin ich noch eine ganze Weile entfernt.

Noch ne Frage: Die Interrupt Vector Table umfasst 256 Einträge, sprich 256 verschiedene Interrupts. Ist die Anzahl der Funktionen pro Interrupt auch begrenzt, oder könnten es (rein theoretisch) auch 200 Funktionen pro Interrupt sein ?

Vielen Dank,
bscreator

Argone

  • Beiträge: 10
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 23. June 2005, 14:17 »
Da ist letztendlich nur der Speicherplatz begrenzt...
Hängt aber auch davon ab, wie du die Funktion, die aufgerufen werden soll, ermittelst. Wenn du die Funktionsnummer in ah erwartest, hast du natürlich maximal 256 verschiedene Funktionen, wenn du das ganze auf ax erweiterst, 65536 usw.

bscreator

  • Gast
Gespeichert
« Antwort #6 am: 24. June 2005, 12:02 »
Stimmt, ist logisch

 

Einloggen