Domingo 22 de Diciembre de 2024, 09:07
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
ASM (Ensamblador)
(Moderador:
Eternal Idol
) »
Random/rand en ASM?
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Random/rand en ASM? (Leído 7288 veces)
Continue
Nuevo Miembro
Mensajes: 6
Random/rand en ASM?
«
en:
Sábado 19 de Julio de 2008, 09:10 »
0
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
por ser así,mejor la copio de otro sitio y la pego en mi ensamblador
Gracias por calmar esta cuiosidad mia!
Tweet
Enko
Miembro de PLATA
Mensajes: 1562
Nacionalidad:
Re: Random/rand en ASM?
«
Respuesta #1 en:
Lunes 21 de Julio de 2008, 20:46 »
0
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
ret
endp
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
Nuevo Miembro
Mensajes: 6
Re: Random/rand en ASM?
«
Respuesta #2 en:
Martes 22 de Julio de 2008, 06:10 »
0
Gracias por la respuesta,Enko!
esse
Nuevo Miembro
Mensajes: 3
Re: Random/rand en ASM?
«
Respuesta #3 en:
Domingo 11 de Enero de 2009, 02:33 »
0
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
Moderador
Mensajes: 4696
Nacionalidad:
Re: Random/rand en ASM?
«
Respuesta #4 en:
Domingo 11 de Enero de 2009, 12:02 »
0
¿Estas inicializando RandSeed? Publica tu codigo completo sino ...
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
esse
Nuevo Miembro
Mensajes: 3
Re: Random/rand en ASM?
«
Respuesta #5 en:
Domingo 11 de Enero de 2009, 19:05 »
0
Código: Text
Random PROC 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
ret
Random ENDP
;/////////////////////////////////////////////////////////////PRINCIPIO DEL PROGRAMA/////////////////////////////////////////////////////////////////
main PROC
mov ax,@data
mov ds,ax
mov es,ax
inicio:
;semilla random
mov eax, fs:[046ch]
mov RandSeed, eax
call Random(10d)
scanF
main ENDP
END main
Cuando le dejo el ret, se cierra el programa, si le quito el ret se queda congelado :S ya me genera el aleatorio... pero ya q llamo la funcion, no regresa al codigo..
Gracias!
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: Random/rand en ASM?
«
Respuesta #6 en:
Lunes 12 de Enero de 2009, 01:14 »
0
La proxima pone TODO el codigo por favor (con MASM tuve que agregar, dword ptrs para RandSeed y assume fs:nothing, comentar scanF, etc).
Esto esta mal:
Código: Text
call Random(10d)
No esta pasando ningun parametro sino que esta llamando a Random+0xA (10d).
Asi es como se pasa un parametro a esta funcion:
Código: Text
push 10d
call Random
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
esse
Nuevo Miembro
Mensajes: 3
Re: Random/rand en ASM?
«
Respuesta #7 en:
Lunes 12 de Enero de 2009, 01:16 »
0
Ahh ok muchas gracias, es que estoy acostumbrado a medio y alto nivel
y disculpa la proxima pondre todo el codigo pero es q como lo tengo en modulos se me hizo mas facil pegar solo el main lo siento
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
ASM (Ensamblador)
(Moderador:
Eternal Idol
) »
Random/rand en ASM?