Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur l'Assembleur !

Modérateur : mazertoc

pic-as
LP_2
Amateur
Amateur
Messages : 137
Enregistré en : août 2022
Localisation : Haute-Loire

#31 Message par LP_2 » lun. 19 janv. 2026 15:46

En refaisant un nouveau projet même résultat.
Il ne me reste plus qu'à dé-ré-installer deux paquets de Linux , au cas où . . .

:furieux:
J'y arriverai . . .

pic-as
satinas
Expert
Expert
Messages : 1487
Enregistré en : novembre 2015

#32 Message par satinas » lun. 19 janv. 2026 16:07

Bonjour,
Difficile de répondre car on a pas assez d'éléments. MpLabX n'est pas des plus aboutis, donc ce genre de problème, passager ou pas, ne m'étonne pas. Si possible fais un zip du projet, je pourrais essayer sur Windows faute de mieux.

pic-as
LP_2
Amateur
Amateur
Messages : 137
Enregistré en : août 2022
Localisation : Haute-Loire

#33 Message par LP_2 » lun. 19 janv. 2026 16:51

Salut !

Résolu à l'instant en ajoutant abs au psect resetVec. Tout compte fait c'est bien de ne pas être passé avant, tu aurais perdu ton temps.
Mais puisque tu es là, un autre soucis à suivre.
J'y arriverai . . .

pic-as
LP_2
Amateur
Amateur
Messages : 137
Enregistré en : août 2022
Localisation : Haute-Loire

#34 Message par LP_2 » lun. 19 janv. 2026 16:59

Mon but est de faire un programme sans complications pour commencer. A noter que je comprends à moitié la doc informatique en général, et j'avance en tatonnant.

Code : Tout sélectionner

PSECT resetVec,abs,class=CODE,delta=2
  ORG    0
resetVec
:
 goto    
test_0
 psect CODE
,delta=2
test_0
:
 
movlw        0001000

D'abord, globalement quelles sont les erreurs ?
Ensuite la 1ere instruction (adresse 0 est le movlw xxx, le goto passe à la trappe.

A bientôt
J'y arriverai . . .

pic-as
satinas
Expert
Expert
Messages : 1487
Enregistré en : novembre 2015

#35 Message par satinas » lun. 19 janv. 2026 17:43

Ok pour partir de zéro, c'est la meilleure méthode, mais avec le minimum requis. Là il manque au moins la directive end.

Je remarque que le simulateur ne s'arrête pas à tous les coups sur le goto. Par contre il s'arrête bien sur le movlw. En mettant plusieurs nop juste avant ce goto, là on peut s'arrêter dessus, et on voit qu'on passe bien par le goto.

Par défaut pic-as est en décimal pour les valeurs numériques, donc le 0001000 essaie de rentrer dans W, pas facile. L'assembleur aurait dû rouspéter, mais bon c'est pic-as. Il a pris le premier octet de 1000 (0x3E8) et c'est 0xE8 car on est en little endian pour le stockage, donc il met 0xE8 dans W.

Il affiche tout de même cela, et c'est à analyser :
::: warning: (526) psect "CODE" not specified in -P option (first appears in "build/default/production/16F1719_Test_0.o")
::: warning: (528) no start record; entry point defaults to zero
::: warning: (1601) "C:\Users\me\AppData\Local\Temp\xcAsam8.\driver_tmp_3.o" argument : data in object-file (C:\Users\me\AppData\Local\Temp\xcAsam8.\driver_tmp_3.o) from psect "CODE" (0xE8) overwrites data from "resetVec" (0x00) at address 0x0
::: warning: (1601) "C:\Users\me\AppData\Local\Temp\xcAsam8.\driver_tmp_3.o" argument : data in object-file (C:\Users\me\AppData\Local\Temp\xcAsam8.\driver_tmp_3.o) from psect "CODE" (0x30) overwrites data from "resetVec" (0x28) at address 0x1

pic-as
satinas
Expert
Expert
Messages : 1487
Enregistré en : novembre 2015

#36 Message par satinas » lun. 19 janv. 2026 17:58

En fait, il n'assemble pas le goto qui ne sert à rien dans ce programme, et je ne sais pourquoi il se permet de faire cela. Et surtout avec un nop devant le goto, il n'assemble pas le nop et il assemble le goto, ah ah ah

pic-as
satinas
Expert
Expert
Messages : 1487
Enregistré en : novembre 2015

#37 Message par satinas » lun. 19 janv. 2026 18:14

Tu mélanges des sections déclarées abs et non abs, il fait n'importe quoi, et le dit en warning. Il met le movlw à l'adresse 0 et le goto à l'adresse 1 !
Dans l'exemple que j'avais mis avec abs, il n'y avait qu'un seul psect avec plusieurs org.
viewtopic.php?p=25801#p25801
En plus du view program memory, tu peux afficher le "disassembly listing" dans Debugging/Output.

pic-as
satinas
Expert
Expert
Messages : 1487
Enregistré en : novembre 2015

#38 Message par satinas » mar. 20 janv. 2026 06:00

Il manquait "class=CODE" dans le second psect. Je ne vois pas dans la doc quelle type de section il prend par défaut, en tout cas cela se termine mal si on n'en met pas. Il a mis le second psect en 0, et le premier psect de type abs qui lui veut s'implanter aussi en 0 disparaît.
Avec "class=CODE" il met le goto à l'adresse 0 de reset (la ligne org 0 est superflue) ensuite il met le reste en 0x7ff. Et il s'arrête bien sur le goto.

Code : Tout sélectionner

// 16F1719

PSECT resetVec,abs,class=CODE,delta=2
resetVec:
        goto    test_0

PSECT code,class=CODE,delta=2
test_0:
        movlw      0001000
       
        end

Code : Tout sélectionner

Disassembly Listing for 16F1719_Test
Generated From:
C:/Dev/Elec/pic/MPLABX_ASM/16F/16F1719_Test.X/dist/default/debug/16F1719_Test.X.debug.elf
20 janv. 2026 05:43:56

---  C:/Dev/Elec/pic/MPLABX_ASM/16F/16F1719_Test.X/16F1719_Test_0.s  ------------------------------------
                                                  1:     // 16F1719
                                                  2:     
                                                  3:     PSECT resetVec,abs,class=CODE,delta=2
                                                  4:     resetVec:
0000  2FFF     GOTO 0x7FF                         5:             goto    test_0
                                                  6:     
                                                  7:     PSECT code,class=CODE,delta=2
                                                  8:     test_0:
07FF  30E8     MOVLW 0xE8                         9:             movlw      0001000
                                                  10:           
                                                  11:            end

Conclusion, si on ne met pas abs, il met la section à une adresse indéterminée, 0x7FF en l'occurence, d'où le symptome de départ, il faut le spécifier pour le reset dans les options linker par "-Preset_vect=0h" comme indiqué ici viewtopic.php?f=11&t=1129.
En mettant abs cela devient plus simple car il démarre en 0 et la directive org fonctionne comme avant.
Il y a aussi le paramètre space qui indique où se trouve physiquement la section, programme, ram, eeprom, etc
Mettre systématiquement dans les sections de code -> "class=CODE,space=SPACE_CODE,delta=2" (nécessite l'include xc.inc)
Rappel les psect prédéfinis sont à la fin du fichier pic16F1719.inc

Et pour terminer, j'ai donné à ChatGPT le programme de départ brut sans donner d'autres détails, il arrive aux mêmes constatations, très bien expliquées, après 3 secondes de réflexion :-)
A part qu'il pense que par défaut une section est du code, et ce n'a pas l'air d'être le cas, il conseille tout de même de spécifier la classe.

pic-as
LP_2
Amateur
Amateur
Messages : 137
Enregistré en : août 2022
Localisation : Haute-Loire

#39 Message par LP_2 » mar. 20 janv. 2026 10:32

Merci, je regarde tout en détail plus tard.

Une réponse vite fait au #35.
C'est juste un extrait, les config, END, etc sont bien présents.
Pour le movlw en décimal c'était trop gros pour que je le vois. Erreur de débutant, et pourtant . . .
La prochaine fois je placerai le code en entier.

En tout cas ce forum devrait être déclaré d'utilité publique.
J'y arriverai . . .

pic-as
LP_2
Amateur
Amateur
Messages : 137
Enregistré en : août 2022
Localisation : Haute-Loire

#40 Message par LP_2 » mar. 20 janv. 2026 17:46

Là ça va mieux :

Code : Tout sélectionner

                                57:        
                                                  
58:      PSECT adr_rst,abs,class=code,space=0,delta=2
                                                  59
:      ORG    0h
                                                  60
:    
0000  2900     GOTO 0x100                         61:     goto    test_0
                                                  62
:    
                                                  . . .                                                   
                                                  
70:      PSECT init_ch,abs,class=code,space=0,delta=2
                                                  71
:      ORG    0100h
                                                  72
:    ;test_rst:
                                                  
73:    
                                                  
74:    // -début- uniquement pour test ****************************************
                                                  
75:    // premier passage : pmadrx ne contient "rien" et
                                                  
76:    // STATUS-PCON = 00010000 - 000000
                                                  
77:    // deuxième pmadrx = valeurs ci-dessus et
                                                  
78:    // les valeurs de STATUS-PCON incrémentées de 1 à chaque cycle
                                                  
79:    test_0:
0100  3008     MOVLW 0x8

et les instructions sont aux bonnes adresses.
Mais il me dit quand même (avec abs)

Code : Tout sélectionner

::: warning: (526psect "udata_acs" not specified in -P option (first appears in "build/default/debug/_ext/1830702904/chargeur.o"

Je m'absente quelques jours, ce sera fait plus tard.

Bonne soirée
J'y arriverai . . .


Retourner vers « Langage ASM »

Qui est en ligne

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