Всем привет! После разрешения прерываний в защищенном режиме возникает исключение общей защиты, код 0x13B. Обработчики установлены только для таймера и клавиатуры, остальные прерывания замаскированы. Исключение возникает только на ноуте Asus (может еще на каких, пока нет возможности проверить) на дектопах все нормально. Возникает 1 раз после sti, дальше все работает нормально. Если замаскировать все прерывания в PIC все равно возникает исключение. Выкинул из кода все лишнее, оставил только: Код (Text): ; enable A20 in al, 0x92 or al, 0x2 out 0x92, al ; disable interrupts cli in al, 0x70 or al, 0x80 out 0x70, al ; set interrupt base vector mov al, 0x11 ; init out 0x20, al out 0xA0, al mov al, 0x20 ; privary out 0x21, al mov al, 0x28 ; secondary out 0xA1, al mov al, 0x4 out 0x21, al mov al, 0x2 out 0xA1, al mov al, 0x1 out 0x21, al out 0xA1, al mov al, 0xFF ;11111000b out 0x21, al mov al, 0xFF out 0xA1, al ; load GDTR lgdt [gdtr] ; load IDTR lidt [pm_idtr] ; enable protected mode mov eax, cr0 or al, 1 mov cr0, eax ; jump to protected mode segment jmp PM_CODE_SEG_DESC:pmode_entry ; ***************************** PROTECTED MODE CODE **************************** ; use32 pmode_entry: ; set data and stack segments mov ax, PM_DATA_SEG_DESC mov ds, ax mov es, ax mov fs, ax mov gs, ax mov ss, ax mov esp, STACK ; enable interrupts in al, 0x70 and al, 0x7F out 0x70, al sti
Phantom_84 Поставил. Один раз сразу после разрешения прерываний генерируется IRQ7 http://ru.wikipedia.org/wiki/Intel_8259 получается это как раз этот случай?