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 : 142
Enregistré en : août 2022
Localisation : Haute-Loire

#41 Message par LP_2 » mer. 21 janv. 2026 13:36

Un dernier avant de partir, et effectivement il faut lire la doc . . .

PSECT ram_bk3,abs,space=1,class=bank3
ou
PSECT ram_x,abs,space=1,class=common

nom du psect (label ?), on met ce qu'on veut sauf des mots réservés
abs pour adressage absolu, il faut donc indiquer la première adresse du psect immédiatement derrière
space=1 pour indiquer qu'il s'agit de ram
class=bank3/common pour indiquer quelle bank est concerné
J'y arriverai . . .

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

#42 Message par LP_2 » mer. 21 janv. 2026 13:41

Maintenant, si on veut écrire dans la ram dans différentes sections du programme (ou simplement dans différents endroits) suffit-il de ne pas déclarer l'adressage absolu avec le flag abs ?
Exemple :

Code : Tout sélectionner

PSECT ram_bk3,space=1,class=bank3
var0
DS 1
var1
DS 1

=> les octets 0 et 1 de la bank3 sont affectés aux variables 0 et 1
. . .
suite du programme avec un psect pour le code
. . .
plus loin

Code : Tout sélectionner

PSECT ram_bk3,space=1,class=bank3
var2
DS 1
var3
DS 1

Les octets 2 et 3 sont-ils alors affectés (automatiquement) à var2 et var3 ?
Si non, comment faire ?
J'y arriverai . . .

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

#43 Message par LP_2 » mer. 21 janv. 2026 14:01

Code : Tout sélectionner

PSECT fhe,abs,class=code,space=0,delta=2,size=128h
ORG    03f80


Est-ce que cela va réserver la flash haute endurance ?
Ou bien faut-il limiter les autres psect (avec du code) pour qu'ils n'y empiètent pas ?

Là je suis benêt . . .

Bonne soirée.
J'y arriverai . . .

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

#44 Message par LP_2 » mer. 21 janv. 2026 14:47

Pour le dernier point je doute.
On n'y trouvera pas de opcode à ces adresses, le programme qui va y lire/écrire se trouve ailleurs.
On peut considérer que les accès à cette zone mémoire relèvent d'un mécanisme interne au pic considéré.
Donc ne pas faire de psect la concernant . . . ?
J'y arriverai . . .

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

#45 Message par satinas » mer. 21 janv. 2026 14:52

Pour le dernier point je n'ai pas d'avis, ne connaissant pas ce pic, ils deviennent de plus en plus complexes ces pics.

Pour les variables la réponse est oui, elles remplissent une section data dans l'ordre d'apparition en scène. Pourquoi tu n'utilises pas les sections prédéfinies ? D'ailleurs dans mes rares programmes je vois que je mets juste "psect code" pour le code (hors section reset), pour utiliser la section prédéfinie de code.
Dans le programme de départ tu as mis "psect CODE", il a dû considérer que c'était une nouvelle section car case sensitive (A VERIFIER) et elle ne lui a pas plu.
Pour voir le contenu des variables dans MPLABX ASM, il faut les déclarer en global, merci ChatGPT.

Code : Tout sélectionner

// 16F1719

#include <xc.inc>

; PSECT ram_bk3,space=1,class=bank3
PSECT udata_bank3
global  var0,var1
var0:   DS 1
var1:   DS 1
 
PSECT resetVec,abs,class=CODE,space=SPACE_CODE,delta=2
resetVec:
        goto    test_0

PSECT code
test_0:
        movlw   10

; PSECT ram_bk3,space=1,class=bank3
PSECT udata_bank3
global  var2,var3
var2:   DS 1
var3:   DS 1

PSECT code
test_1:
        movlw   11

        end

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

#46 Message par LP_2 » mer. 21 janv. 2026 15:05

satinas a écrit :Pourquoi tu n'utilises pas les sections prédéfinies ?

J'avais pas touit saisi . . .
Dans ma derbière mouture ça doit être le cas.
► Afficher le texte
J'y arriverai . . .

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

#47 Message par satinas » mer. 21 janv. 2026 15:15

Je ne vois pas l'intérêt de créer de nouvelles sections ram.
Va dans Tools/Options/Editor et coche "Expand tabs to spaces", cela ne changera rien dans l'utlisation de MpLabX, et tes programmes n'auront plus de problèmes de tabulation sur le site, pensons aux lecteurs.

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

#48 Message par LP_2 » mer. 21 janv. 2026 15:17

Ah je viens de voir le tableau avec les "psect name" prédéfinis . . .
Bon, c'est tout pour aujourd'hui, en laissant décanter ça ira mieux.

Et merci
J'y arriverai . . .

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

#49 Message par LP_2 » sam. 24 janv. 2026 15:11

Retour à la RAM . . .
PSECT udata_bank3,abs,space=1,class=BANK3
ORG 01a0h
De ce que je comprend, et pour ce PSECT
Devices that have a banked data space do not use different space values to identify each bank. A
full address that includes the bank number is used for objects in this space. So, each location can be
uniquely identified. For example, a device with a bank size of 0x80 bytes will use address 0 to 0x7F
to represent objects in bank 0, and then addresses 0x80 to 0xFF to represent objects in bank 1, etc.

le ORG qui suit est inutile si toutes les définitions associées à la bank3 sont écrites ici ?

Et pour la banque commune
PSECT udata_shr,abs,space=1,class=COMMON
ORG 070h
le ORG est également inutile ?
J'y arriverai . . .

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

#50 Message par LP_2 » sam. 24 janv. 2026 15:25

Si maintenant on veut créer 1 variable bit dans 1 octet
et des variables octet

PSECT udata_shr,abs,bit,space=1,class=COMMON
etat_0: ds 1
PSECT udata_shr,abs,space=1,class=COMMON
ORG 071h
cmpt_0 ds 1
cmpt_1 ds 1

etat_0 sera représenté par le bit 0 de l'octet à l'adresse 070h
cmpt_0 sera représenté par l'octet en 071h et ainsi de suite pour les suivants

J'ai bon ?
J'y arriverai . . .


Retourner vers « Langage ASM »

Qui est en ligne

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