Programación General > ASM (Ensamblador)

 Random/rand en ASM?

(1/2) > >>

Continue:
Hola!
Quisiera saber dónde se realiza el cálculo de las funciones "random/rand" que están presentes en tantos lenguajes de programación.Yo sé solo lo que he leido y he leido que el random genera números pseudoaleatorios y en realidad son números calculados.Pero también he leido que algúnos de los lenguajes a la hora de compilar un .exe pasan por comandos ASM para pasar a código maquina.Dónde se calcúla el rand de C por ejemplo,¿en una de las funciones en las bibliotecas que incluimos en el principio? o llamando una función en ASM o tal vez en un chip preprogramado en la placa madre?
Y si está presente en ASM esa función,cómo la llamo?Espero no tener que escribir se la uno mismo  :wacko: por ser así,mejor la copio de otro sitio y la pego en mi ensamblador :P
Gracias por calmar esta cuiosidad mia!

Enko:

--- Código: ASM --- proc Random Range: DWORD                ;get pseudo random namber    mov     eax, [Range]                ;[RandSeed] es variable global que se puede cambiar    xor     edx, edx                    ;para modificar el patron del random    imul    edx,[RandSeed],08088405H    ;08088405h una constante, algunas cifras se pueden cambiar, otras no    inc     edx    mov     [RandSeed],edx    mul     edx    mov     eax, edx    retendp  Ese codigo es de FASM. La funcion es una adaptacion del Random de Delphi.
 [RandSeed] es una variable global que se usa como semilla de los numros aleatorios. Una buena manera de sacar la semilla en Windows, es obtener el tiempo con GetTime
http://www.wowwiki.com/API_GetTime
http://foros.solocodigo.com/viewtopic.php?t=8122

Continue:
Gracias por la respuesta,Enko!

esse:
Disculpa este codigo lo utilice tambien en MASM pero no pude hacer q funcione siempre me devuelve cero en eax, le de el rango que le de, como tendria q ser??


Gracias

Eternal Idol:
¿Estas inicializando RandSeed? Publica tu codigo completo sino ...

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa