como generar numeros aleatorios en ensamblador?

Angel Aguilar
03 de Noviembre del 2004
agradeciendo de antemano. Apenas estoy empezando a aprender este lenguaje, pero me acaba de surgir un problemilla sobre como generar numeros aleatorios por ejemplo entre 0 y 70

dar?
03 de Noviembre del 2004
Te podés basar en la API GetTickCount, que devuelve la cantidad de milisegundos que han pasado desde que inició Windows. Como este valor cambia constantemente, podés leerlo y de alguna forma convertirlo en el intervalo que necesitás. Por ejemplo, podés calcular el módulo (o resto) de la división entre el valor de GetTickCount y 70, que obviamente te va a dar un número mayor o igual a 0 y menor a 70.
Para eso utilizá la instrucción 'div'.

Yoel Ocmin
03 de Noviembre del 2004
Si quieres hacerlo en DOS, puedes usar el servicio 2CH de la Int 21h, que te devuelve, la hora del sistema, y tomar como referencia la cantidad de milisegundos que se guardan en el registro DL
la sintaxis es:
Mov ah,2Ch
Int 21h

como respuesta tienes en:
CH->Horas
CL->Minutos
DH->Segundos
DL->Centesimas de Segundo (Max 99)

AHORA Si ha ese numero le quitas el Ultimo Bit, tendrias, tendrias Un Max de 35, y si ha eso lo multiplicas por 2, ya tienes un numero aleatorio , solo que seria par que va de 0 - 70


Edwin
03 de Noviembre del 2004
Yo tambien necesito generar numeros aleatorios pero no deben utilizar el relog, porque ya lo uso para otra parte de mi residente y ocupo un algoritmo que los genere independiente del relog por si alguien sabe y me pueda ayudar seria mi salvacion gracias