Logicielsmoto.com http://www.logicielsmoto.com/phpBB/ |
|
Debut en asm sur TO8 http://www.logicielsmoto.com/phpBB/viewtopic.php?f=3&t=571 |
Page 7 sur 19 |
Auteur: | Samuel Devulder [ 17 Jan 2020, 08:29 ] |
Sujet du message: | Re: Debut en asm sur TO8 |
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. |
Auteur: | adnz [ 17 Jan 2020, 16:12 ] |
Sujet du message: | Re: Debut en asm sur TO8 |
oui en faite, c'est ça, ça marche. |
Auteur: | adnz [ 18 Jan 2020, 12:39 ] |
Sujet du message: | Re: Debut en asm sur TO8 |
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à ? |
Auteur: | adnz [ 18 Jan 2020, 16:43 ] |
Sujet du message: | Re: Debut en asm sur TO8 |
j'ai check la docs , A7E5/E7E5: Data space RAM banking je potasse... |
Auteur: | adnz [ 19 Jan 2020, 15:21 ] |
Sujet du message: | Re: Debut en asm sur TO8 |
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 ?? |
Auteur: | Samuel Devulder [ 19 Jan 2020, 16:38 ] |
Sujet du message: | Re: Debut en asm sur TO8 |
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. |
Auteur: | adnz [ 19 Jan 2020, 16:42 ] |
Sujet du message: | Re: Debut en asm sur TO8 |
ok compris, merci. |
Auteur: | adnz [ 19 Jan 2020, 16:52 ] |
Sujet du message: | Re: Debut en asm sur TO8 |
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 |
Auteur: | Samuel Devulder [ 19 Jan 2020, 22:28 ] |
Sujet du message: | Re: Debut en asm sur TO8 |
Normal! Code: p_set_anim_r est équivalent à player_anim SET player_r_anim BRA setanimplayerend 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.)
|
Auteur: | adnz [ 20 Jan 2020, 00:50 ] |
Sujet du message: | Re: Debut en asm sur TO8 |
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 |
Auteur: | Samuel Devulder [ 20 Jan 2020, 02:23 ] |
Sujet du message: | Re: Debut en asm sur TO8 |
Citation: mais ça fonctionne bien, la variation de "player_anim" en "player_r_anim" ou "player_l_anim" 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. en faisant : player_anim SET player_r_anim j'ai pas de soucis avec ça. 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. |
Auteur: | adnz [ 20 Jan 2020, 02:29 ] |
Sujet du message: | Re: Debut en asm sur TO8 |
ah! ok effectivement j'ai mal compris comment fonctionne SET. ok je vais faire ce que tu dis. merci. |
Auteur: | Samuel Devulder [ 20 Jan 2020, 02:35 ] |
Sujet du message: | Re: Debut en asm sur TO8 |
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. |
Auteur: | adnz [ 20 Jan 2020, 02:56 ] |
Sujet du message: | Re: Debut en asm sur TO8 |
à 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. |
Auteur: | adnz [ 20 Jan 2020, 04:10 ] |
Sujet du message: | Re: Debut en asm sur TO8 |
j'ai peut être trouvé une solution en faisant une MACRO ! j'experimente ça... |
Page 7 sur 19 | Heures au format UTC + 1 heure |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |