Manipulation des Interruptvektors funktioniert nicht

Clund

(aka Cpp-Freak)
Hallo
ich hab folgendes Problem:
mein Syste soll auf COM, bzw. Tastaturinterrupts reagieren.
dazu habe ich den Interruptvektor mit folgendem Code manipuliert (Assembler):

Code:
push es
  xor   ax, ax
  mov  es, ax
  cli
    mov word [es:(4*09h)], TAST_REAKT_PROC
    mov word [es:(4*09h+2)], cs
  sti
pop es

mein Programm (TAST_REAKT_PROC) habe ich so programmiert, dass es beim ausführen (als ersten Befehl) ein '!' ausgibt. Nachdem der Vektor manipuliert wurde, erschien ein '!' und dahinter ein Leerzeichen (meine Funktion gibt das Zeichen per Teletype automatisch wieder aus). Auf weitere Tastatureingaben reagiert mein Programm nicht.

mein TAST_REAKT_PROC:

Code:
TAST_REAKT_PROC:

mov bh, 0
mov ah, 0Eh
mov al, "!"
int 10h

mov ah, 01
int 16h

mov ah, 0E
;mov al, .... Zeichen schon in a
mov bh, 0
int 10h

ret

Ich hoffe jemand kann mir da helfen
Cpp-Freak
 
So,
nach zuhilfenahme eines kompetenten Informatikers hab ich herausefunden, dass man zuerst den PIC initialisieren muss. Ich werde mich damit beschäftigen und mich dann wieder melden
Cpp-Freak
 
kann ich dir erklären. Bist im RM oder PM?
im PM ist das Komplett anderst. da musst du zuerst die IDT setzten und für jeden Int nen neuen Entry machen und davor noch den pic remappen. Wenn du noch im RM bist wird zeit mal in dem PM zu wächseln.
Infos zur vector tabel
Infos zur IDT
tutorial zum pic
Infos zum PIC

Und Falls du noch nicht im PM sein solltest:
Infos zum PM
Wenn du irgend was zum OSdev wissen willst, kannst mich per IM fragen.
Ich helfe dir gerne weiter.
LG
Linux best Friend
 

Neue Beiträge

Zurück