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 :

[8051] Aide sur un exercice


Sujet :

Autres architectures Assembleur

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 56
    Points : 30
    Points
    30
    Par défaut [8051] Aide sur un exercice
    Bonsoir tout le monde et un grand merci pour tous ceux qui participent a ce forum et nous aident a resoudre nos problèmes.
    J'ai le programme suivant :
    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
    $include(c8052f020.inc)
    EXTRN CODE(init)
    cseg AT 0
    ;-----------------------------------------------------
     
    cseg AT 0
    LCALL init
    MOV A,05H
    MOV 20H,A
    MOV B,A
    MOV 21H,A
    MOV R0,#01H
    MOV R1,#02H
    MOV A,@R0
    MOV 7,#0FFH
    MOV 22H,#12H
    MOV 23H,#12
    MOV 22H,23H
    Fin: SJMP Fin
    ;--------------------------------------------------------------
    END
    Mon pb est que je ne sait pas comment expliquer le rôle de l'instruction "SJMP Fin" ; puis on me demande que se passe-t-il si on enlève l'instruction "SJMP Fin" .
    Expliquer les codes liés aux instructions "SJMP Fin" et "LCALL init"
    le 2eme pb consiste à écrire un programme permettant de faire clignoter la LED a une frequence de 0.5Hz (on calculera la frequence théorique en comptant le nombre de cycles machine de la boucle d'attente puis en Hz en sachant que la frequence de l'horloge est de 2Mhz)
    PS : l'instruction permettant de faire clignoter la LED est : CPL bit

    Mon but n'est pas de vous faire faire mon travail mais parce que je connais rien sur le langage assembleur sachant que nous avons étudié l'architecture des ordinateurs et que le prof nous a donne un polycopié sur les différentes instructions de ce langage que je n'arrive pas a comprendre .
    Toutes les propositions sont les bienvenues.
    Derniere chose :
    merci de m'indiquer des liens vers des sites traitant sur ce langage et si possible cours + exos corrigés.
    Merci d'avance

  2. #2
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 90
    Points : 72
    Points
    72
    Par défaut
    la commande sjmp permet de faire un saut conditionnel. Pour voir quelle est la condition , il faut se referer à ton manuel. D'ordre general, il fait reference à un bit. C'est a dire que si la condition est respecté, alors le programme ira à l'etiquette, en l'occurence FIN. Donc si tu enleves l'instruction sjmp fin, il est fort probable que ton programme se fini, alors que dans le cas ou elle est presente, ton programme tourne dans une boucle infini. (sachant qu'il faut verifier la condition sur l'instruction SJMP, il se pourrai que ce soit l'inverse.).

    Cordialement,

    Léonard VV.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mars 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Mars 2006
    Messages : 400
    Points : 562
    Points
    562
    Par défaut
    sjmp ne fait pas un saut conditionel.
    sjmp est composé de s (short) et jmp (saut).
    sjmp fait donc un saut court.
    Un saut court est un saut vers un label qui se situe à plus ou moins 128 octets de l'endroit où est situé le sjmp.

    Cette instruction fait un saut vers elle-même. Il s'agit donc d'une boucle infinie avec l'impossiblilité d'en sortir.

    La différence entre un call et un jmp est qu' avec un call, l'adresse d'où est appelée la fonction est sauvegarder avant l'excution de la fonction. Le code situé après le call est donc exécuté après que la fonction a terminé son traitement.
    Un jmp ne sauvegarde pas l'adresse de retour. On ne peut donc pas revenir à l'adresse d'où a été appelé le label.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 56
    Points : 30
    Points
    30
    Par défaut
    Merci pour ces reponses.
    et en ce qui est de la LED quelqu'1 peux me repondre?
    pour information : on utilise le CYGNAL C8051F020 COEUR MCS-51 si ca peut vous aider .
    Merci d'avance.

  5. #5
    Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 75
    Points : 62
    Points
    62
    Par défaut
    n'oublie surtout pas SJUMP est un saut inconditionnel ! il saute à l'adresse indiquee.dans ton cas il saut à l'adresse FIN !

Discussions similaires

  1. Besoin d'aide sur un exercice en POO
    Par scriptkiddie dans le forum Débuter
    Réponses: 4
    Dernier message: 24/06/2013, 09h56
  2. aide sur un exercice
    Par waalis dans le forum C
    Réponses: 8
    Dernier message: 23/03/2010, 10h48
  3. demande d'aide sur l'exercice de c++,urgent
    Par expertentout dans le forum C++
    Réponses: 3
    Dernier message: 21/01/2007, 22h05
  4. besoin d aide sur un exercice sur les pointeurs
    Par azumachakib69 dans le forum C
    Réponses: 3
    Dernier message: 28/12/2006, 01h16

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