Что-то вообще не выходит каменный цветок :\ код тривиален. Code (Text): use16 org 7C00h STACK_BASE equ 9000h STACK_PTR equ 9F00h start: cli push cs pop ds mov ax, STACK_BASE mov ss, ax mov sp, STACK_PTR mov word [08h * 4], irq0_handler mov word [08h * 4 + 2], 0 sti mov bh, 2 call delay mov al, 11h call print_byte test_hlt: jmp test_hlt irq0_handler: inc [t_count] iret print_byte: push ax shr al, 4 call print_byte_ pop ax and al, 0Fh print_byte_: add al, 90h daa adc al, 40h daa mov ah, 0Eh int 10h retn delay: mov [t_count], 0 delay_loop: cmp [t_count], bh jne delay_loop ret причём обработчик прерывания вызывается один раз и всё. пробовал в коде вызывать int 8h int 8h всё в порядке, вызывается дополнительно(к тому первому) 2 раза. я вообще в недоумении :\
эээ так нельзя=\ а кто заявку в контроллере сбросит? http://www.wasm.ru/article.php?article=ia32int почитай =\
если очень хочется, то можно, но есть вероятность повторной входимости n0name добавь Code (Text): irq0_handler: inc [t_count] mov al, 0x20 out 0x20, al iret
Ну irq0 то можно, а вот если ирк от девайса, то можно таким образом обработать фиктивное событие от девайса и чем это закончится еще Х его З..
да ничем в его случае (старый обработчик то не вызывается) out 0x20, al тоже ни к чему не приведет (если никакой бит в ISR не был установлен, а то сброситься что-нибудь не то и тогда точно ХЗ )
эмм ну это уже если вызовется int8 внутри другого обработчика IRQ, тогда точно ХЗ Да вообще в случае irq0 от таймера ниче плохого не будет )
Запросто, возьмите другой таймер IRQ8 который сработает один раз и утухнет. Или прерывание от винта придет и не будет должным образом обработано, тогда, при следующей команде он уйдет в BUSY и не вернется...