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 ---
- 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 ---
Modérateur : mazertoc
interrogation sur le 18F44K22
Bonjour à tous,
Dans le lien donné, chercher éventuellement PIC18F44K22.
Je mets le nez dans ce que je crois être un "extended mid-range"
et j'y vois la description de l'instruction ADDWF
le a étant entre accolades, il est optionnel.
La doc dit bien comment est géré l'adressage si a = 0 ou 1 mais pas s'il est absent. Peut-être est-ce dit par ailleurs mais je n'ai pas trouvé
Qui sait ?
merci
Dans le lien donné, chercher éventuellement PIC18F44K22.
Je mets le nez dans ce que je crois être un "extended mid-range"
et j'y vois la description de l'instruction ADDWF
ADDWF ADD W to f
Syntax: ADDWF f {,d {,a}}
Operands: 0 f 255
d [0,1]
a [0,1]
Operation: (W) + (f) dest
Status Affected: N, OV, C, DC, Z
Encoding: 0010 01da ffff ffff
Description: Add W to register ‘f’. If ‘d’ is ‘0’, the
result is stored in W. If ‘d’ is ‘1’, the
result is stored back in register ‘f’
(default).
If ‘a’ is ‘0’, the Access Bank is selected.
If ‘a’ is ‘1’, the BSR is used to select the
GPR bank.
If ‘a’ is ‘0’ and the extended instruction
set is enabled, this instruction operates
in Indexed Literal Offset Addressing
mode whenever f 95 (5Fh). See
Section 25.2.3 “Byte-Oriented and
Bit-Oriented Instructions in Indexed
Literal Offset Mode” for details
le a étant entre accolades, il est optionnel.
La doc dit bien comment est géré l'adressage si a = 0 ou 1 mais pas s'il est absent. Peut-être est-ce dit par ailleurs mais je n'ai pas trouvé
Qui sait ?
merci
interrogation sur le 18F44K22
Bonjour JJE,
Si tu ne mets pas explicitement le flag ACCESS/BANKED, c'est l'assembleur qui va l'ajouter, en analysant l'adresse de la variable ou du registre.
L'access ram se situe à cheval sur 2 banks mémoire, pour le 18F44K22 :
0x000 à 0x05F début bank0, zone variables en access ram
0xF60 à 0xFFF fin bank15, zone registres SFR en access ram
Si l'adresse est < 0x060 ou >= 0xF60, il ajoute le flag ACCESS
Sinon il ajoute le flag BANKED, et c'est à toi de mettre à jour le registre BSR en conséquence, car dans l'instruction machine résultante, il n' y a pas la partie haute de l'adresse.
Les compilateurs gèrent eux-mêmes ce mécanisme, mais en asm il faut jongler avec BSR.
En mettant par exemple BSR à 1 et sans jamais le modifier, tu pourras accéder sans avoir à spécifier le flag ACESS/BANKED à :
0x000 à 0x05F bank0, variables en access ram, 96 octets
0x100 à 0x1FF bank1, variables en banked ram, 256 octets
0xF60 à 0xFFF bank15, registres SFR en access ram
Cela doit être à peu près ça :)
Si tu ne mets pas explicitement le flag ACCESS/BANKED, c'est l'assembleur qui va l'ajouter, en analysant l'adresse de la variable ou du registre.
L'access ram se situe à cheval sur 2 banks mémoire, pour le 18F44K22 :
0x000 à 0x05F début bank0, zone variables en access ram
0xF60 à 0xFFF fin bank15, zone registres SFR en access ram
Si l'adresse est < 0x060 ou >= 0xF60, il ajoute le flag ACCESS
Sinon il ajoute le flag BANKED, et c'est à toi de mettre à jour le registre BSR en conséquence, car dans l'instruction machine résultante, il n' y a pas la partie haute de l'adresse.
Les compilateurs gèrent eux-mêmes ce mécanisme, mais en asm il faut jongler avec BSR.
En mettant par exemple BSR à 1 et sans jamais le modifier, tu pourras accéder sans avoir à spécifier le flag ACESS/BANKED à :
0x000 à 0x05F bank0, variables en access ram, 96 octets
0x100 à 0x1FF bank1, variables en banked ram, 256 octets
0xF60 à 0xFFF bank15, registres SFR en access ram
Cela doit être à peu près ça :)
interrogation sur le 18F44K22
Merci Satinas,
pour résumer, si j'ai bien compris, avec une variable dans la plage 0x60, 0xf5f, ca qui laisse quand même de la marge, ne pas mettre le flag ramène à l'instruction classique correspondante nécessitant la gestion de banque mais syntaxiquement compatible à ce qu'on écrirait pour un mid-range.
pour résumer, si j'ai bien compris, avec une variable dans la plage 0x60, 0xf5f, ca qui laisse quand même de la marge, ne pas mettre le flag ramène à l'instruction classique correspondante nécessitant la gestion de banque mais syntaxiquement compatible à ce qu'on écrirait pour un mid-range.
interrogation sur le 18F44K22
interrogation sur le 18F44K22
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Google [Bot] et 135 invités