Interrupt Vector Table — Änderungen 8660 → 8751

Zeile 48: Zeile 48:
 
; IRQs wieder aktivieren
 
; IRQs wieder aktivieren
 
sti
 
sti
 +
</asm>
 +
 +
=== Ein NASM Macro ===
 +
 +
Jetzt ein macro für NASM:
 +
<asm>
 +
%macro IVT.Handlerwahl 2
 +
push ax
 +
push es
 +
xor ax, ax
 +
mov es, ax
 +
cli
 +
mov WORD [es:%1*4], %2
 +
mov WORD [es:%1*4+2], cs
 +
sti
 +
pop es
 +
pop ex
 +
%endmacro
 +
</asm>
 +
Das erste Argument muss dann die IRQ-Nummer sein, das zweite ein Label von dem Handler. Das kann dann so benutzt werden:
 +
<asm>
 +
;  ... hier ist der Startcode ...
 +
IVT.Handlerwahl 0x00, IRQ_0x00
 +
;  ... hier kommt dann noch irgendein Code ...
 +
 +
IRQ_0x00:  ;Handler für IRQ 0
 +
;  ... hier kann ein Hinewistext geschreiben werden o.ä.  ...
 +
iret
 
</asm>
 
</asm>