Скорость процессора

Проба получения скорости процессора с помощью ASM вставок. Первый исходник получает скорость старых процессоров. Другой исходник показывает скорость новых на данный момент процессоров, CPU должно быть > 686 
Платформа: Windows , Linux создано: в 2005 году.
Автор: D.J.Peters,

 

'CPU Speed
Dim As Ulongint start64,diff64
Dim As Single starttimer,onesecond=1.0045! 

'get timer
starttimer=timer


'CPU Counter holen
Asm rdtsc
Asm mov dword Ptr [start64], eax
Asm mov dword Ptr [start64+4], edx

'wait one second
While (timer-starttimer)<onesecond:Wend


'CPU Counter erneut lesen
Asm rdtsc

'Diffrenz bilden carrybit nicht vergessen
Asm mov ebx, eax
Asm mov eax, edx
Asm Sub ebx, dword Ptr [start64]
Asm sbb eax, dword Ptr [start64+4]
Asm mov dword Ptr [diff64], ebx
Asm mov dword Ptr [diff64+4], eax

'Differenz durch 1 Millionen teilen
Asm mov ecx, 1000000

Asm mov eax, ebx 
Asm cdq
Asm idiv ecx
Asm mov dword Ptr [diff64], eax

Print "CPU Speed "; str$(diff64) ; " MHz."

Sleep

End

' get CPU Speed
Dim As Ulongint start64,diff64
Dim As Single starttimer,onesecond=1.0000!

'Timer merken
starttimer=timer


'get CPU counter
Asm rdtsc
Asm mov dword Ptr [start64], eax
Asm mov dword Ptr [start64+4], edx

'1 Sekunde warten
Asm asm_wait_begin:
While (timer-starttimer)<onesecond:Wend


'CPU Counter erneut lesen
Asm rdtsc

'Diffrenz bilden carrybit nicht vergessen
Asm mov ebx, eax
Asm mov eax, edx
Asm Sub ebx, dword Ptr [start64]
Asm sbb eax, dword Ptr [start64+4]
Asm mov dword Ptr [diff64], ebx
Asm mov dword Ptr [diff64+4], eax

diff64 \= 1000000


Print "CPU Speed "; str$(diff64) ; " MHz."

Sleep

End