Logicielsmoto.com

Nous sommes le 24 Sep 2020, 07:57

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 192 messages ]  Aller à la page Précédente  1 ... 4, 5, 6, 7, 8, 9, 10 ... 13  Suivante
Auteur Message
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 17 Jan 2020, 08:29 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1261
Localisation: Brest
Tout mettre à 0, ou tout mettre à une autre valeur c'est juste pareil. Je présume que tu PSHU pleins de registres ayant la valeur 0, donc il suffit de mettre une autre valeur dans les registres.

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 17 Jan 2020, 16:12 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 211
oui en faite, c'est ça,
ça marche.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 18 Jan 2020, 12:39 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 211
Bonjour,

Si je charge des datas dans les BANKs avec loadm, (BANK 14,13,12..)
il va bien falloir que mon programme asm switch de bank au moment voulu, pour aller lire (ou même écrire!) les données ?

c'est correcte ce que je dis là ?


Dernière édition par adnz le 18 Jan 2020, 16:45, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 18 Jan 2020, 16:43 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 211
j'ai check la docs , A7E5/E7E5: Data space RAM banking
je potasse...


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 19 Jan 2020, 15:21 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 211
bonjour,

j'ai une question sur BSR.
je comprend pas la différence avec BRA

si on charge en mémoire 2 programmes : 1 sur ORG $7300 et un autre sur ORG$ 8000, puis on execute le $7300 ...

BSR c'est pour faire un saut vers le 2em programme genre BSR $8000 ??


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 19 Jan 2020, 16:38 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1261
Localisation: Brest
BSR c'est comme JSR, ca saute à une sous-routine (SR). Sous-routine veut dire qu'à la sortie de cette dernière (RTS = return from Subroutine), on revient juste à l'instruction suivante le BSR ou le JSR. Bref, c'est comme le GOSUB (SUB=subroutine encore) du BASIC.

Ensuite, BSR c'est la version utilisant un saut relatif court. JSR utilise une adresse absolue.

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 19 Jan 2020, 16:42 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 211
ok compris, merci.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 19 Jan 2020, 16:52 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 211
j'ai fais ce code mais j'arrive pas à voir ce qui ne va pas dans les CMPA !!
meme en essayant LDA #0 ou LDA #1 ou LDA #2 ou LDA #3 !! a la place de LDA player_SET_num

ça lit toutes les lignes comme si ça traversait tous.

Code:

      LDA #0
      STA player_SET_num

mainloop
...
...

setanimplayerstart              * set player what anim
        LDA  player_SET_num
        CMPA #0
        BEQ  p_set_anim_r
        CMPA #1
        BEQ  p_set_anim_l
        CMPA #2
        BEQ  p_set_anim_t
        CMPA #3
        BEQ  p_set_anim_b
        BRA  setanimplayerend   * default (init player_SET_num before loop !)
p_set_anim_r
player_anim         SET     player_r_anim
        BRA  setanimplayerend
p_set_anim_l
player_anim         SET     player_l_anim
        BRA  setanimplayerend
p_set_anim_t
player_anim         SET     player_t_anim             
        BRA  setanimplayerend
p_set_anim_b
player_anim         SET     player_b_anim            <-- il execute toujours celui là (toujours le dernier) ici player_b_anim
        BRA  setanimplayerend
setanimplayerend

...
...
BRA mainloop

player_SET_num  RMB   1       * what anim set for player  0 left,1 right,2 top,3 bottom


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 19 Jan 2020, 22:28 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1261
Localisation: Brest
Normal!
Code:
p_set_anim_r
player_anim         SET     player_r_anim
        BRA  setanimplayerend
est équivalent à
Code:
p_set_anim_r bra setanimplayerend
Bref ca ne fait rien à part repartir vers setanimplayerend. Vois tu pourquoi? (C'est important de trouver pourquoi.)

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 20 Jan 2020, 00:50 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 211
En faite juste après "setanimplayerend" j'ai ça :
(player_r_anim, player_l_anim, player_t_anim, player_b_anim r:right l:left t:top b:bottom)

Code:
...
...
p_set_anim_t
player_anim  SET    player_t_anim
             JMP  setanimplayerend
p_set_anim_b
player_anim  SET    player_b_anim
             JMP  setanimplayerend

setanimplayerend

player_start
                    LDU  #player_anim                       <--- c'est pour que, ici en fonction des CMPA et des player_anim  SET   xxxxxxxxx qui sont plus haut
                                                                                 ça fait  LDU #player_t_anim   ou   LDU #player_b_anim   etc..
...
...



mais ça fonctionne bien, la variation de "player_anim" en "player_r_anim" ou "player_l_anim"
en faisant :
player_anim SET player_r_anim

j'ai pas de soucis avec ça.

c'est j'arrive pas à faire passer le (en gros):

Code:
if player_set_num == 0 then  player_anim  SET    player_r_anim puis goto setanimplayerend          >--|
if player_set_num == 1 then  player_anim  SET    player_l_anim puis goto setanimplayerend          >--|       ces 4 "if" change le   #player_anim
if player_set_num == 2 then  player_anim  SET    player_t_anim puis goto setanimplayerend          >--|       en fonction de la valeur de player_set_num
if player_set_num == 3 then  player_anim  SET    player_b_anim puis goto setanimplayerend          >--|
                                                                                                      |
      puis                                                                                            |
                                                                                                      |
setanimplayerend
      LDU  #player_anim   <---------------------------------------------------------------------------|



j'ai passé la journée à essayer de comprendre pourquoi ça fonctionne pas !
j'ai testé avec des JMP, en mettant une valeur fixe à player_set_num etc..
des 4 SET c'est toujours celui en dernier qui fonctionne !

par exemple si je fais ceci, ça fonctionne bien.

Code:
player_anim  SET    player_r_anim
                     LDU  #player_anim             <-- ici c'est comme si je faisais LDU   #player_r_anim


ou

Code:
player_anim  SET    player_l_anim
                     LDU  #player_anim            <-- et ici c'est comme si je faisais LDU   #player_l_anim


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 20 Jan 2020, 02:23 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1261
Localisation: Brest
Citation:
mais ça fonctionne bien, la variation de "player_anim" en "player_r_anim" ou "player_l_anim"
en faisant :
player_anim SET player_r_anim

j'ai pas de soucis avec ça.
C'est pourtant là qu'il y a un soucis. Tu confonds la directive d'assemblage SET par une instruction de copie que ferait le processeur.

Ca n'a rien à voir. L'assembleur rest un langage de bas niveau qui n'a pas de variables symboliques.

La directive SET ne fait qu'assigner une nouvelle valeur à une étiquette pendant l'assemblage du code. Cette valeur d'étiquette n'est pas une valeur (de variable) en mémoire du programme que va exécuter le CPU. Cette valeur ou variable ne sera pas propagée avec le BRA ou le JMP qui suit, mais uniquement propagée à la ligne qui suit jusqu'au prochain SET la concernant. Les etiquettes se passent durant la phase d'assemblage et pas pas durant l’exécution du code.

Prends une feuille de papier (ou un fichier excel) et mets les valeurs des différents registres (et uniquement eux) du 6809 à chaque ligne de ton programme. Normalement tu devrais comprendre pourquoi il ne marche pas.

Bref déroule ton programme symboliquement pour comprendre ce qui cloche.

_________________
Good morning, that's a nice Tnetennba


Dernière édition par Samuel Devulder le 20 Jan 2020, 02:30, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 20 Jan 2020, 02:29 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 211
ah! ok effectivement j'ai mal compris comment fonctionne SET.

ok je vais faire ce que tu dis.

merci.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 20 Jan 2020, 02:35 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1261
Localisation: Brest
SET c'est un EQU qu'on peut redéfinir.
Code:
simple EQU machin_compliqué
c'est juste un raccourcis pour écrire "machin_compliqué" quand on écrit "simple". Il ne peut être redéfini. C'est une constante à laquelle on donne un nom symbolique. EQU vient de EQUATES qui veut dire "égal" en anglais. Ainsi "simple EQU expression_compliquée", veut juste dire que du définis "simple" comme étant égal (une fois pour toutes) à l'expression compliquée.

SET c'est pareil, mais tu peux le redéfinir. C'est un égal qu'on peut réaffecter au cours de l'assemblage. La valeur du label associé (simple) aura son contenu qui changera dans les lignes suivant le SET en question.

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 20 Jan 2020, 02:56 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 211
à ce que je comprend, SET permet de redefinir quelque chose mais il est perdu dès que y'a un saut.

donc SET s'utilise mais dans une succession de ligne de code sans coupure ?

j'ai l'impression que mon soucis c'est la compréhension de "au cours de l'assemblage".

merci, je vais étudier ça pour mieux comprendre.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 20 Jan 2020, 04:10 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 211
j'ai peut être trouvé une solution en faisant une MACRO !
j'experimente ça...


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 192 messages ]  Aller à la page Précédente  1 ... 4, 5, 6, 7, 8, 9, 10 ... 13  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher:
Aller à:  
cron
Développé par phpBB® Forum Software © phpBB Group
Traduction par phpBB-fr.com