temporización exacta

dirac
22 de Diciembre del 2008
Hola a todos,
Pretendo hacer unar subrutina en esamblador nasm para programar el pentium y conseguir valores exactos, se me había ocurrido utilizar la frecuencia del micro y hacer instrucciones en un bucle, sabiendo cuánto duran. Pero no sé si debo hacer alguna precaución más a tener encuenta para que no se me desfasen los tiempos, Y por el momento tampoco sé cómo consultar lo que dura cada instrucción, si debería usar una nop ....

Muchas gracias por vuestra ayuda y un saludo

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