CODE16_SEG equ 0x8 DATA16_SEG equ 0x10 CODE32_SEG equ 0x18 DATA32_SEG equ 0x20 [BITS 32] extern crashDump extern intGeneralHandlerTail SECTION .text _intGeneralHandlerHead: pusha push gs push fs push ds push es mov ax, DATA32_SEG mov ds, ax mov es, ax mov fs, ax mov gs, ax call intGeneralHandlerTail pop es pop ds pop fs pop gs popa add esp, byte 8 iret %macro GENIRQISR 2 global _irq%1 _irq%1: push 0 push %2 jmp _intGeneralHandlerHead _endirq%1 %endmacro GENIRQISR 0, 0x20 GENIRQISR 1, 0x21 GENIRQISR 2, 0x22 GENIRQISR 3, 0x23 GENIRQISR 4, 0x24 GENIRQISR 5, 0x25 GENIRQISR 6, 0x26 GENIRQISR 7, 0x27 GENIRQISR 8, 0x28 GENIRQISR 9, 0x29 GENIRQISR a, 0x2a GENIRQISR b, 0x2b GENIRQISR c, 0x2c GENIRQISR d, 0x2d GENIRQISR e, 0x2e GENIRQISR f, 0x2f crashHandler: pusha mov ax, DATA32_SEG mov ds, ax mov es, ax call crashDump popa add esp,byte 8 ;error code and vector number iret global handler00 handler00 push byte 0 push byte 0x00 jmp crashHandler global handler01 handler01 push byte 0 push byte 0x01 jmp crashHandler global handler02 handler02 push byte 0 push byte 0x02 jmp crashHandler global handler03 handler03 push byte 0 push byte 0x03 jmp crashHandler global handler04 handler04 push byte 0 push byte 0x04 jmp crashHandler global handler05 handler05 push byte 0 push byte 0x05 jmp crashHandler global handler06 handler06 push byte 0 push byte 0x06 jmp crashHandler global handler07 handler07 push byte 0 push byte 0x07 jmp crashHandler global handler08 handler08 push byte 0x08 jmp crashHandler global handler09 handler09 push byte 0 push byte 0x09 jmp crashHandler global handler0A handler0A push byte 0x0a jmp crashHandler global handler0B handler0B push byte 0x0b jmp crashHandler global handler0C handler0C push byte 0x0c jmp crashHandler global handler0D handler0D push byte 0x0d jmp crashHandler global handler0E handler0E push byte 0x0E jmp crashHandler global handler10 handler10 push byte 0 push byte 0x10 jmp crashHandler global handler11 handler11 push byte 0x11 jmp crashHandler global handler12 handler12 push byte 0 push byte 0x12 jmp crashHandler global handler13 handler13 push byte 0 push byte 0x13 jmp crashHandler