Académique Documents
Professionnel Documents
Culture Documents
branchement
1- Modes d’adressage indirect:
Post-incrémenté et pré-décrémenté
A- Indirect Post-incrémenté (An)+:
* L’opération s’effectue sur l’opérande [[An]]
* Puis incrémentation de An: Le contenu de An va être
incrémenté comme suit:
[An]+1 et remis dans An si taille B
[An]+2 et remis dans An si taille W
[An]+4 et remis dans An si taille L
Exp:
CLR.W (A4)+ Avant exécution: [A4]=$2800
Et le résultat d’exécution:
$27FC 00
Après exécution: [A4]=$27FC
Rq Importante: Pour (A7)+ et –(A7), 00
quand la taille est B, 00
l’incrémentation ou la
décrémentation s’effectuent sur 2 00
unités B ≡ W $2800
2- Instructions de comparaison
B [Dn]-source, le résultat n’est pas
CMP. W source, Dn sauvegardé, mais il affecte, cependant,
L les flags
Idem CMP.
CMPA. W source, An Si la taille de source est W Extension
L à L puis comparaison car la dest est
B reg d’adr
CMPI. W #data, dest
L
B N’utilise que ce mode d’adressage
CMPM. W (An)+,(Am)+ indirect post-incrémenté. CMPMemory ou
L CMPMultiple.
B
TST. W dest Comparaison de dest avec la valeur immédiate
L "0 " ≡ CMPI #0,dest (dest – 0 )
3- Instructions de branchement:
A- Saut inconditionnel
JMP adresse (effective) Différence au niveau du
BRA adresse (relative) code machine
B- Saut conditionnel
cc = valeurs du tableau précédent
Bcc adresse
hormis F et T
adresse cc ?
oui
non
DBcc Dn,adresse
oui cc ?
non
DnW DnW -1
DnW = -1 ? non
adresse
oui
Cas particulier
DnW = -1 ? non
adresse
oui
Les différentes conditions de branchement pour les instructions Bcc et DBcc :
CC Si retenue à 0 C=0 Carry Clear
CS Si retenue à 1 C=1 Carry Set
EQ Si égal Z=1 EQual
NE Si non égal Z=0 Not Equal
GE Si supérieur ou égal NV NV = 1 Greater or Equal
GT Si supérieur NV Z NV Z = 1 Greater Than
HI Plus grand CZ =1 HIgh
LE Si inférieur ou égal Z NV NV =1 Less or Equal
LT Si inférieur NV NV =1 Little Than
LS Si plus petit C + Z =1 Low or Same
MI Si négatif N=1 MInus
PL Si positif N=0 Plus
VC Si pas de dépassement V=0 oVerflow Clear
VS Si dépassement V=1 oVerflow Set
F Si faux 0 never equal (False)
T Si vrai 1 always True
4- Exp :
Calcul de la moyenne m
de 100 nombres signés
codés sur 8 bits
adtab ↔ $2800 n0
99 n1
n i ni : nombre
n2
…
…
100 nbres
m i 0
signé. …
signés
100 n98
n99
$2900 m
Les ni sont rangés dans une
table de 100 cases mémoire
situées à l'adresse $2800, le
résultat est à ranger en $2900
m sur 8 bits.
1° Solution: Début Légende:
s: variable de travail
s←0 adr: pointeur d’adresse
Initialisation
adr ← adtab
ni
s ← s + [ adr ]
oui
adr adtab Test
+ 99 ?
non
s sur 16 bits D0
m ← s / 100
adr sur 32 bits A0
Fin
ORG $2400
CLR.W D0 s←0
LEA adtab,A0 ≡ MOVE.L #adtab, A0
boucle MOVE.B (A0)+, D1
EXT.W D1 Extension du contenu de D1 car signé
ADD.W D1,D0
CMPA.L #adtab+99,A0
? Si oui aller à boucle
BLS boucle sinon continuer
EXT.L D0 Ext de D0 sur L pour la division
DIVS #100,D0 XX XX D0
MOVE.B D0, $2900 m
I: Compteur
I ←99 ; s ← 0
Initialisation On utilise un compteur quand
adr ← adtab on connaît préalablement le
nbre d’itérations à faire
s ← s + [ adr ] ; adr ← adr + 1
I←I-1 Décrémentation
non
I = -1 ? Test
MOVE.B #9,D0
TRAP #15 Rq Importante: En utilisant DBF, le
adtab EQU $2800 registre contenant le compteur doit
END être sur 16 bits au moins