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

Autres architectures Assembleur Discussion :

[6809] Tri d'un tableau


Sujet :

Autres architectures Assembleur

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 120
    Points : 109
    Points
    109
    Par défaut [6809] Tri d'un tableau
    Bonjour chers amis developpeurs,

    j'ai eu à faire cet exercice que je vous propose mainteneant lors d'un concours, je vous avoue que n'y connais rien en programmation assembleur. Mais c'était un concours, alors je n'avais pas le choix. En attendant que les resultats sortent, je vous le soumets dans l'espoir d'avoir des solutions de programmation en assembleur pour l'architecture 6809.

    Il s'agit d'effectuer un tri dans un tableau pour ordonner celui-ci dans l'ordre décroissant des valeurs numériques.
    Les données sont des nombres non signés, codés en hexadécimal et compris entre 0 et 255.
    Le tableau est en mémoire centrale à partir de l'adresse TAB. L'exploration du tableau se fait par l'examen de deux données successives comme suit :

    • si les deux données sont rangées dans le bon ordre on continue l'exploration ;
    • si les deux données ne sont pas rangées dans le bon ordre, on les permute et on continue l'exploration.

    Lorsqu'on a terminé l'exploration du tableau, on recommence jusqu'à ce que lors d’une exploration complète l'on ait effectué aucune permutation.

    Organigramme proposé :
    Soit T(I) la ième donnée du tableau, on fera l'exploration en faisant varier I.
    Pour savoir quand arrêter le tri, on testera l'indicateur binaire P contenu dans la position mémoire MEM.
    P sera mis à zéro au début de chaque exploration et à "1" lorsqu'il y aura eu permutation de données.
    Après avoir examiné l'organigramme de la page suivante, écrire le programme correspondant.

    Nom : Capture.PNG
Affichages : 4182
Taille : 22,4 Ko

  2. #2
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Quel est la question exactement ?
    Je veux dire c'est une question d'ordre algorithmique ? (le Tri ici) , il existe plein de tuto/doc/cours ect sur les différents tri sur le net , si le probleme se trouve que sur cette partie alors tu peux poster ton probleme sur n'importe quel forum (parce que cette partie du forum n'est pas la plus fréquenter).
    Si le souci vient du 6809 alors faudra me dire ou se trouve exactement le souci ?

    Si il faut écrire l’organigramme que tu présente , c'est pas vraiment compliqué mais je compte pas te le faire
    De plus je pourrait pas vraiment le faire , sachant que par habitude je préfère connaître la memory map de ta machine pour savoir ou on a accès a la RAM.

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 120
    Points : 109
    Points
    109
    Par défaut
    Merci Kannagi pour ta réponse, le problème ici n'est pas d’écrire l’algorithme. Mais d’écrire le code assembleur. Mais en affirmant ceci:
    Si il faut écrire l’organigramme que tu présente , c'est pas vraiment compliqué mais je compte pas te le faire
    Je me sens abandonner d'autant que j'ai clairement dit que je n'ai aucune connaissance en assembleur.
    je préfère connaître la memory map de ta machine pour savoir ou on a accès a la RAM.
    je ne comprends pas le terme "memery map".
    Sans vouloir tomber dans la facilité, donne moi le coup de pousse nécessaire, Kannagi
    Merci.

  4. #4
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Ben l'assembleur et pas compliqué , mais ça dépend de quel bout tu le tiens
    tout les langages de programmation possède le le if/la boucle , les calcul arithmétique et logique , l'appel de fonction ect
    Si ton algo dit en gros :
    comparer égalité entre T et a , ben tu compare T et a tout simplement , en assembleur 6809 ça donnerai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    lda T
    cmp a
    bne +
     
    +:
    en C on ferait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (T == a)
    {
     
    }
    La memory map signifie carte de la mémoire , et en gros je te demande quel est la carte de la mémoire ?
    la mémoire vu du processeur n'est pas forcément uniquement la RAM , mais elle peut inclure la ROM , une SRAM , les I/O ect.

    En concret si je fait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    .define T $0000
    .define a $0001
    lda T
    cmp a
    bne +
     
    +:
    Rien ne me garantie que on a le droit "d'écrire/lire" a l'adresse $0000 et $0001 , la ça dépend de la machine cible.
    Certaine machine possède leur RAM a l'adresse $2000 , d'autre a $8000 ect , bref ça dépend de la machine cible et pas du processeur.

    On gros sur ton exemple pour mettre P a zero on ferait ceci :
    Extrêmement compliqué

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 120
    Points : 109
    Points
    109
    Par défaut
    La memory map signifie carte de la mémoire , et en gros je te demande quel est la carte de la mémoire ?
    Le sujet ne précise rien la dessus, donc je crois que le choix est arbitraire.
    Extrêmement compliqué
    Extrêmement compliqué et trop technique pour nous qui avons l'habitude de programmer sans se soucier du matériel et de comment gérer la mémoire manuellement , ça nous parait chinois.
    Merci quand meme de ton aide, je croix que j'abandonne.
    Ps! Une dernière question, est-ce une architecture encore d'actualité et à quoi peut-elle nous servir en gros?

  6. #6
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Il est certain que de nos jours avec des outils et langage plus moderne , l'assembleur peut paraître un peu ardu.
    Le 6809 n'est plus utilisé mais après en terme d'apprentissage il peut être utile ça reste une porte d’accès pour apprendre l'assembleur plus facilement , c'est un processeur relativement simple.
    Mais si tu ne fait que du 6809 sans ciblé une machine particulière tu n'apprendra pas 'grand chose' , dans le sens ou l'interet principal en assembleur c'est d'apprendre comment fonctionne une machine (dans son ensemble pas seulement le processeur).

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 120
    Points : 109
    Points
    109
    Par défaut
    Mais si tu ne fait que du 6809 sans ciblé une machine particulière tu n'apprendra pas 'grand chose'
    'une machine particuliere', ça peut etre ma machine personnelle? je veux dire mon PC sur lequel je travaille.
    A vrai dire je veux programmer en assembleur, mais je me dis puisqu'il y a une plurialité d'architecture, comment proceder pour arriver sur ma machine a faire un programme qui pourrait fonctionner sur la machine d'un tiers. Je suis un aveugle, me dira-t-on.
    S'il te plait donne moi les livres de debutants pour pas a pas.
    Merci

  8. #8
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Ben si tu fait de l'assembleur 6809 sans viser aucune machine ,ben deja un tu testera difficilement ton code avec et tu apprendra peut être l'assembleur mais je doute que la difficulté de ceux qui apprenne l'assembleur c'est les if/boucles lecture/écriture ect qui les bloques , je pense surtout c'est comment fonctionne une machine.

    Donc oui une machine particulière comme ton PC par exemple , après je ne le conseille pas personnellement , comme je l'ai souvent dit ici :
    Si tu programme en x86 moderne donc (32/64 bits) ben deja c'est loin d’être l'assembleur le plus simple mais si tu lance un .exe (donc sous Windows) et que ce .exe a était fait en asm , ben tu n'apprendrait pas grand chose a part le X86 , tu n'apprendrait nullement comment fonctionne une machine (Aucun OS actuel ne te laissera faire ce que tu veux avec le hard).
    Si ton but est seulement de connaître l'assembleur comme langage oui c'est une bonne solution.

    Sinon tu peux faire ton programme sans OS la ça devient plus intéressant , mais l'architecture d'un PC (loin d'etre simple) + la complexité du X86 rend ceci moins facile pour le débutant.
    Pour ça que je conseille soit tu t'oriente sur des machines moderne certes mais qui en une architecture plus simplifié (AVR ATMEL , Raperry PI ect).
    Soit tu as une machine un peu vielle (Hors PC) des année 80-90 ou tu pourra programmer dessus.

    je n'ai pas aucun livre/tuto/doc ou autre a te fournir , j'ai appris l'assembleur et le fonctionnement des ordis en me mettant dessus , mais a vrai dire j'ai vraiment compris comment cela marche en me mettant sur des machines plus simple d’accès (donc pour ma part j'ai suivi la route de programmer sur des vielles machines des années 80-90).

  9. #9
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 120
    Points : 109
    Points
    109
    Par défaut
    Merci Kannagi pour tes conseils.
    Je vais continuer à creuser espérant être un accroc de l'assembleur un jour.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tri d'un tableau en 2D
    Par sniperseb dans le forum C
    Réponses: 4
    Dernier message: 05/01/2006, 16h33
  2. Réponses: 6
    Dernier message: 16/09/2005, 10h30
  3. tri d'un tableau à 2 dimensions
    Par dede92 dans le forum C
    Réponses: 4
    Dernier message: 19/02/2005, 18h29
  4. [langage] Probleme de tri d'un tableau de tableau
    Par Ludo167 dans le forum Langage
    Réponses: 1
    Dernier message: 25/08/2004, 10h32
  5. [] Tri d'un tableau par ordre alphabétique
    Par cafeine dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 17/09/2002, 08h43

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