First commit
This commit is contained in:
commit
7d6d50e432
50 changed files with 5737 additions and 0 deletions
117
EXCEPT.ASM
Normal file
117
EXCEPT.ASM
Normal file
|
@ -0,0 +1,117 @@
|
|||
;NXOS
|
||||
;--------
|
||||
;Written by: Alberto Venturini (Alb‚) - 2001
|
||||
;Email address: -albe-@libero.it
|
||||
;
|
||||
;NXOS exception handlers
|
||||
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
|
||||
InstallExceptionHandlers:
|
||||
push ax
|
||||
push es
|
||||
|
||||
xor ax,ax
|
||||
mov es,ax
|
||||
mov ax,offset Int00h
|
||||
mov word ptr es:[0000h],ax
|
||||
mov ax,cs
|
||||
mov word ptr es:[0000h+2],ax
|
||||
|
||||
mov ax,offset Int06h
|
||||
mov word ptr es:[0006h*4],ax
|
||||
mov ax,cs
|
||||
mov word ptr es:[0006h*4+2],ax
|
||||
|
||||
mov ax,offset Int07h
|
||||
mov word ptr es:[0007h*4],ax
|
||||
mov ax,cs
|
||||
mov word ptr es:[0007h*4+2],ax
|
||||
|
||||
pop es
|
||||
pop ax
|
||||
|
||||
ret
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
Int00h:
|
||||
;L'interrupt 00h Š invocato quando si verifica una divisione per 0
|
||||
;(quando il divisore di DIV o IDIV Š 0)
|
||||
;Questa routine termina il processo che ha provocato l'errore.
|
||||
|
||||
cli
|
||||
|
||||
push cs
|
||||
pop ds
|
||||
|
||||
mov si,offset Int00hMsg
|
||||
jmp TerminateProcess
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
Int06h:
|
||||
;L'int 06h si verifica quando c'Š un'istruzione non valida.
|
||||
;Termina il processo che ha provocato l'errore
|
||||
|
||||
cli
|
||||
|
||||
push cs
|
||||
pop ds
|
||||
|
||||
mov si,offset Int06hMsg
|
||||
jmp TerminateProcess
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
Int07h:
|
||||
;L'int 07h viene generato quando c'Š un'istruzione di un coprocessore
|
||||
;che per• non Š presente.
|
||||
;Termina il processo che ha provocato l'errore.
|
||||
|
||||
cli
|
||||
|
||||
push cs
|
||||
pop ds
|
||||
|
||||
mov si,offset Int07hMsg
|
||||
jmp TerminateProcess
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
TerminateProcess:
|
||||
;input SI --> offset del messaggio di errore da visualizzare
|
||||
|
||||
push si
|
||||
|
||||
mov ah,03h
|
||||
int 20h
|
||||
mov ah,04h
|
||||
int 24h
|
||||
|
||||
mov si,offset GeneralErrorMsg
|
||||
mov ah,01h
|
||||
mov bl,7
|
||||
int 24h
|
||||
|
||||
pop si
|
||||
int 24h
|
||||
|
||||
mov si,offset TerminateProcessMsg
|
||||
int 24h
|
||||
|
||||
mov ah,00h
|
||||
int 25h
|
||||
|
||||
mov ah,02h
|
||||
mov bl,0
|
||||
int 20h
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
GeneralErrorMsg db 13,10,'Fatal error:',0
|
||||
Int00hMsg db ' division by zero (int 00h).',13,10,0
|
||||
Int06hMsg db ' invalid opcode (int 06h).',13,10,0
|
||||
Int07hMsg db ' processor extension not avaliable (int 07h).',13,10,0
|
||||
TerminateProcessMsg db 'The process will be terminated.',13,10,0
|
Loading…
Add table
Add a link
Reference in a new issue