SoloCodigo
Programación General => ASM (Ensamblador) => Mensaje iniciado por: Agc en Sábado 21 de Diciembre de 2002, 07:07
-
¿Cómo calculo el tiempo en milisegundos con ensamblador?
Mi problema es el siguiente: Debo calcular el tiempo que tarda un proceso en ejecutarse, pero debo calcularlo en milisegundos.
Para ensamblador utilizo el MASM 6.11 y un procesador pentium con windows (98,XP).
-
Te recomiendo que tomes el contador del reloj de la bios antes y despues del proceso,despues podrás decodificarlo con la precision que quieras. mira el tema limite de tiempo en este foro. suerteB)
-
Gracias por tu respuesta.
Ok, ya chequé y encontré lo que me decías, el modo de como hacerlo ya lo tengo comprendido, lo que no se es como le haría, utilizaría variables para almacenar el clock counter, las horas, los minutos, los segundos y los milisegundos, pero si me pudieras dar un ejemplo te lo agradecería más.
-
Si tomas los dos valores sin decodificar y los restas tendras la diferencia de tiempo en tics, despues lo decodificas y tendras el resultado.
Ya te mandaré el "proc" de la decodificacion en MASM 6.0B)
-
Gracias, te lo agradecería mucho.
-
Yo en tu lugar utilizaria haria una ISR (rutina de atencion de interrupcion) y la colgaria de la INT 8 (IRQ 0) la cual interrumpe cada 55 ms. Como probablemente esa base sea muy grande para vos deberias reconfigurar el 8254 (en modo 3) y cargar el contador con una base menor (la base mas pequeña en este counter son 839 us).
Es la mejor solucion que hay, eso solo si estas haciendolo sobre DOS o algun OS en modo real.
-
La interrupcion 21h funcion 6Ch se ejecuta 18.2 veces por segundo lo que implica una posibilidad de actualizacion cada 54 milisegundos aprox. solo tendriamos que sustituir esa int pero eso no nos d un calculo de tiempoB)
-
Se ejecuta 18.2 veces por segundo porque la cuenta cargada en el Timer0 del 8254 (colgado de la IRQ 0 del 8259) esta cargado con 0xFFFF . Si bajas ese numero conseguis bajar la base del timer.