Pl COURS.DOC/fr
Jump to navigation
Jump to search
... suite sur les modes d'adressage 7) L'adressage RELATIF AU PC AVEC DEPLACEMENT: (sh‚matis‚ d(pc) ) ------------------------------------------- Il s'‚crit: ----------- +---------------------------------------+ | Instruction d(pc),destination | +---------------------------------------+ Et se lit: ---------- On ajoute la valeur du d‚placement sign‚ 'd' cod‚ sur un MOT au PC ( de l'instruction considérée !) , on prend la donn‚e ainsi point‚e et on la pose dans ( à ) l'op‚rande destination. d(pc)= d+pc Exemple: J'utilise l'instruction 'JMP destination' , qui opŠre un saut -------- du prg à l'adresse 'destination' en chargeant la valeur du PC avec la valeur de 'destination'. (JMP comme JuMP=saut en Anglais) si j'‚cris: JMP 10(pc) Avant l'ex‚cution de l'instruction JMP, le PC pointe sur l'adresse de cette instruction (JMP 10(pc) ) Ecrire JMP 10(pc), provoque un saut de 10 Octets aprŠs l'adresse point‚e par le PC qui pointe cette instruction (soit JMP 10(pc) ), si à l'adresse PC+10 on a un Label ( 'A' ) par exemple, l'instruction JMP 10(pc) provo- que un saut (en ajoutant 10 à PC) à ce Label. (Il peut bien sur y avoir d'autres instructions ou autre chose, tout d‚pend de votre listing...) exemple: -------- Labels instructions du prg . . ici, PC=$AF00 X JMP 10(pc) ,il y a saut en PC+10 . . . ici, PC=$AF10 A ............ ,on continue en $AF10 . . Il faut donc tenir compte de la taille de l'instruction JMP d(pc) pour le d‚placement car le PC pr‚c‚dant l'instruction consid‚r‚e intervient. En effet, la taille des instructions en m‚moire varie selon le mode d'ad- ressage utilis‚, à la fin de ce chapitre sur les modes d'adressage, je do- nnerais la taille et la repr‚sentation des modes d'adressage en m‚moire. Donc le d‚placement r‚el, c'est le d‚placement r‚el + la taille de l'ins- truction et de ses op‚randes. 8) L'adressage RELATIF AU PC AVEC INDEX ET DEPLACEMENT: ( d(pc,rn) ) ---------------------------------------------------- Il s'‚crit: ----------- +---------------------------------------+ | Instruction d(pc,rn),destination | +---------------------------------------+ Et se lit: ---------- On ajoute la valeur du d‚placement sign‚ 'd' cod‚ sur un MOT et celle du registre 'rn' au PC (de l'instruction consid‚r‚e !) , on prend la donn‚e ainsi point‚e et on la pose dans ( à ) l'op‚rande destination d(pc,rn)= d+an+pc OU d(pc,rn)= d+dn,pc Ce mode d'adressage est donc identique au pr‚c‚dent, sauf qu'ici on ajoute le d‚placement et le contenu du registre 'rn' au PC qui pr‚cŠde l'instruction consid‚r‚e. Si 'rn' est un MOT (.W) , le MOT de poids faible du registre 'rn' intervient lors de l'op‚ration. Si 'rn' est un L-M (.L) , le registre index 'rn' est utils‚ en entier. 9) L'adressage ABSOLU LONG: (sh‚matis‚ BBBB ) ------------------------ Il s'‚crit: ----------- +-----------------------------------+ | Instruction source,Adresse | +-----------------------------------+ OU -- +-----------------------------------+ | Instruction Adresse,destination | +-----------------------------------+ Et se lit: ---------- On pose l'op‚rande source dans ( à ) l'adresse indiqu‚e par l'op‚rande destination. OU -- Exemple: MOVE labas,d0 -------- . . . DATA labas DC.W 12 en 'labas' on trouve un MOT=12 le registre de donn‚e d0 contiendra 12. autre exp: MOVE D0,$AFFB48 si $AFFB48 est dans un ---------- segment DATA ( d‚tails bientot ) On pose le not de poids faible de d0 à l'adresse $AFFB48 10) L'adressage ABSOLU COURT: (sh‚matis‚ BB ) ------------------------- Il s'‚crit: ----------- +-----------------------------------+ | Instruction source,Adresse | +-----------------------------------+ OU -- +-----------------------------------+ | Instruction Adresse,destination | +-----------------------------------+ Et se lit: ---------- On pose l'op‚rande source dans ( à ) l'adresse indiqu‚e par l'op‚rande destination. OU -- On prend la donn‚e point‚e par l'op‚rande 'Adresse' et on la pose dans ( à ) l'op‚rande destination. Mode d'adressage identique au mode pr‚c‚dent, mais ici la valeur de l'adresse doit pouvoir Štre contenue dans un MOT. REPRESENTATION INTERNE DES MODES D'ADRESSAGE ET MOTS D'EXTENSION: ----------------------------------------------------------------- A chaque mode d'adressage sont rattach‚s 0,1 ou 2 MOTS D'EXTENSION, ceci peut avoir une importance pour la repr‚sentation (taille) des diff‚rents modes d'adressage en m‚moire: (cf le mode d(pc) ou d(pc,rn) ) +-------------------------+---------------------+ | MODES | NOMBRE DE MOTS | | D'ADRESSAGE | D'EXTENSION | +-------------------------+---------------------+ | BBBB | 2 | +-------------------------+---------------------+ | BB | 1 | +-------------------------+---------------------+ | #... | 1 si .B ou .W | | | 2 si .L | +-------------------------+---------------------+ | (an) | 0 | +-------------------------+---------------------+ | (an)+ | 0 | +-------------------------+---------------------+ | -(an) | 0 | +-------------------------+---------------------+ | d(an) | 1 | +-------------------------+---------------------+ | d(an,rn) | 1 | +-------------------------+---------------------+ | d(pc) | 1 | +-------------------------+---------------------+ | d(pc,rn) | 1 | +-------------------------+---------------------+ - Notez que la taille des op‚randes (si il y en a) intervient aussi dans la repr‚sentation des instructions en m‚moire. En g‚n‚ral, on compte 1 MOT pour l'instruction + les mots d'exten- sion et la taille des op‚randes. exemples: --------- ainsi: MOVE.W #14,D0 sera repr‚sent‚ par 1 mot (instruction) + 1 mot (pour le mot 14) + 1 mot (pour Le mot de poids faible de d0) + 1 mot (pour l'adressage imm‚diat avec la taille .W qui admet un mot d'exten- sion) = 4 mots en m‚moire. autre exemple: JMP $AFFA02 sera repr‚sent‚ par 3 Mots en m‚moire ( mode d'adressage absolu long qui admet 2 mots d'extension + 1 mot pour JMP ) - Voilà pour les modes d'adressage, mais avant de passer aux exercices, je vous explique encore les diff‚rentes directives d'assemblage que vous trouverez dans les listings. *** DIRECTIVES D'ASSEMBLAGE *** ------------------------------- Vous connaissez d‚jà : - TEXT :Permet de reinitialiser le PC, se place au d‚but du listing. - EQU :Associe une valeur num‚rique à une adresse. (Un Label) voilà quelques autres directives: - END :Elle indique à l'assembleur que ce qui suit cette directive ne doit plus Štre assembl‚ (donc ignor‚). Attention, elle ne provoque pas la 'fin' du programme. - DATA :Cette directive d‚limite un SEGMENT DATA, le PC est reini- tialis‚ de la mŠme maniŠre qu'avec 'text'. Dans le SEGMENT DATA, on d‚finit des donn‚es (ou datas) On peut alors utiliser les directives DC.B, DC.W ou DC.L : DC.B :Permet de placer en m‚moire des constantes (donn‚es) sous forme d'octets. On peut par exemple associer une constante à une adresse , les donn‚es doivent Štres s‚par‚es par des virgules. exp: LABEL DC.B 0,1,6,3,11,46,$4F,%10110010 ---- ici, à l'adresse LABEL, on trouve un OCTET (.B) qui vaut 0, à l'adresse LABEL+1 on trouve un OCTET (.B) qui vaut 1 ... en LABEL+6 on trouve un OCTET (.B) qui vaut $4F etc... DC.W :identique à DC.B sauf qu'ici, on range des Mots en m‚moire. DC.L :identique à DC.W ou DC.B sauf qu'ici, on range des L-M en m‚moire. - BSS :Cette directive reinitialise aussi PC. Elle d‚limite un SEGMENT BSS. Dans un segment BSS, on se r‚serve de la place en m‚moire, sous forme d'OCTETS,MOTS ou L-M. En effet, on ne peut pas placer une donn‚e en m‚moire si on n'a pas reserv‚ cette portion de la m‚moire !!! (sauf cas particuliers que nous ‚tudierons) On utilise alors la diretive 'DS.suffixe quantit‚' pour se r‚server de la place en m‚moire sans l'initialiser. DS.B :r‚serve une certaine quantit‚ d'Octets en m‚moire. exp: LABEL DS.B 120 :à l'adresse LABEL, se trouve ---- une suite de 120 Octets qui nous sont r‚serv‚s.On peut alors y d‚poser des donn‚es. DS.W :r‚serve une certaine quantit‚ de Mots en m‚moire. DS.L :r‚serve une certaine quantit‚ de L-M en m‚moire. - Voilà, allez faire les exos (fichier EXOS_1.DOC), il y en a bien une tonne, mais aprŠs ça il n'y aura plus de problˆmes (j'espŠre!!) avec les modes d'adressage. - Vous reviendrez ensuite à la suite des cours dans le fichier: INSTRUC.DOC ----------- ------------------ PIECHOCKI Laurent exos: EXOS_1.DOC 8,impasse Bellevue ---------- 57980 TENTELING cours: INSTRUC.DOC -----------
Back to ASM_Tutorial