Electronique numeriq..

publicité
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
Téléchargement