rdos/kernel/intr.asm

35 lines
396 B
NASM

; Register a interrupt handler
; in: AL interrupt number
; ES:DI far ptr to routine/data
intr_register:
; backup original values
push ax
push es
push di
; pop as ax later
push es
push di
; DI = AL * 4
mov ah, 4
mul ah
mov di, ax
; ES = 0
xor ax, ax
mov es, ax
; store offset
pop ax
stosw
; store segment
pop ax
stosw
pop di
pop es
pop ax
ret