SoloCodigo

Programación General => ASM (Ensamblador) => Mensaje iniciado por: Agc en Sábado 21 de Diciembre de 2002, 07:07

Título: Re: Calcular el tiempo en milisegundos
Publicado 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).
Título: Re: Calcular el tiempo en milisegundos
Publicado por: deldar en Sábado 21 de Diciembre de 2002, 13:57
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)
Título: Re: Calcular el tiempo en milisegundos
Publicado por: Agc en Sábado 21 de Diciembre de 2002, 21:54
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.
Título: Re: Calcular el tiempo en milisegundos
Publicado por: deldar en Jueves 26 de Diciembre de 2002, 23:53
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)
Título: Re: Calcular el tiempo en milisegundos
Publicado por: Agc en Domingo 29 de Diciembre de 2002, 20:15
Gracias, te lo agradecería mucho.
Título: Re: Calcular el tiempo en milisegundos
Publicado por: Astor en Miércoles 5 de Febrero de 2003, 18:08
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.
Título: Re: Calcular el tiempo en milisegundos
Publicado por: deldar en Viernes 7 de Febrero de 2003, 00:21
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)
Título: Calcular el tiempo en milisegundos
Publicado por: Astor en Sábado 8 de Febrero de 2003, 20:59
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.