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

x86 16-bits Assembleur Discussion :

min et max en assembleur


Sujet :

x86 16-bits Assembleur

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2013
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut min et max en assembleur
    Bonjour tout le monde,
    je bloque sur cet exercice. Le but est de créer un programme en assembleur qui puisse determiner le min et le max d'une suite de nombre

    de l'aide svp

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 408
    Points : 23 803
    Points
    23 803
    Par défaut
    Bonjour et bienvenue,

    Merci de passer au moins une fois par les règles du forum Assembleur. Ceci dit, tu as posté ton message dans « x86 16 bits », donc il n'y a pas de raison d'en douter a priori.

    Il n'y a rien de difficile en soi : tu utilises CMP pour comparer deux registres. Tu peux ensuite utiliser à peu près n'importe quoi pour les lire et aller les chercher. Toutefois, il y a des instructions dédiées à ce genre de choses sur Intel, et certains registres sont consacrés à ces usages.

    Dans un premier temps, tu peux déclarer deux entiers en mémoire au sein de ton code, qui te serviront à recevoir les minimums et maximums que tu cherches :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    minimum:    dw      0ffffh
    maximum:    dw      0

    S'il s'agit déjà de nombres entiers sur 16 bits et qu'ils sont consécutifs en mémoire, tu peux faire pointer le couple DS:SI (Data Segment et Source Index) sur le début de cette suite, et utiliser le registre CX pour spécifier le nombre de valeurs à lire. Chaque fois que tu appeleras LODSW, tu chargeras automatiquement la valeur pointée dans AX et feras passer DS:SI à la suivante.

    Dès lors, tu peux comparer AX à une valeur en mémoire en faisant par exemple « CMP AX,minimum ». Cette instruction comparera la valeur contenue dans AX à celle se trouvant à l'adresse indiquée par « minimum ». Tu fais ensuite un saut avec JA (Jump Above) ou JB (Jump Below) selon ce que tu cherches à vérifier. En l'occurrence, tu peux utiliser JA pour sauter l'instruction suivante si AX est plus grand que « minimum », laquelle instruction serait tout simplement « MOV minimum,AX » pour mettre à jour le nouveau minimum le cas échéant.

    Tu fais ensuite exactement la même chose avec le maximum.

Discussions similaires

  1. Réponses: 12
    Dernier message: 27/07/2006, 18h56
  2. min et Max dans un requete
    Par peppena dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/06/2006, 10h11
  3. Fonction MIN et MAX résultat improbable
    Par UNi[FR] dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 24/04/2006, 12h38
  4. taille min et max d'un div
    Par grinder59 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/02/2006, 18h46
  5. min et max
    Par sorinexp dans le forum Access
    Réponses: 6
    Dernier message: 28/11/2005, 20h37

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