| 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> | ||