IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Assembleur Discussion :

Chiffre aléatoire


Sujet :

Assembleur

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 8
    Points : 2
    Points
    2
    Par défaut Chiffre aléatoire
    Bonjour,
    Je sollicite votre aide car je ne sais pas comment faire pour générer un chiffre aléatoire en assembleur 68k.
    On m'a parlé de 2 solutions soit en me basant sur le TRAP ou en récupérant la date système en millisecondes (chose que je ne sais pas faire).
    Merci d'avance.

  2. #2
    vic
    vic est déconnecté
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2002
    Messages
    431
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 431
    Points : 498
    Points
    498
    Par défaut
    Par nature un processeur ne peut pas générer de nombre aléatoire, on se résoud donc a créer des séquences pseudoaléatoires dans lesquelles on ajoute un petit élément de vrai hasard.

    Par exemple une suite de la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    I(n) = ( I(n-1) + a ) mod b
    On initialise I(0) avec une donnée vraiment aléatoire, par exemple l'heure d'exécution du programme, le temps qu'a mis l'utilisateur pour appuyer sur telle touche, le temps de lancement des têtes du disque dur etc ...

    Il faut bien sur choisir a et b pour obtenir un "pseudo hasard" correct, par exemple a=256 et b=1234567.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    merci pour ton aide mais comment faire pour récupérer l'heure d'éxécution du programme par exemple et comment on utilise le modulo?

    encore merci d'avance

  4. #4
    vic
    vic est déconnecté
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2002
    Messages
    431
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 431
    Points : 498
    Points
    498
    Par défaut
    Pour avoir l'heure ça dépend du système ... tu as juste parlé de "68k".

  5. #5
    Membre habitué

    Profil pro
    Inscrit en
    Août 2005
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 118
    Points : 142
    Points
    142
    Par défaut
    Bonjour,
    Si tu ne donnes pas de détails sur ta machine, il sera difficile de t'aider plus.

    D'une maniere générale je te conseillerai de te pencher sur les Timers.
    Sinon tu peux toujours utiliser la valeur du CCR, de A7... Mais tu risques d'avoir des choses beaucoup moins aléatoires.

    Par exemple (fait à l'arache et pas testé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ;tu prends la valeur du pointeur de pile
    LEA.L (A7),D0
    ;et le CCR
    MOVE.W CCR, D1
    ;Ce qui est interessant, ce sont les 16 bits du milieu (au début ça change pas vite, à la fin c'est toujours les mêmes valeurs qui reviennent)
    LSR.L #8,D0
    ;Puis tu peux faire une division
    DIVS.W D0,D1
    ;dans les 16 bits de poids fort de D1 tu as le reste de la division ...
    A+
    Joris

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Encore merci.
    Qu'est ce que vous entendez par renseignement sur la machine?
    Si ça peut vous aider j'utilise le compilateur x68k et l'exécutable e68k.

    Sinon quelqu'un m'a donnée une piste utilisant cela

    mais je ne sais pas comment l'utiliser.

    Je vous remercie pour tout
    A++

  7. #7
    Membre habitué

    Profil pro
    Inscrit en
    Août 2005
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 118
    Points : 142
    Points
    142
    Par défaut
    move #8,d0
    trap #15
    Visiblement, il s'agit de ça :
    http://www.ece.concordia.ca/~melhem/Trap15.html
    Tu récupère le TimeStamp dans D1.L

    Ceci dit, celà n'est valable que dans un contexte particulier. En effet la programmation des exceptions ne dépends pas d'une machine mais du code d'initaialisation, de l'OS ...

    Par exemple sur PC le BIOS initialise la table des vecteurs avec certaines fonctions particulières, utiles pour afficher des messages... mais ça n'a rien d'obligatoire si on parle du x86 en géneral et pas du PC en particulier.

    Ça fait un peu pub, mais tu devrais regarder : http://joris-dedieu.developpez.com/c...page=page_5#LV 8)
    J'y donne un exemple pour reprogrammer une instruction TRAP. Le code devrait être compatible avec du M68K.
    A+
    Joris

  8. #8
    Membre habitué

    Profil pro
    Inscrit en
    Août 2005
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 118
    Points : 142
    Points
    142
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Le code devrait être compatible avec du M68K
    Pas forcement en fait, mais tu devrais le comprendre.

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    un grand merci pour votre aide

Discussions similaires

  1. créer une série de chiffre aléatoire dans une plage donnée, sans doublon
    Par ProgElecT dans le forum Vos contributions VB6
    Réponses: 4
    Dernier message: 02/07/2008, 10h02
  2. Générer chiffre aléatoire qu'une fois
    Par AliHome dans le forum Windows Forms
    Réponses: 3
    Dernier message: 13/06/2008, 20h46
  3. Générer un chiffre aléatoire
    Par Invité dans le forum Langage
    Réponses: 18
    Dernier message: 11/10/2007, 18h58
  4. nombre à 8 chiffres aléatoires
    Par forzaxelah dans le forum Delphi
    Réponses: 8
    Dernier message: 09/06/2006, 11h30
  5. Choisir un chiffre aléatoire parmi une liste
    Par djsbens dans le forum Général Java
    Réponses: 2
    Dernier message: 08/03/2006, 18h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo