
dirac
22 de Diciembre del 2008
|
Hola:
Bueno pues al final esta es la solución que en contrado:
@otradecima
rdtsc ;adx:eax=ciclos desde el primer reset
mov ecx,edx ;memorizo parte alta en ecx
mov ebx,eax ;introduzco la parte mas baja en ebx
@decimaseg
rdtsc ;leo el tiempo desde el primer reset de nuevo
sub eax,ebx ;resto primero la parte baja
sbb edx,ecx ;luego la parte alta con acarreo
;LABORATORIO
; cmp eax,293000000;compara con este valor,a 2.93Ghz cuando transcurran
; esos ciclos hubiera pasado 0.1 seg
;CASA
cmp eax,173000000
jb @decimaseg ;mientras la resta no supere esa valor, seguir esperando
-La clave esta en la instrucción rdtsc la cual lee los ciclos de reloj que han pasado desde el primer reset.
-eax, se carga con valores distintos según la velocidad del micro, en mi caso he preparado el programa para que funcione en dos posibles ordenadores (mi casa, o el del laboratorio) cuyas velocidades son 1,73 y 2,93 Ghz correspondientemente.
Un saludo a todos
|