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 :

Débutant en Assembleur 8086


Sujet :

Assembleur

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2011
    Messages : 5
    Points : 0
    Points
    0
    Par défaut Débutant en Assembleur 8086
    Bonjour tous le monde, dans l'exercice il est demandé de déterminer la valeur maximale parmi les élement suivants du tableau : 1,4,9,8,6,3

    Je l'ai fait de cette manière, j'aimerais savoir si y'a une autre solution avec une méthode qui m'aidera à minimiser ce ptit programme.

    Et je voulais ajouter un affichage dans une fenêtre, par ex l'affichage sera : la valeur maximale est : (la valeur maximale)
    Le problème je ne sais pas comment ça marche les affichage et j'arrive pas à trouver une doc qui m'aidera

    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
    tab db 1,4,9,8,6,3     
    mov al,tab[0]
    mov bl,tab[1]
    cmp al,bl
    ja etiq1
    mov al,bl
    etiq1:mov bl,tab[2]
    cmp al,bl
    ja etiq2
    mov al,bl
    etiq2: mov bl,tab[3]
    cmp al,bl
    ja etiq3
    mov al,bl      
    etiq3: mov bl,tab[4]
    cmp al,bl
    ja etiq4
    mov al,bl  
         etiq4:mov bl,tab[5]
         cmp al,bl
         ja etiq5
         mov al,bl
         etiq5: hlt

  2. #2
    Membre émérite
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Points : 2 793
    Points
    2 793
    Par défaut
    Bonjour,

    Déjà pour commencer

    Ensuite je doute que ton code assemble (la syntaxe tab[i] ne fonctionne pas en assembleur, à moins que tu utilise un assembleur particulier qui tolère cette syntaxe ou des macros qui te permettent d'écrire ça )
    La syntaxe "normale" (et encore ça dépend des assembleurs ) serait:

    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mov al, byte ptr [tab+1]
    (à noter que le "+x" est un nombre d'octets de décalage, et pas le nombre de "cases" du tableau, même si ici ça revient au même, comme une case du tableau prend 1 octet )

    Ensuite concernant la réduction de code, tu peux t'arranger pour faire une boucle (en incrémentant un registre qui servira de compteur) plûtot que de copier ton code.

    Sinon pour l'affichage, tu peux te renseigner du côté des interruptions BIOS ou DOS (je suppose que tu travailles en mode réel 16 bits vu ton code).
    Toute question technique envoyée en MP ira directement à la poubelle

    Un code ne marchera jamais, il n'a jamais reçu la capacité de se déplacer.
    Inutile donc de dire "ça marche pas", donnez plutôt des informations précises afin de mieux pouvoir vous aider.


    Grand gourou de la -attitude

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2011
    Messages : 5
    Points : 0
    Points
    0
    Par défaut
    Merci pour ta réponse
    Pour l'émulateur j'utilise emu8086 v4.07, ça marche tab[i] comme ça marche aussi byte ptr [tab+1].

    Oui pour réduire j'ai pensé à une boucle puisque c'est répetition mais le problème je ne sais pas comment indiquer la prochaine case du tableau, comment incrementer le tableau pour qu'il choisisse la prochaine case.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 397
    Points : 424
    Points
    424
    Par défaut
    Pour incrémenter une adresse, il y a plusieurs solutions.
    Tu peux faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    mov esi,[tableau]
    mov al,byte [esi] ;premier byte du tableau dans al
    inc esi ;pour passer au byte suivant
    Ou "lodsb", qui fera les deux dernières lignes à la fois.
    (lodsw,lodsd.. pour les word et dword)

    Ensuite il y a cette solution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    mov esi,[tableau]
     
    mov ecx,nbr ;valeur à ajouter à l'adresse de la chaine pour pointer le byte recherché.
    mov al, byte [esi+ecx]
    Ou comme ça pour loader un dword ou autre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mov eax, dword [esi+ecx*4]
    etc..

Discussions similaires

  1. Cherche documents assembleur 8086 - calcul du codop
    Par Gavroche7 dans le forum x86 16-bits
    Réponses: 1
    Dernier message: 22/01/2008, 19h35
  2. Tri en Assembleur 8086
    Par zeine77 dans le forum Assembleur
    Réponses: 2
    Dernier message: 20/05/2007, 14h24
  3. Questions pour débutant en Assembleur
    Par S.H dans le forum Assembleur
    Réponses: 4
    Dernier message: 08/10/2006, 12h27
  4. [Débutant] Pourquoi Assembleur
    Par life is magic dans le forum Assembleur
    Réponses: 2
    Dernier message: 19/07/2006, 18h11
  5. Calcul d'équation y=0.125*x+4 en Assembleur 8086
    Par makohsarah dans le forum Assembleur
    Réponses: 14
    Dernier message: 15/12/2004, 03h05

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