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] Remplir et trier un tableau


Sujet :

Assembleur

  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Boucle de lecture des éléments d'un tableau
    bonjour
    je debute en assembleur et j'aimerai savoir comment on lit les elements d'un tableau
    je sais le faire en pascal.

    c'est boucle pour de 1 a cardinalité du tableau
    lire les elements

    le probleme ce n'est pas la lecture des elements...c'est plus le passage entre les indices du tableau
    merci de repondre

  2. #2
    sdx
    sdx est déconnecté
    Membre régulier Avatar de sdx
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 106
    Points : 90
    Points
    90
    Par défaut Re: manipulation des tableaux pour le 8086
    Citation Envoyé par james-dean
    c'est boucle pour de 1 a cardinalité du tableau
    lire les elements
    :
    Pourrais-tu être plus précis s'il te plais ...





    sdx

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Il existe différentes manières d'accéder aux éléments d'un tableau en assembleur : basé, indexé, basé-indexé...

    Exemple d'adressage basé : "TAB" est ton tableau contenant les éléments souhaités
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    LEA BX, TAB ; tu charges l'adresse effective du début du tableau dans bx 
    ADD BX,1    ; tu te positionnes à l'indice 1
    MOV AL,[BX] ; tu prends le contenu de la case pointée par l'indice et tu le mets dans le registre AL
    Did2604.

  4. #4
    Candidat au Club
    Inscrit en
    Décembre 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    bonjour

    pour la precision c en pascal pour lire les elements du tableau on fait :

    for i:=1 to cardinalité_tableau do
    read tableau[i];

    comme sa le tableau sera rempli totalement
    Et pour lassembleur??
    jtrouve pas beaucoup de cours sur les tableaux en assembleur sur internet,apparament ils donnent pas une tres grande importance a sa!!

  5. #5
    Invité
    Invité(e)
    Par défaut
    Exemple d'un tableau à 1 dimension comportant 10 cases dont le programme rempli toutes les cases avec la valeur numérique 5 :

    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
     
     
    .MODEL SMALL
    .STACK
    .DATA       
     
       TABLEAU DB 10 DUP (?)   ; DEFINITION TABLEAU A 10 CASES 
    .CODE          
     
     
       ; REMPLISSAGE D'UN TABLEAU
     
       MOV AX,0                ; BOUCLE ALLANT DE 0 JUSQU'A 9
       BOUCLE:
       MOV TABLEAU[AX],5
       INC AX                  ; INCREMENTE AX
       CMP AX,9                ; FIN DE BOUCLE ? 
       JNE BOUCLE              ; SI NON, ON CONTINUE
     
       ; LECTURE DE CE MEME TABLEAU (MEME PRINCIPE QUE POUR LE REMPLISSAGE A PART QU'ON FAIT UNE LECTURE)
       MOV AX,0
       BOUCLE2:
       MOV DX,TABLEAU[AX]      ; DX CONTIENT A PRESENT CE QUI SE TROUVAIT SUR LA CASE EN QUESTION
       INC AX
       CMP AX,9
       JNE BOUCLE2
     
    	MOV AX,4C00H
    	INT 21H
    END
    Did2604.

  6. #6
    Candidat au Club
    Inscrit en
    Décembre 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    et encore une precision,svp!!!
    en pascal pour lire le tableau on a besoin de l'instruction.

    READ tableau[i];

    donc linstruction read fait entré une ou plusieurs touches du clavier,et pour lassembleur c comment?
    c la derniere precision!!je vous remercie beaucoup

  7. #7
    sdx
    sdx est déconnecté
    Membre régulier Avatar de sdx
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 106
    Points : 90
    Points
    90
    Par défaut
    Salut!

    je pense que tuveux lire un texte au clavier et sotcker le résultat dans un tableau ? non ?

    Pour cela, tu as les interruptions : http://1100f.free.fr/fonction.zip

    salut!

    sdx

  8. #8
    Nouveau membre du Club
    Inscrit en
    Décembre 2002
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 35
    Points : 26
    Points
    26
    Par défaut
    SLT 8)
    alors pour l'assembleur ta des fonctions pour presque tout le mieu c'est de voir le fichier fonction dans le cd de "LA BIBLE DU PC"
    ta les focntion les interruptions les entrées et les sorties.
    dans ton cas doc-james le probléme n'est pas de lire les nombres et les mettres dans le tableau c'est plutot de lire les nombres signés "-12" donc les amis ca serait bien d'aller dans ce sens.
    A+

  9. #9
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 84
    Points : 78
    Points
    78
    Par défaut
    Salut,

    Je pense que vous vous etes un peu pris les pieds dans le tapis Intel propose des instructions de gestions de tableaux, pourquoi ne pas les utilisées????
    Ainsi que des instructions de comparaison de chaine.

    Grace a cela tu peux te faire un parser complet de chaine.
    Et elles ont le merite d'etre rapide et d'etre associé a l'instruction REPxx

  10. #10
    Candidat au Club
    Inscrit en
    Décembre 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    salut 8)
    donc une autre histoire...alors et pour les nombres signé comment faire pour les introduire??sachant que notre tableau va contenir des nombre negatifs et d'autres positif...la confusion la!!

  11. #11
    Membre habitué
    Avatar de TangiX
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 139
    Points : 168
    Points
    168
    Par défaut
    Salut

    une autre histoire, un autre topic
    peu importe la structure (ici le tableau), le fait qu'un nombre soit signé ou non signé depend des operateurs que tu utilise pour manipuler des données

    bonne recherche bon codage

    ++
    TangiX

  12. #12
    Candidat au Club
    Inscrit en
    Décembre 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 8
    Points : 4
    Points
    4
    Par défaut [Débutant] Remplir et trier un tableau
    Le problème paraît tout simple mais il est compliqué
    on a un tableau declaré vide d'une cardinalité... disons 5 pour simplifier
    [premierement] je veux le remplir... mais pas dans la partie declaration
    je veux utiliser une instruction comme
    sauf que celle la fait rentrer un seul caractere du clavier alors que mon but c'est de faire rentrer un entier du genre '20' ou '-100'

    [deuxièmement] c'est le tri du tableau

    mais d'abord je dois trouver une solution à la partie 1

  13. #13
    sdx
    sdx est déconnecté
    Membre régulier Avatar de sdx
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 106
    Points : 90
    Points
    90
    Par défaut
    Salut!

    pour doner une valeur à un élément d'un tableau, on utilise aussi MOV.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    MOV [tableau], 10
    MOV [tableau+1], -20
    MOV [tableau+2], 100
    ...
    Si c'est un tableau d'octets.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    MOV [tableau], 10
    MOV [tableau+2], -20
    MOV [tableau+4], 100
    ...
    Si c'est un tableau de mots

    C'est tout simplement un adressage de la mémoire. Tu comptes les octets à partir du début de ton tableau pour acceder à un élément (ou les mots, selon ton tableau). [tableau] est le premier octet de ton tableau, [tableau+1] le deuxième octet ...
    Pour manipuler ton tableau plus facilemnt, tu peux utiliser l'adressage indexé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MOV DI, 2
    MOV [tableau+DI], 35
    ça te permet de te déplacer facilement dans ton tableau.

    faire rentrer un entier du genre '20' ou '-100'
    Avec un octet, tu peux avoir des entiers de 0 à 255 ou de -128 à 127 (ou l'inverse ), avec un mot, tu peux avoir des entiers de 0 à 65535 ou de -32768 à 32767 (là encore, je ne suis pas sur des valeurs)

    Pour le tri du tableau, il existe des algorithmes de tri, ça doit se trouver facilement sur le forum.


    sdx

  14. #14
    Nouveau membre du Club
    Inscrit en
    Décembre 2002
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 35
    Points : 26
    Points
    26
    Par défaut
    Slt
    j'ai une procedure liredecimal qui lit les nombres non signé dans ax
    le principe est de lire une chaine ensuite convertir cette chaine en decimal dans ax
    j'ai fait avec une boucle de 5
    lire decimal
    push ax

    tab db 5 dup(0)
    quand j'affiche avec une boucle de 5
    pop ax
    affichdecimal ca marche

    mais

    j'ai essayé
    mov dx,offset tab
    mov cx,5
    ensuite
    bcl:
    liredecimal
    ensuite mov [dx],byte ptr ax
    ensuite inc dx
    loop bcl
    avec une boucle de 5

    quand j'affiche les resultats sont faux ??? quelqun peut 'aider comme si les valeurs s'ecrasé dans le tab ??
    quelqu'un peut m'aider ?

  15. #15
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 415
    Points
    59 415
    Billets dans le blog
    2
    Par défaut
    Bonjour !

    Pour ce qui est de la lecture des éléments du tableau au clavier et la conversion des chaînes en nombres, tu peux t'inspirer de ce sujet :
    http://www.developpez.net/forums/viewtopic.php?t=322858
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  16. #16
    Nouveau membre du Club
    Inscrit en
    Décembre 2002
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 35
    Points : 26
    Points
    26
    Par défaut
    SLt
    merci j'y vais.....
    A+

Discussions similaires

  1. [XL-2007] [Débutant] Remplir un tableau à partir d’un autre tableau
    Par DerJul dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 05/07/2011, 11h37
  2. [Débutant]Remplir un tableau progressivement
    Par kobalt02 dans le forum LabVIEW
    Réponses: 5
    Dernier message: 03/07/2009, 13h36
  3. Réponses: 8
    Dernier message: 11/03/2007, 18h10
  4. [Débutant] remplir un tableau
    Par cyrill.gremaud dans le forum Collection et Stream
    Réponses: 23
    Dernier message: 20/10/2006, 15h19
  5. [Débutant] Trier un tableau en 2 boucles
    Par SaladinDev dans le forum Assembleur
    Réponses: 9
    Dernier message: 07/05/2005, 22h38

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