Ну, вообще-то, по-моему, с помощью прерываний это затруднительно, но, если проц Pentium Pro (если не ошибаюсь, он) или выше, то можно с помощью rdtsc и системного таймера.
| Код | push 0 pop ds mov eax,dword [8*4] mov word [8*4],IRQ0Handler mov word [8*4+2],cs mov ds,word [8*4+2] mov dword [OldHandler],eax LP: cmp byte [Flag],1 jne LP mov eax,dword [Freq] mov edx,dword [Freq+4] mov ecx,65536 mov ebx,1193180 mul ebx div ecx ;Теперь в EAX значение частоты в герцах ;Здесь какой-то код retn IRQ0Handler: pushad rdtsc push ds push cs pop ds cmp byte [Flag],0ffh jne NotFF mov byte [Flag],0 jmp IntRet NotFF: sub eax,dword [Freq] sbb edx,dword [Freq+4] mov byte [Flag],1 mov ecx,[OldHandler] push 0 pop ds mov dword [8*4],ecx IntRet: mov dword [cs:Freq],eax mov dword [cs:Freq+4],edx pop ds mov al,20h out 20h,al popad iret
|
|