В РМ32 с таким кодом: xor ax,ax mov al, 00110110b ; канал 0, режим 3, вид операции 3, счёт двоичный out 43h, al mov ax, 4h ; значение фиксатора out 40h, al mov al, ah out 40h, al происходит исключение 13 а с таким кодом: xor ax,ax mov al, 00110110b ; канал 0, режим 3, вид операции 3, счёт двоичный out 43h, al mov ax, 100 ; значение фиксатора out 40h, al mov al, ah out 40h, al не происходит. В чём проблема?
Как вариант - при высокой частоте (маленьком делитете) обработчик IRQ0 не успевает завершиться до следующего вызова. Либо что-то с контроллером прерываний - зависит от того, в каком месте обработчика ему подаётся сигнал окончания обработки.
шлюз - ловушка прерывания - при входе в такой обработчик, все прерывания запрещены до команды, которая уставливает флаг прерываний, обычно это iret. Кстати, в досе всё работает и обрабатывается. Может я неправильно обрабатываю прерывание? Вот обработчик: int_irq0: pushad pushfd mov al, 20h ; EOI out 20h, al popfd popad iret