ANNEXE MODE D'ADRESSAGE / JEU D'INSTRUCTIONS du 80C196KC TABLE DES MATIERES 1. INTRODUCTION ....................................................................................................................................................1 2. MODES D'ADRESSAGE.........................................................................................................................................2 2.1. mode d'adressage direct .........................................................................................................................2 2.2. mode d'adressage immédiat ...................................................................................................................3 2.3. mode d'adressage indexé .......................................................................................................................4 2.4. mode d'adressage étendu .......................................................................................................................6 2.5. mode d'adressage indirect......................................................................................................................7 2.6. mode d'adressage relatif.........................................................................................................................8 3. JEU D'INSTRUCTIONS ..........................................................................................................................................9 3.1. famille des instructions arithmétiques ...................................................................................................9 ADDITION........................................................................................................................................9 SOUSTRACTION .............................................................................................................................9 MULTIPLICATION..........................................................................................................................10 DIVISION .........................................................................................................................................11 CHANGEMENT DE SIGNE.............................................................................................................11 EXTENSION DE SIGNE ..................................................................................................................11 COMPARAISON ..............................................................................................................................12 3.2. famille des instructions logiques ...........................................................................................................12 ET ......................................................................................................................................................12 OU .....................................................................................................................................................12 OU EXCLUSIF .................................................................................................................................12 PAS....................................................................................................................................................12 INCREMENTATION........................................................................................................................12 DECREMENTATION.......................................................................................................................13 MISE A ZERO ..................................................................................................................................13 MISE A ZERO OU UN DU BIT CARRY ........................................................................................13 MISE A ZERO DU BIT VT ..............................................................................................................13 DECREMENTATION ET BRANCHEMENT SI RESULTAT NON NUL......................................13 DECALAGE LOGIQUE ...................................................................................................................14 DECALAGE ARITHMETIQUE A DROITE ....................................................................................14 ECHANGE ........................................................................................................................................14 3.3. famille des instructions de branchement................................................................................................15 BRANCHEMENTS CONDITIONNELS ..........................................................................................15 BRANCHEMENTS INCONDITIONNELS ......................................................................................15 3.4. famille des instructions de mouvement..................................................................................................16 CHARGEMENT................................................................................................................................16 RANGEMENT ..................................................................................................................................16 3.5. famille des instructions pour interruptions ............................................................................................16 VALIDATION DES INTERRUPTIONS ..........................................................................................16 INTERDICTION DES INTERRUPTIONS.......................................................................................16 RESET SOFT ....................................................................................................................................16 3.6. famille des instructions qui utilisent la pile ...........................................................................................17 APPELS/RETOUR SOUS PROGRAMME ......................................................................................17 EMPILAGE/DEPILAGE D'INFORMATIONS ................................................................................17 3.7. famille des instructions diverses ............................................................................................................17 OPERATION NULLE.......................................................................................................................17 DEPLACEMENT DE BLOQUE DE DONNEES .............................................................................18 MODE FAIBLE CONSOMMATION ...............................................................................................18 TEST MSB REEL .............................................................................................................................18 SAUT COMPLEXE ..........................................................................................................................18 1. INTRODUCTION Les microcontrôleurs 16 bits d'INTEL de la famille MC96 ont une architecture registre à registre, c'est à dire, qu'ils intègrent sur la même puce ( chip ), une zone de mémoire vive partagée comme suit : ♦ De l'adresse 00H à 19H: se trouvent des fichiers à fonctions spéciales SFRs. Ils sont 26. ♦ De l'adresse 1AH à 0FFH : se trouvent 230 registres libres. Le 80C196KC possède, en plus des registres cités ci-dessus, une mémoire RAM de 256 octets supplémentaires de l'adresse 100H à 1FFH. Ces mémoires peuvent être utilisées comme mémoire temporaire. Par suite, lorsque nous utilisons l'appellation registre, elle concernera une mémoire interne de l'adresse comprise entre 00H et 0FFH. Le micro-contrôleur étant capable d'exécuter des instructions, sur des opérandes 8 bits, sur des opérandes 16 bits ou sur des opérandes 32 bits, nous utiliserons les appellations suivantes: ♦ breg: byte-register ( pour désigner un registre octet 8 bits lequel prend une adresse ). ♦ wreg: word-register ( pour désigner un registre mot 16 bits lequel prend deux adresses ). ♦ lreg: long-register ( pour désigner un registre long 32 bits lequel prend quatre adresses ). Remarque 1: La zone registre peut donc être vue comme 256 byte-registers OU 128 word-registers OU 64 long-registers. Remarque 2: Un wreg d'adresse 20H occupe la même place que les 2 breg d'adresse 20H et 21H, un lreg d'adresse 20H occupe la même place que les 2 wreg d'adresse 20H et 22H ou encore que les 4 breg d'adresse 20H, 21H, 22H, 23H. Quelques abréviations utilisées Base Définit un registre word ( Wreg ) dans lequel se trouve l'adresse de base. bit_n° bit number Numéro de bit. breg byte_register Désigne des registres à 8 bits ( byte ). Dest destination Etiquette ou adresse du registre destination lreg long_register Désigne des registres à 32 bits ( double word ). Mnem mnémonique Mnémonique de l'instruction ( code opératoire ) PC program counter Compteur de programme Src source Etiquette ou adresse mémoire source ( code opérande ). Src1 source registre Etiquette ou adresse du registre source 1 ( 00H à 0FFH ). wreg word_register Désigne des registres à 16 bits ( word ). Valeur valeur immédiate Définit le mode d'adressage immédiat Saut Définit l'adresse ou l'étiquette de branchement en cas de saut adresse de branchement Annexe page n° 1 2. MODES D'ADRESSAGE Le jeu d'instruction du 80C196KC peut être exprimé par 6 modes d'adressage différents. 2.1. mode d'adressage direct Ce mode permet le traitement d'une donnée située à l'intérieur de la zone registre ( de 00H à 0FFH ). ♦ Une adresse est définie sur 8 bits ( partie haute implicitement à 00H ), il est donc économique en nombre d'octets de programme. ♦ Il traite des données en mémoire interne, le temps d'exécution d'une instruction donnée est donc plus court qu'avec un autre mode. ♦ Les références mémoires sont limitées à 256 octets. Les trois formes rencontrées avec ce mode sont: ♦ Mnem Dest ou Src1 ( un opérande, direct ). ♦ Mnem Dest,Src 1 ( deux opérandes, direct ). ♦ Mnem Dest,Src1,Src ( trois opérandes, direct ). ♦ Mnem est le mnémonique de l'instruction ( code opératoire ). ♦ Dest est l'adresse registre destination ( 00H à FFH ) ( code opérande ). ♦ Src1 est l'adresse registre source 1 ( 00H à FFH ) ( code opérande ). ♦ Src est l'adresse mémoire source ( 00H à FFH ou externe ) ( code opérande ). ou: Remarque: Certaines instructions peuvent aussi bien travailler sur des octets ( bytes 8) que sur des mots ( words 16 ) ou sur des longs mots ( long words 32 ). Pour la distinction, un mnémonique se terminant par la lettre B précise que les registres opérandes concernés par l'instruction sont des octets ( Bytes ). Un mnémonique se terminant sans lettre indique que les registres opérandes concernés par l'instruction sont des mots ( words ). Un mnémonique se terminant par la lettre L indique que les registres opérandes concernés par l'instruction sont des mots longs ( Long words ). Exemples: INCB 20H ; incrémente le registre octet d'adresse 20H 20H 20H + 00000001 = INC 20H 21H ; incrémente le registre mot d'adresse 21H ( partie haute )/20H ( partie basse ) 20H 21H 20H + 00000000 00000001 = INCL 20H 23H ; incrémente le registre long mot d'adresse 23H/22H/21H/20H 22H 21H 20H + 00000000 00000000 00000000 00000001 = 23H 22H 21H 20H LDB 40H,20H ; charge le registre octet d'adresse 20H dans le registre octet d'adresse 40H 40H 20H Annexe page n° 2 ADD 40H,20H,08H + = 21H 20H 09H 08H 41H 40H ; ajoute le registre mot d'adresse 21H/20H au registre mot d'adresse ; 09H/08H et range le résultat aux adresses 41H/40H Attention: Lorsque vous travaillez sur des registres mots ( 16 bits ), vous devez spécifier une adresse paire. Lorsque vous travaillez sur des registres longs ( 32 bits ), vous devez spécifier une adresse divisible par 4. 2.2. mode d'adressage immédiat Ce mode permet d'affecter une valeur fixée dans le programme à une mémoire destinataire qui est nécessairement un registre ( RAM interne de 00H à 0FFH ). Les deux formes d'instruction rencontrées avec ce mode sont: ♦ Mnem Dest,#valeur ♦ Mnem Dest,Src1,#valeur où: valeur représente un nombre et non une adresse. Remarque: Le symbole # signifie à l'assembleur ASM96 ( programme qui traduit votre code source, écriture mnémonique non exécutable par le micro-contrôleur, en code objet, écriture hexadécimale exécutable par le micro-contrôleur ) que l'expression qui suit n'indique pas une adresse mais une donnée utilisée par l'instruction. Il ne peut y avoir qu'un seul opérande immédiat par instruction. Il est spécifié complètement à droite de l'instruction; Dest et Src1 étant des registres ( RAM interne de 00H à 0FFH ). Exemples: LDB 31H,#0FAH ; charge le breg d'adresse 31H avec la valeur immédiate FAH 31H 11111010 ( FAH ) ADD 30H,20H,#1F5AH ; ajoute au wreg d'adresse 21H/20H la valeur 1F5AH et range le ; résultat dans le wreg d'adresse 31H/30H 21H + = 20H 00011111 01011010 ( 1F5AH) 31H 30H MULU 40H,#8000H ; multiplie en non signé une valeur immédiate sur 16 bits ( pour l'exemple ; 32768 en décimal ) par le wreg d'adresse 41H, 40H et range le résultat ; dans le lreg d'adresse 43H, 42H, 41H, 40H 41H x = 40H 8000H 43H 42H CONSTANTE EQU 3AH 41H 40H ; l'instruction charge la valeur 3AH dans le breg Annexe page n° 3 LDB 3AH,#CONSTANTE ; d'adresse 3AH 3AH 00111010 ( 3AH ) Remarque: La directive EQU est interprétée par l'assembleur ASM96 comme suit: Lorsqu'il assemble votre code source à chaque fois qu'il rencontrera dans le programme l'étiquette CONSTANTE, il la remplacera par la valeur 3AH. Nous aurions également pu écrire : REGISTRE EQU 3AH CONSTANTE EQU 3AH LDB REGISTRE,#CONSTANTE ou encore: LDB 3AH,#3AH. L'intérêt de la directive EQU est grand. Elle autorise dans votre code source, l'écriture d'instructions faisant référence à des étiquettes, plutôt qu'à une suite de symboles hexadécimaux. Si ces étiquettes sont judicieusement choisies par le programmeur, l'effet mnémotechnique est certain. 2.3. mode d'adressage indexé L'adressage immédiat impose une valeur fixe à un registre. Il est des applications où le même registre doit pouvoir être chargé par une valeur inconnue au moment de l'assemblage. Cela signifie que c'est le programme lui-même qui, en cours d'exécution définira finalement la valeur à charger dans un registre. Ce mode d'adressage ne définit pas une valeur à charger dans un registre par le micro-contrôleur, mais plutôt une adresse mémoire où le micro-contrôleur ira chercher la valeur à charger. Le mode indexé pour lequel on ne spécifie plus un opérande mais l'adresse d'un opérande, répond à ce besoin. Deux autres modes qui sont l'étendu et l'indirect assurent également cette fonction. Mais le mode indexé se distingue par le fait qu'il est bien adapté à la gestion de tableaux de valeurs. Les deux formes rencontrées sont: ♦ Mnem Dest,offset[base] ♦ Mnem Dest,Src1,offset[base] ♦ base est un wreg dont le contenu est utilisé par le micro-contrôleur pour former l'adresse de base de l'opérande. ♦ offset est un nombre signé court ( -128 à + 127 ) donc sur 8 bits ♦ offset est un nombre signé long ( -32768 à + 32767 ) donc sur 16 bits. où: On parle alors d'indexé court ou d'indexé long. Les deux variantes se distinguent d'un octet en + ou en - et d'un temps de cycle en + ou en -. Remarque: Les crochets précisent à l'assembleur que le mode indexé est requis. Suivant la valeur de l'offset, l'assembleur choisira entre l'indexé court ou long. Finalement, l'adresse d'un opérande en mode indexé est calculée comme suit par le micro-contrôleur: adresse opérande = valeur de base + offset Annexe page n° 4 Exemples: LD 18H,#0E000H LDB 47H,3[18H] ; charge le registre 47H avec le contenu de l'adresse E0000 + 3 LDB 21H,1[18H] ; charge le registre 21H avec le contenu de l'adresse E000 + 1 47H 32H 21H A6H 19H 18H E0H 00H RAM INTERNE REGISTRE POINTEUR EQU 18H LD POINTEUR,#0E000H E004H E003H E002H E001H E000H 45H 32H B8H A6H FFH +3 [BASE] RAM EXTERNE ; affectation d'une mémoire interne pour sauvegarder les valeurs ; prises par le pointeur. ; initialise le pointeur en début de table. LDB 46H,2[POINTEUR]; charge le registre 46H avec le contenu de l'adresse E000 + 2 LDB 47H,3[POINTEUR]; charge le registre 47H avec le contenu de l'adresse E000 + 3 47H 46H 19H 18H 32H B8H E0H 00H RAM INTERNE REGISTRE E004H E003H E002H E001H E000H 45H 32H B8H A6H FFH +2 +3 [BASE] RAM EXTERNE ou encore LD 46H,2[POINTEUR] ; charge le registre mot 47H/46H avec le contenu ; de l'adresse E000 + 3/E000 + 2 Annexe page n° 5 2.4. mode d'adressage étendu Ce mode permet de spécifier l'adresse absolue d'un opérande. Les deux formes rencontrées sont: ♦ Mnem Dest,Adr[0] ♦ Mnem Dest,Src1,Adr[0] ♦ Adr peut prendre les valeurs allant de 0000H à FFFFH ou: L'écriture ressemble à celle de l'indexé, à l'exception près que cette fois la base est obligatoirement définie par le wreg d'adresse 00H. Or, à la construction, le contenu des adresses 01H et 00H a été imposé à zéro. Donc Adr représente l'adresse physique ou absolue de l'opérande puisque la base est nulle. Exemples: LDB 22H,1E03H[0] 22H ; charge dans le breg 22H, le contenu de 1E03H 13H 1E03H 1E02H 12H 01H 00H 13H A9H 00H 00H RAM INTERNE REGISTRE ACCA EQU 12H MASQUE EQU 1E02H RAM EXTERNE ; définit un mon pour le registre d'adresse 12H ; définit un mon pour l'adresse mémoire 1E02H LDB ACCA,#0C1H ; charge ACCA avec la valeur C1H ANDB ACCA,MASQUE[0] ; effectue un et logique entre ACCA et l'adresse masque 12H C1H 1E02H ET A9H 12H = 81H Annexe page n° 6 2.5. mode d'adressage indirect Ce mode est utilisé pour accéder à un opérande dont l'adresse est placée dans un wreg. Dans l'instruction, on ne spécifie que l'adresse du wreg concerné. Le wreg sert d'adresse indirecte pour accéder à un opérande, d'où l'appellation. Il existe une variante à ce mode; c'est le mode indirect avec post incrémentation. Dans ce cas, le contenu de wreg est automatiquement incrémenté de 1 si l'instruction concerne un byte ou de 2 si l'instruction concerne un word. Remarque: le mode indirect est identique au mode indexé mais avec un offset nul. Les trois formes rencontrées sont: ♦ Mnem [base] ♦ Mnem [base]+ ♦ Mnem Dest,[base] ♦ Mnem Dest,[base]+ ♦ Mnem Dest,Src1,[base] ♦ Mnem Dest,Src1,[base]+ ♦ Base définit un registre mot ( wreg ) dans lequel se trouve l'adresse de l'opérande concernée par l'instruction. ou: Exemples: INCB [80H] 81H 80H ; incrémente l'octet d'adresse 0A000H A000H 2BH FFH A001H A000H A0H 00H FFH + 00000001 A000H = 00H INDIRECTION PAR 81H/80H INC [80H] 81H 80H A0H 00H ; incrémente le mot d'adresse 0A000H A001H A000H 2BH FFH A001H } A000H 2BH + 00000000 A001H = 2CH INDIRECTION PAR 81H/80H FFH 00000001 A000H 00H L'instruction précédente est équivalente dans ses effets et avec ces valeurs à: INCB [80H]+ ; incrémente le contenu de l'adresse A000H incrémente le contenu de l'adresse 80H INCB [80H] ; incrémente le contenu de l'adresse A001H Annexe page n° 7 XOR 32H,[A0]+ ; réalise un ou exclusif entre le registre 33H/32H et l'adresse B801H/B800H ; et incrémente l'adresse indirecte de 2 AVANT B8H 00H A1H A0H B801H B800H 66H 8CH 33H } 32H 4BH B5H B801H + B800H 66H 8CH 33H 33H 32H = } 4BH B5H 32H 2DH 39H +2 APRES A1H A0H B8H 02H 33H 32H 2DH 39H } 2.6. mode d'adressage relatif Ce mode est exclusivement réservé aux instructions de branchement ( saut de programme ) conditionnel ou non. La condition de branchement résulte de l'état d'un ou de plusieurs indicateurs tels que Zéro, Carry, Négatif pour les plus courants. Puisque l'instruction ne précise que l'amplitude du saut ( nombre d'octets ) que le compteur programme doit faire, cela sous-entend que l'adresse absolue de destination est calculée relativement à la valeur courante de PC à l'endroit du saut; d'où l'appellation de mode relatif. Résumons: SI la condition est vraie ALORS ( PC )= ( PC ) + saut SINON poursuivre. Les instructions de branchement sont génériques. Les instructions réelles sont générées par l'assembleur qui tient compte de la longueur du saut à effectuer. Le format des instructions concernées est: ♦ Mnem Saut ( Saut = adresse d'arrivée - adresse de départ ) Remarques: Les indicateurs de saut conditionnels sont mémorisés par le micro-contrôleur dans un registre interne particulier et non adressable. Il est nommé PSW de Program Status Word PSW 15 14 Z N 13 V 12 VT 11 10 9 C PTS I 8 ST 7 6 5 4 ♦ Z résultat nul ♦ N = 1 si le MSB d'un résultat = 1 ♦ V débordement en arithmétique signée ♦ VT mémoire de V = 1; remis à 0 par les instructions CLRVT, BNVT, BVT. ♦ C retenue sur ADD ou SUB ♦ PTS masque les interruptions servies par le Péripheral Transaction Server ♦ I masque maître de toutes les interruptions ♦ ST positionné si la variable testée a un nombre pair de 1 Annexe page n° 8 3 2 1 0 3. JEU D'INSTRUCTIONS On peut classer le jeu d'instruction du 80C196KC en sept familles: ♦ Famille des instructions arithmétiques ♦ Famille des instructions logiques ♦ Famille des instructions de branchement ♦ Famille des instructions de mouvement ♦ Famille des instructions pour interruptions ♦ Famille des instructions qui utilisent la pile ♦ Famille des instructions diverses Pour la suite: ♦ Dest, Src1 désignent des registres mot ou octet. ♦ Src désigne une mémoire quelconque exprimée dans un mode d'adressage quelconque. 3.1. famille des instructions arithmétiques ADDITION ♦ avec ou sans retenue initiale ♦ sur octets ou mots ♦ avec choix ou non de l'adresse du résultat On dispose ainsi de six formes possibles: " sur bytes " ADDB Dest,Src ADDB Dest,Src1,Src ADDCB Dest,Src " sur words " ADD Dest,Src ADD Dest,Src1,Src ADDC Dest,Src SOUSTRACTION ♦ avec ou sans retenue initiale ♦ sur octets ou mots ♦ avec choix ou non de l'adresse du résultat On dispose ainsi de six formes possibles: " sur bytes " SUBB Dest,Src SUBB Dest,Src1,Src SUBCB Dest,Src " sur words " SUB Dest,Src Dest - Src → Dest SUB Dest,Src1,Src Src1 - Src → Dest SUBC Dest,Src Dest - Src → Dest Annexe page n° 9 MULTIPLICATION ♦ sur des octets ou mots ♦ avec choix ou non de l'adresse du résultat ♦ peut porter sur des nombres signés ou non On dispose ainsi de huit formes possibles: " sur bytes " signé MULB Dest,Src MULB Dest,Src1,Src non signé MULUB Dest,Src MULUB Dest,Src1,Src Dest Src 2BH 00H FFH x Dest Src1 2BH FFH Src 00H 00H x " sur words " signé MUL Dest,Src MUL Dest,Src1,Src non signé MULU Dest,Src MULU Dest,Src1,Src Dest Src x Dest Src1 Src x Annexe page n° 10 DIVISION ♦ signée ou non signée ♦ 32 bits/16 bits ou 16 bits/8 bits " sur bytes " DIVB Dest,Src DIVUB Dest,Src Dest Src 2BH FFH 00H quotient reste " sur words " DIV Dest,Src DIVU Dest,Src Dest Src quotient reste CHANGEMENT DE SIGNE ♦ change le signe d'un opérande mot ou octet " sur bytes " NEGB Dest " sur words " NEG Dest EXTENSION DE SIGNE ♦ étend un octet signé en un mot signé ♦ étend un mot signé en un mot long signé " sur bytes " EXTB Dest Dest + 1 Dest Dest + 1 = 00H si MSB de Dest = 0 Dest + 1 = FFH si MSB de Dest = 1 Annexe page n° 11 " sur words " EXT Dest Dest + 3 Dest Dest + 3/Dest + 2 = 0000H si MSB de Dest + 1/Dest = 0 Dest + 3/Dest + 2 = FFFFH si MSB de Dest + 1/Dest = 1 COMPARAISON ♦ compare 2 octets ou 2 mots ou 2 mots longs. ♦ permet de positionner uniquement les indicateurs ( Z, N, C, V ) sans modifier les opérandes. Précède pour cette raison souvent une instruction de branchement conditionnel. CMPB Dest,Src CMP Dest,Src CMPL Dest,Src 3.2. famille des instructions logiques ET ♦ entre 2 octets ou 2 mots ♦ en choisissant ou non l'adresse du résultat ANDB Dest,Src ANDB Dest,Src1,Src AND Dest,Src AND Dest,Src1,Src OU ♦ entre 2 octets ou 2 mots ORB Dest,Src OR Dest,Src OU EXCLUSIF ♦ entre 2 octets ou 2 mots XORB Dest,Src XOR Dest,Src PAS ♦ complémente un registre octet ou mot NOTB Dest NOT Dest INCREMENTATION ♦ incrémente un registre octet ou mot ( breg ou wreg ) INCB Dest INC Dest Annexe page n° 12 DECREMENTATION ♦ décrémente un registre octet ou mot ( breg ou wreg ) DECB Dest DEC Dest MISE A ZERO ♦ mets à zéro un registre octet ou mot ( breg ou wreg ) CLRB Dest CLR Dest MISE A ZERO OU UN DU BIT CARRY ♦ utile en arithmétique lorsqu'il y a retenue initiale ou pas. CLRC SETC MISE A ZERO DU BIT VT ♦ il s'agit d'une mémoire associée au bit V ( overflow ) indicateur de débordement CLRVT DECREMENTATION ET BRANCHEMENT SI RESULTAT NON NUL ♦ décrémente un registre mot ou octet. ♦ effectue un saut si le registre est non nul. DBNZ Dest,Saut DBNZW Dest,Saut Dest: registre byte ou word. Saut: nombre d'adresses à franchir si Dest ≠ 0 Très utile pour les boucles d'attente. Remarque: c'est une instruction générique. La séquence d'instructions réelle correspondante est générée automatiquement par l'assembleur suivant l'amplitude du saut ( + 127 - 128 )( + 1023 - 1024 ) ( +3276732768 ) Annexe page n° 13 DECALAGE LOGIQUE ♦ à gauche ou à droite. ♦ peut porter sur un registre octet, mot, ou mot long. à gauche SHLB Dest,Src SHLB Dest,#Valeur SHL Dest,Src SHL Dest,#Valeur SHLL Dest,Src SHLL Dest,#Valeur Carry Dest MSB 0 LSB à droite SHRB Dest,Src SHRB Dest,#Valeur SHR Dest,Src SHR Dest,#Valeur SHRL Dest,Src SHRL Dest,#Valeur Dest 0 Carry MSB LSB Src ou Valeur définit le nombre de décalage en mode direct ou immédiat. SHLB 20H,#5 ; 5 décalages à gauche du registre d'adresse 20H DECALAGE ARITHMETIQUE A DROITE ♦ sur des nombres signés.il faut faire entrer un 1L dans le registre destination si le nombre est négatif ou un 0L si le nombre est positif pour ne pas perdre le signe. ♦ Il porte sur des breg, wreg, lreg. SHRAB Dest,Src SHRAB Dest,#Valeur SHRA Dest,Src SHRA Dest,#Valeur SHRAL Dest,Src SHRAL Dest,#Valeur Src ou Valeur définit le nombre de décalage en mode direct ou immédiat. Dest MSB Carry LSB ECHANGE ♦ échange le contenu d'un registre mot ou octet avec une mémoire de taille correspondante adressée selon un des 5 modes possibles. XCHB Dest,Src XCH Dest,Src Annexe page n° 14 3.3. famille des instructions de branchement Elles se rencontrent souvent après une comparaison entre 2 opérandes; ce sont des instructions génériques. CMP Dest,Src BRANCHEMENTS CONDITIONNELS BC Saut ; si C = 1 alors ( PC ) = ( PC ) + Saut BNC Saut ; si C = 0 alors ( PC ) = ( PC ) + Saut BE Saut ; si Z = 1 ( Dest = Src ) alors ( PC ) = ( PC ) + Saut BNE Saut ; si Z = 0 ( Dest ≠ Src ) alors ( PC ) = ( PC ) + Saut BGE Saut ; si N = 0 ( Dest > ou = Src en signé ) alors ( PC ) = ( PC ) + Saut BGT Saut ; si N = 0 et Z = 0 ( Dest > Src en signé ) alors ( PC ) = ( PC ) + Saut BLE Saut ; si N = 1 ou Z = 1 ( Dest < ou = Src en signé ) alors ( PC ) = ( PC ) + Saut BLT Saut ; si N = 1 ( Dest < Src ) en signé alors ( PC ) = ( PC ) + Saut BH Saut ; si C = 1 et Z = 0 ( Dest > Src en non signé ) alors ( PC ) = ( PC ) + Saut BNH Saut ; si C = 0 ou Z = 1 ( Dest < ou = Src en non signé ) alors ( PC ) = ( PC ) + Saut BNST Saut ; si ST = 0 alors ( PC ) = ( PC ) + Saut BST Saut ; si ST = 1 ( sticky bit nombre pair de un ) alors ( PC ) = ( PC ) + Saut BNV Saut ; si V = 0 alors ( PC ) = ( PC ) + Saut BV Saut ; si V = 1 ( débordement ) alors ( PC ) = ( PC ) + Saut BNVT Saut ; si VT = 0 alors ( PC ) = ( PC ) + Saut BVT Saut ; si VT = 1 ( mémoire débordement ) alors ( PC ) = ( PC ) + Saut Remarque: le code objet réel est généré par l'assembleur en fonction de l'amplitude du saut. ♦ dans les branchements conditionnels, il reste deux cas particulièrement intéressants à savoir: BBS breg,bit_n°,Saut BBC breg,bit_n°,Saut elles permettent un saut si le numéro du bit ( défini dans bit_n° ) d'un registre octet ( défini dans breg ) est au 1L ( BBS ) ou au 0L ( BBC ). BRANCHEMENTS INCONDITIONNELS ♦ il existe aussi 2 types de branchement sans condition: en mode relatif BR Saut en mode indirect BR [wreg] wreg est un registre mot qui doit contenir l'adresse absolue du saut. Annexe page n° 15 3.4. famille des instructions de mouvement On distingue les mouvements vers ou hors du micro-contrôleur. CHARGEMENT ♦ chargement d'un registre destination de 00Hà FFH ( Dest ) par une case mémoire quelconque de 0000H à FFFFH ( Src ). LDB Dest,Src LD Dest,Src ♦ il existe 2 variantes qui étendent sur 16 bits le signe ou non de l'opérande Src de type breg. LDBSE Dest,Src étend le signe de l'octet Src si Src < 80 ( Dest ) = ( 00Src ) si Src > ou = 80 ( Dest ) = ( FFSrc ) LDBZE Dest,Src étend sur 16 bits l'octet non signé Src ( Dest ) = ( 00Src ) ♦ pour ces 2 instructions, Dest est nécessairement un wreg, donc situé à une adresse paire. RANGEMENT ♦ rangement d'une case mémoire quelconque de 0000H à FFFFH ( Src ) vers un registre destination de 00Hà FFH ( Dest ). STB Src,Dest ST Src,Dest L'instruction Store ou Store Byte est la seule du jeu pour laquelle la Destination est définie à droite de l'instruction. 3.5. famille des instructions pour interruptions 3 instructions ont directement attrait aux interruptions: VALIDATION DES INTERRUPTIONS EI ♦ provoque la mise à 1 du bit I du mot d'état du programme ( PSW ). Le bit I réalise l'autorisation générale des interruptions. EPTS ♦ valide le bit PTS du PSW qui démasque les interruptions pour être servies par le système PTS. INTERDICTION DES INTERRUPTIONS DI ♦ provoque la mise à 0 du bit I du mot d'état du programme ( PSW ). Il y a invalidation générale des interruptions. Le micro-controleur n'est plus interruptible sauf par les entrées NMI et RESET. DPTS ♦ invalide le bit PTS du PSW qui masque les interruptions pour être servies par le système PTS. RESET SOFT RST ( reset soft ) provoque la même situation qu'à la mise sous tension ( reset hard ). Le micro-contrôleur est chargé à 2080H. Les SFR's sont initialisés comme sur un reset hard. RST est peu utilisé, mais lorsque l'on sait que son code objet est FFH, on comprend mieux son intérêt. Si pour une raison, le micro-contrôleur est amené suite à un disfonctionnement à adresser un circuit inexistant, il lit le bus de données " en l'air ", donc des 1L et s'autoreset. Annexe page n° 16 3.6. famille des instructions qui utilisent la pile On distingue, parmi les instructions utilisant automatiquement la pile: APPELS/RETOUR SOUS PROGRAMME ♦ les appels/retour de sous programme CALL Saut exécute un saut relatif sans condition, et mémorise dans la pile pointée par SP l'adresse de départ puis ( SP ) = ( SP ) - 2 RET exécute un saut relatif à l'adresse pointée dans la pile par SP puis ( SP ) = ( SP ) + 2 EMPILAGE/DEPILAGE D'INFORMATIONS ♦ l'empilage/dépilage d'informations PUSHF sauve sur la pile le mot d'état PSW puis le force à 0 puis ( SP ) = ( SP ) - 2 toutes les interruptions sont ainsi masquées. POPF fait le contraire de PUSHF. PUSHA fait le même travail que PUSHF, mais sauve en plus le mot IMASK1/WSR puis ( SP ) = ( SP ) - 2 POPA fait le contraire de PUSHA. PUSH "Adresse" sauve sur la pile le mot adressé par "Adresse" selon un des 5 modes d'adressage puis ( SP ) = ( SP ) - 2. POP "Adresse" fait le contraire de PUSH "Adresse" 3.7. famille des instructions diverses OPERATION NULLE ♦ 2 instructions sans action pratique mais qui bouchent des trous dans un programme car elles ont un sens pour le micro-controleur. NOP 1octet / 2 cycles. SKIP breg 2 octets / 4 cycles. Le breg adressé n'est pas altéré. Annexe page n° 17 DEPLACEMENT DE BLOQUE DE DONNEES BMOV lreg,wreg instruction spécifique qui permet de déplacer un bloc de données. lreg, wreg indique au micro-contrôleur, l'adresse de destination l'adresse source ( lreg ), et le Nombre de mots à déplacer ( wreg ). Exemple: BMOV 40H,20H ♦ déplace 5 mots ( 16 bits ) en partant de l'adresse E800H à E804H, aux adresses F000H à F004H. Cette instruction peut durer très longtemps si le nombre de mots à déplacer est important. Au cas où une interruption intervient pendant ce temps, elle ne sera servie qu'à la fin de l'instruction ce qui peut être intolérable. A cet effet, le constructeur a prévu une variante, soit: BMOVI lreg,wreg ♦ 43H 42H 41H 40H F0H 00H E8H 00H 20H 05H le fonctionnement est le même, mais l'instruction est interruptible RAM INTERNE REGISTRE MODE FAIBLE CONSOMMATION IDLPD #Valeur ♦ lorsque le micro-contrôleur exécute cette instruction, il se met en mode " standby ". C'est-à-dire qu'il libère certains bus, désactive certaines fonctions et passe en faible consommation. Pour plus de détail, voir le data book. TEST MSB REEL NORML lreg,breg Utilisée en arithmétique sur nombre réel. Décale à gauche lreg jusqu'à ce que le MSB = 1 . Le nombre de décalages est rangé dans breg. Si lreg = 00000000000000, au bout de 31 décalages, le micro-contrôleur passe à l'instruction suivante. SAUT COMPLEXE TIJMP TBASE,[INDEX],# INDEX_MASK ♦ cette instruction permet de faire un saut ( JMP ) à une adresse définie par une table ( T ) et identifiée par un index ( I ), d'où l'appellation. les 3 opérandes définissent: N+6 N+4 N+2 N Adresse Dest 3 Adresse Dest 2 Adresse Dest 1 Adresse Dest 0 ♦ TBASE est un wreg, qui contient l'adresse de début de la table des sauts ( adresse N ) ♦ [ INDEX ] est un wreg, qui contient l'adresse d'un opérande 8 bits servant d'index pour explorer la table. ♦ # INDEX_MASK est une donnée immédiate sur 8 bits servant de masque à l'index. TABLE DES SAUTS Le saut relatif dans la table est calculé comme suit par le micro-contrôleur: OFFSET = 2 * [[ INDEX ] AND INDEX_MASK ] Adresse Dest = TBASE + OFFSET. Annexe page n° 18 TBASE LISTE DES INSTRUCTIONS ADDITION ADD Dest,Src .........................................................................................................9 ADD Dest,Src1,Src.................................................................................................9 ADDC Dest,Src.......................................................................................................9 ET AND Dest,Src .........................................................................................................12 AND Dest,Src1,Src.................................................................................................12 BRANCHEMENTS CONDITIONNELS BC Saut ..................................................................................................................15 BNC Saut................................................................................................................15 BE Saut ..................................................................................................................15 BNE Saut................................................................................................................15 BGE Saut................................................................................................................15 BGT Saut................................................................................................................15 BLE Saut ................................................................................................................15 BLT Saut.................................................................................................................15 BH Saut ..................................................................................................................15 BNH Saut................................................................................................................15 BNST Saut..............................................................................................................15 BST Saut ................................................................................................................15 BNV Saut................................................................................................................15 BV Saut ..................................................................................................................15 BNVT Saut..............................................................................................................15 BVT Saut ................................................................................................................15 BBS breg,bit_n°,Saut..............................................................................................15 BBC breg,bit_n°,Saut .............................................................................................15 BRANCHEMENTS INCONDITIONNELS BR Saut ..................................................................................................................15 BR [wreg]................................................................................................................15 DEPLACEMENT DE BLOQUE DE DONNEES BMOV lreg,wreg .....................................................................................................18 BMOVI lreg,wreg ....................................................................................................18 APPELS SOUS PROGRAMME CALL Saut ..............................................................................................................17 MISE A ZERO CLR Dest ................................................................................................................13 MISE A ZERO DU BIT CARRY CLRC......................................................................................................................13 MISE A ZERO DU BIT VT Annexe page n° 19 CLRVT....................................................................................................................13 COMPARAISON CMP Dest,Src.........................................................................................................12 DECREMENTATION ET BRANCHEMENT SI RESULTAT NON NUL DBNZ Dest,Saut .....................................................................................................13 DECREMENTATION DEC Dest................................................................................................................13 INTERDICTION DES INTERRUPTIONS DI ............................................................................................................................16 DPTS ......................................................................................................................16 DIVISION DIV Dest,Sr.............................................................................................................11 DIVU Dest,Src ........................................................................................................11 VALIDATION DES INTERRUPTIONS EI ............................................................................................................................16 EPTS ......................................................................................................................16 EXTENSION DE SIGNE EXT Dest ................................................................................................................11 MODE FAIBLE CONSOMMATION IDLPD #Valeur........................................................................................................18 INCREMENTATION INC Dest .................................................................................................................12 CHARGEMENT LD Dest,Src ............................................................................................................16 LDBSE Dest,Src .....................................................................................................16 LDBZE Dest,Src .....................................................................................................16 MULTIPLICATION MUL Dest,Src .........................................................................................................10 MUL Dest,Src1,Src.................................................................................................10 MULU Dest,Src.......................................................................................................10 MULU Dest,Src1,Src ..............................................................................................10 CHANGEMENT DE SIGNE NEG Dest ...............................................................................................................11 PAS NOT Dest ...............................................................................................................12 OPERATION NULLE NOP........................................................................................................................17 TEST MSB REEL Annexe page n° 20 NORML lreg,breg ...................................................................................................18 OU OR Dest,Src ...........................................................................................................12 EMPILAGE/DEPILAGE D'INFORMATIONS PUSHF ...................................................................................................................17 POPF......................................................................................................................17 PUSHA ...................................................................................................................17 POPA......................................................................................................................17 PUSH "Adresse".....................................................................................................17 POP "Adresse" .......................................................................................................17 RETOUR SOUS PROGRAMME RET ........................................................................................................................17 RESET SOFT RST ( reset soft ) ....................................................................................................16 MISE A UN DU BIT CARRY SETC ......................................................................................................................13 DECALAGE LOGIQUE SHL Dest,Src..........................................................................................................14 SHR Dest,Src .........................................................................................................14 DECALAGE ARITHMETIQUE A DROITE SHRA Dest,Src.......................................................................................................14 OPERATION NULLE SKIP breg ...............................................................................................................17 RANGEMENT ST Src,Dest ............................................................................................................16 SOUSTRACTION SUB Dest,Src .........................................................................................................9 SUB Dest,Src1,Src .................................................................................................9 SUBC Dest,Src.......................................................................................................9 SAUT COMPLEXE TIJMP TBASE,[INDEX],# INDEX_MASK ...............................................................18 ECHANGE XCH Dest,Src .........................................................................................................14 OU EXCLUSIF XOR Dest,Src .........................................................................................................12 Annexe page n° 21