Voila, je voulais savoir si dans les instructions intel x86 il y en avait une qui donnait un chiffre au hasard ( randon ) car je fait un p'tit jeu en asm mais j'ai besoin du hasard.
merci.![]()
Voila, je voulais savoir si dans les instructions intel x86 il y en avait une qui donnait un chiffre au hasard ( randon ) car je fait un p'tit jeu en asm mais j'ai besoin du hasard.
merci.![]()
Eeeeettttt.... NON !
Le hasard n'est pas géré pas le processeur. Il faut se créer soi-même un pseudo-hasard.
Je te conseille de faire une recherche avec l'utilitaire de ce forum. Le sujet à déjà été abordé en profondeur.
A+
Hello
Juste pour dire que Hdd34 utilise pseudo_hasard, et qu'il a tout à fait raison. En effet, programmer un véritable random est chose très compliquée...voire impossible.
A+
En voici une très courte.
Regarde si elle te satisfait.
Il y en a d'autres...............
Amicalement.........Gges
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 ;=============================== ; Nombre aléatoire de 0 a nbr-1 ;=============================== ;Section Data ;--------------- nrandm dd 0 randsp dd 0 ;Section Code appel de la routine ;-------------------------------------- pushad mov ecx,Nombre maximum a delivrer call randm ; sortie = [nrandm] = nombre aleatoire compris entre ; 0 et le nombre demandé - 1 popad ;Routine ;-------- randm: mov ebx,[randsp] mov eax,214013h imul ebx add eax,2531011h mov [randsp],eax mov edx,0 div ecx mov [nrandm],edx ret
merci pour le code mais...
randsp dd 0
lui la, il faut le modifier non? parceque si il reset a zero... cela va rien faire.
En plus je n'ai pas bien compris comment il fonctionne.
J'ai vu l'autre sujet qui parle de ca mais ne m'apporte pas grand chose en reponse.Deplus il parle surtout du hasard fait avec le timer et comme c'est dit, c'est lent.
Moi je voudrai un vrai random qui soit rapide et qui (en option) n'utilise pas le timer.
Je sais que j'en demmande beaucoup, mais c'est toujours mieu d'avoir un hasard presque vrai !!
Si tu prends la peine d'analyser la routine tu verras que la variable sera initialisée la deuxième fois.![]()
Tu n'as pas fait d'essais ?
Essaie pour voir.....
je peux te dire que ça marche......je l'utilise.
Pour des routines plus complexes regarde sur le Web![]()
Amicalement.....Gges
Il y a plusieurs bout de codes qui n'utilisent pas le timer. Regarde-les !
Si maintenant, c'est l'algorithme en lui-même qu'il te faut, alors regarde sur le Net, tu auras peut-être ça. Mais j'en doûte.
A+
euh...je ne sais pas gerer les nombre a virgule en assembleur, si vous pouviez m'expliquer vite fait svp!!!
Vite fait, c'est un grand mot...
Tu connais l'asm CPU. Et bien pour les nombres à virgules, c'est l'assembleur... FPU.
Je te conseille de te trouver un tutoriel sur le sujet, ça évitera les oublis permanents.
Toutes les instructions FPU commencent par la lettre "f". On utilise une pile spéciale, la pile FPU, contenant, si je ne me trompe, 8 éléments, de st(0) à st(7). Pour effectuer des calculs, on empile les paramètres, et on effectue.
A+
en fait ce que voulait dire funx a propos de l'initialisation (j'arrive peut-etre un peu tard... les vacances), c'est que ca genere toujours la meme suite ! Il faut juste pour cela utiliser le timer a l'initialisation, et dans ce cas, la suite est (quasiment) unique. Dans ce cas alors, vu que l'initialisation ne se fait qu'une fois on va beaucoup plus vite.
Rq: pour accelerer encore, on peut virer la division et utiliser des masques.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager