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 :

[ST6] Besoin d'aide code assembleur


Sujet :

Autres architectures Assembleur

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    février 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : février 2006
    Messages : 9
    Points : 1
    Points
    1
    Par défaut [ST6] Besoin d'aide code assembleur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
           ldi PRPR , #page (reinit)   
           call reinit
           ldi a , Maitre_Esclave
           cpi a , 1
           jrz MaiEsc
           jp Esc2
     
    Ici:
           jrs Mai_Esc , key_buf , Maitre
           jp Esclave
    Bonjour,

    je voudrais savoir si je dois nécessairement appeler Ici pour l'executer (comme un jp Ici par exemple) ou si j'execute les instructions de Ici, une fois que j'ai fini d'executer celles de MaiEsc ou de Esc2.

    merci par avance

    PS: il s'agit d'assembleur pour st6

  2. #2
    WO
    WO est déconnecté
    Inactif
    Profil pro
    Inscrit en
    septembre 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2005
    Messages : 88
    Points : 107
    Points
    107
    Par défaut
    jp Esc2... c'est un branchement pas un Call...

    @+WO

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    février 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : février 2006
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Donc j'execute les instructions de Ici seulement quand je me branche dessus?

  4. #4
    WO
    WO est déconnecté
    Inactif
    Profil pro
    Inscrit en
    septembre 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2005
    Messages : 88
    Points : 107
    Points
    107
    Par défaut
    Ton jrz ne banch pas dessus... donc ..?


    @+WO

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    février 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : février 2006
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    merci beaucoup

    j'ai une autre question: j'ai cette portion de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    retesttimer_boucle:
    	ldi wdr, watchdog  				
                    ld a , timer_boucle
    	cpi a , 08h                      		
    	jrc retesttimer_boucle
    	jp boucle_aff
    je ne branche ni n'appelle jamais retesttimer_boucle et je ne retrouve retesttimer_boucle nulle part ailleurs dans mon code. Est ce que je peux en déduire que je n'execute jamais les instructions qui suivent?

  6. #6
    WO
    WO est déconnecté
    Inactif
    Profil pro
    Inscrit en
    septembre 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2005
    Messages : 88
    Points : 107
    Points
    107
    Par défaut
    Tu peux le déduire mais ce ne sera pas exact :


    Code


    retesttimer_boucle:

    Autre code


    A la fin de code, si tu n'as pas d'instruction(s) de saut ou de branchement, pourquoi Autre code ne serait pas executé ?

    @+WO

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    février 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : février 2006
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    En fait juste avant retesttimer_boucle j'ai:

    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
    boucle_aff2:
     
     
    	ldi wdr, watchdog
       ld a , time_bl  
    	cpi a , 08h
    	jrnc time5001  				
    	clr timer_boucle                 		
     
    retesttimer_boucle:
    	ldi wdr, watchdog  
    	ld a , timer_boucle
    	cpi a , 08h    
    	jrc retesttimer_boucle
    	jp boucle_aff
    Donc quand j'arrive à clr timer_boucle , je passe à ldi wdr, watchdog ?

  8. #8
    WO
    WO est déconnecté
    Inactif
    Profil pro
    Inscrit en
    septembre 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2005
    Messages : 88
    Points : 107
    Points
    107
    Par défaut
    Qu'est-ce qui pourrait l'empêcher (à part quelques coups pieds mal placés, bien-sûr) à ton avis ..?

    @+WO

  9. #9
    Nouveau Candidat au Club
    Inscrit en
    février 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : février 2006
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    oui tu as raison. Donc finalement les instructions jp sont comme des goto en C, et permettent de revenir ou d'aller à certains endroits du code.

    merci beaucoup de répondre en tout cas

    @+

  10. #10
    WO
    WO est déconnecté
    Inactif
    Profil pro
    Inscrit en
    septembre 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2005
    Messages : 88
    Points : 107
    Points
    107
    Par défaut
    Tout à fait, comme les bonnes pâtes italiennes

    Seulement méfie-toi de la notion de "retour" -> GoTo n'est qu'un branchement, jamais un "retour". C'est le mécanisme des Call, dans ton exemple, qui induit ce genre de mécanismes...

    @+WO

  11. #11
    Nouveau Candidat au Club
    Inscrit en
    février 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : février 2006
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    grr, il y a plein de choses que je pige pas

    j'ai le code 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
       ldi  a , clim
       cpi a , 1
       jrz pastestCO
     
       ldi PRPR , #page (tes_CO)
       call tes_CO    						
     
    pastestCO:
       ldi PRPR , #page (AFF_i2c_write)
       call AFF_i2c_write
     
    boucle_aff:  
     
       ldi PRPR , #page (me_T_con)
       call me_T_con  								   
       ldi PRPR , #page (cal_T)
       call cal_T
     
       jrs boucle , Air_buf , testp1  
     
       ldi PRPR , #page (decchfr)
       call decchfr
     
       ldi PRPR , #page (decvite)
       call decvite   					
     
    Esc1: 
       jrr Mai_Esc , key_buf , testrx
       ld a , flag_EM 
       andi a , 00000110b
       cpi a , 00h
       jrz testrx
       jp  pastestrx

    qu'est ce que ça me donnerait en C?

  12. #12
    WO
    WO est déconnecté
    Inactif
    Profil pro
    Inscrit en
    septembre 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2005
    Messages : 88
    Points : 107
    Points
    107
    Par défaut
    Mauvaise question

    Ne commence surtout pas à "traduire" : Tu ne ferais que déplacer (et multiplier) ton problème de vision globale. Changer la forme de ton problème ne changera pas le fond de celui-ci.

    Le problème que tu rencontres, est un problème d'organisation et de mémorisation.

    Commence par documenter ce que tu essaies de comprendre. C'est en (re)formulant dans le contexte(ce qui n’est pas transcoder) les choses qu'on les apprend (je veux dire qu'on les intègre).
    Une petite Rem au-dessus de chaque ligne expliquant rapidement ce qu'elle fait: Sens du test (<, >, <>, =), le type de branchement étant soit un « goto » soit un « gosub » pour reprendre tes maux (arf) ).

    Tu sembles juste avoir un problème de mémorisation des termes: Une fois que tu les manipuleras sans réfléchir, l'énergie de ta réflexion se déplacera sur la stratégie (qui est le nerf de la guerre).

    En plus, tu as des noms de labels pleins relativement explicites (ce qui est une bonne chose pour la maintenance). Profites-en pour une fois que ce n'est pas tout en 0x0F7...

    @+WO

  13. #13
    Nouveau Candidat au Club
    Inscrit en
    février 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : février 2006
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    le problème est qu'on me demande de traduire ! et que g du mal à voir ce qui se passe avec les jp .

  14. #14
    Nouveau Candidat au Club
    Inscrit en
    février 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : février 2006
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    en tout cas merci, tu m'as évité une grosse erreur

  15. #15
    WO
    WO est déconnecté
    Inactif
    Profil pro
    Inscrit en
    septembre 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2005
    Messages : 88
    Points : 107
    Points
    107
    Par défaut
    Je hais ce genre d'exercice bidon... "On" voudrait te dégoûter de l'ASM qu'il ne s'y prendrait pas autrement.

    Tu diras à ton gus (de ma part bien-sûr) que le contraire est plus intéressant !!!

    Mais bon, vite fait :

    Les jp = goto nom de label cible

    une fois branché à l'adresse du label, le code s'exécute normalement.

    En fait, ton automate, possède un moteur que tu modifies (en dur ici, mais ça pourrait-être des moteurs sous forme de fichiers, dans la vraie vie on essaie d'être efficace).

    Les Call se branchent à l'adresse du label cible mais "mémorisent" l'adresse de retour : La "ligne" juste en dessous du Call appelant.

    Donc, par exemple:


    call tes_CO -> saute à un label qui n'est pas dans le bout de code fourni et revient ensuite traiter :

    pastestCO

    Mais :

    jrz pastestCO -> si le test de a (qui contient clim ?) est rempli, tu fais un "goto" pastestCO sans retour (tadin !)

    Commence par indiquer cela dans tes Rem et tu verras que ça va devenir plus clair au fur et à mesure (que le facteur assure ou pas d'ailleurs...)

    @+WO

  16. #16
    Nouveau Candidat au Club
    Inscrit en
    février 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : février 2006
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    un grand merci . Pour ce qui est de mon "gus" je vais peut etre eviter de lui dire d'autant qu'il m'a dit de faire autrement si je voulais et c ce que je suis en train de faire avec un pseudo grafcet => pas abordable la traduction en C

    merci encore et bon courage à toi

  17. #17
    WO
    WO est déconnecté
    Inactif
    Profil pro
    Inscrit en
    septembre 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2005
    Messages : 88
    Points : 107
    Points
    107
    Par défaut
    ha ben voilà... change rien !

    @+WO

    PS: Si tu as trop chaud, label DecClim

Discussions similaires

  1. Besoin d'aide code listbox
    Par was35 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 25/06/2015, 14h42
  2. [XL-2010] Besoin d'aide code barre et cellules excel
    Par Kyrolen dans le forum Excel
    Réponses: 1
    Dernier message: 03/03/2014, 19h38
  3. Besoin d'aide code source CRM E-DEAL
    Par Santcho dans le forum CRM
    Réponses: 0
    Dernier message: 05/07/2013, 10h41

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