Interrupt Vector Table — Änderungen 2072 → 2073

Zeile 24: Zeile 24:
 
xor ax, ax
 
xor ax, ax
 
mov es, ax
 
mov es, ax
−
;cli                            ; IRQs deaktivieren: Dies ist nur notwendig, wenn man einen Eintrag für einen IRQ verändert
+
 
−
mov WORD [es:0], __int0x00      ; Offset: Die Adresse unserer Interrupt Service Routine
+
; IRQs deaktivieren: Dies ist nur notwendig, damit nicht während des Anpassens der IVT ein IRQ auftritt, welcher für den Fall, dass
−
mov WORD [es:0+2], cs          ; Segment: Wir geben hier das momentane Codesegment an
+
;  a) wir hier den Interruptvektor des IRQ verändern
−
;sti                            ; IRQs aktivieren
+
;  b) der IRQ-Handler seinerseits den hier veränderten Interruptvektor aufruft
 +
; zu undefiniertem Verhalten führen kann.
 +
cli
 +
 
 +
; Offset: Die Adresse unserer Interrupt Service Routine
 +
mov WORD [es:0], __int0x00
 +
 
 +
; Segment: Wir geben hier das momentane Codesegment an
 +
mov WORD [es:0+2], cs
 +
 
 +
; IRQs wieder aktivieren
 +
sti
 
</asm>
 
</asm>