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

interrogation sur le 18F44K22
JJE
Passioné
Passioné
Messages : 326
Âge : 78
Enregistré en : novembre 2017
Localisation : Picardie

#1 Message par JJE » mer. 10 avr. 2019 10:39 lien vers la Data-Sheet : Cliquez ici

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
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
Cordialement

JJE

C'est pas parcequ'on n'a rien à dire qu'il faut fermer sa G....e

interrogation sur le 18F44K22
satinas
Passioné
Passioné
Messages : 389
Enregistré en : novembre 2015

#2 Message par satinas » mer. 10 avr. 2019 14:17 lien vers la Data-Sheet : Cliquez ici

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 :)

interrogation sur le 18F44K22
JJE
Passioné
Passioné
Messages : 326
Âge : 78
Enregistré en : novembre 2017
Localisation : Picardie

#3 Message par JJE » mer. 10 avr. 2019 14:47 lien vers la Data-Sheet : Cliquez ici

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.
Cordialement

JJE

C'est pas parcequ'on n'a rien à dire qu'il faut fermer sa G....e

interrogation sur le 18F44K22
satinas
Passioné
Passioné
Messages : 389
Enregistré en : novembre 2015

#4 Message par satinas » mer. 10 avr. 2019 15:02 lien vers la Data-Sheet : Cliquez ici

Oui, cela ressemble beaucoup aux 16F, qui avaient déjà de l'access ram toujours accessible par duplication sur toutes les banks.
Les registres 18F sont toujours accessibles contrairement à ceux des 16F qui étaient plutôt en banked ram.

interrogation sur le 18F44K22
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 1207
Enregistré en : juillet 2016
Localisation : Terre

#5 Message par Temps-x » mer. 10 avr. 2019 15:09 lien vers la Data-Sheet : Cliquez ici

Bonjour,

Pour bien comprendre

bank.jpg


==> A++
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Quand la souris nargue le chat, c'est que son trou n'est pas loin.

interrogation sur le 18F44K22
JJE
Passioné
Passioné
Messages : 326
Âge : 78
Enregistré en : novembre 2017
Localisation : Picardie

#6 Message par JJE » mer. 10 avr. 2019 18:06 lien vers la Data-Sheet : Cliquez ici

Merci Temps-x, je crois avoir compris la chose. Peut-être m'en servirai-je prochainement
Cordialement

JJE

C'est pas parcequ'on n'a rien à dire qu'il faut fermer sa G....e


Retourner vers « Langage ASM »

Qui est en ligne

Utilisateurs parcourant ce forum : Gérard et 4 invités