Modes d'adressage en Assembleur 68000
Modes d'adressage en Assembleur 68000
ASSEMBLEUR 68000
Chapitre 03 :
l’Assembleur du
MC68000
Professeur : JAMAL ELHACHMI
E-mail : [email protected]
Le langage machine ou code machine est la suite de bits qui est interprétée par le
processeur de l’ordinateur lors de l’exécution d’un programme.
programme
— C’est le langage natif du processeur, et le seul qui soit reconnu par celui-ci.
Chaque processeur possède son propre langage machine.
— Si un processeur A est capable d’exécuter toutes les instructions du processeur
B, on dit que A est compatible avec B. L’inverse n’est pas forcément vrai, A peut
avoir des instructions supplémentaires que B ne connaît pas.
J.ELHACHMI ASSEMBLEUR
1. Introduction
On peut imaginer la machine à partir d'une hiérarchie de niveaux, dans laquelle
chaque niveau a une fonction spécifique.
J.ELHACHMI ASSEMBLEUR
1. Introduction
J.ELHACHMI ASSEMBLEUR
1. Introduction
Dans sa forme générale une instruction peut avoir un ou deux opérandes et s’écrit :
Label < Code Instruction >.T < Opérande Source > < Opérande Destination >
où:
§ Label : est un mot alphanumérique (une étiquette) qui représente l’adresse de
l’instruction.
§ T : est la taille sur laquelle est exécutée l’instruction.
• B : 8 bits
• W : 16 bits
• L : 32 bits
Exemple:
MOVE D3,D5
J.ELHACHMI ASSEMBLEUR
1. Introduction
Exemple:
Dans sa syntaxe générale un programme en assembleur 68000 s’écrit :
ORG : indique au logiciel à partir de quelle adresse
placer le code machine.
J.ELHACHMI ASSEMBLEUR
1. Introduction
J.ELHACHMI ASSEMBLEUR
1. Introduction
J.ELHACHMI ASSEMBLEUR
1. Introduction
Exemple : construire le de l’ Op-code d’une instruction
MOVE D3,D5
1 1
SCROLL DOWN
J.ELHACHMI ASSEMBLEUR
1. Introduction
Exemple : construire le de l’ Op-code d’une instruction
1 1 1 0 1
SCROLL DOWN
J.ELHACHMI ASSEMBLEUR
1. Introduction
Exemple : construire le de l’ Op-code d’une instruction
MOVE D3,D5
1 1 1 0 1 0 0 0
SCROLL DOWN
J.ELHACHMI ASSEMBLEUR
1. Introduction
Exemple : construire le de l’ Op-code d’une instruction
1 1 1 0 1 0 0 0 0 1 1
1 1 1 0 1 0 0 0 0 0 0 0 1 1
Et donc :
= $3A03
J.ELHACHMI ASSEMBLEUR
2.les modes d’adressage
Le mode d'adressage explique comment on peut obtenir la référence pour aller chercher
une donnée. La donnée peut être dans les registres A0-A7, D0-D7, PC, dans la mémoire
dont l'adresse est fournie dans le code opératoire ou dans la mémoire mais pointé par
Ai, etc.
C’est le type de donnée contenu dans le champ opérandes qui caractérise le mode
d'adressage.
Le MC68000 permet 14 modes d’adressage, dont les principaux sont les suivants :
2. 1- Adressage registre
L’opérande dans ce cas est un registre d’adresse ou de donnée.
MOVE D0,D1
Exemple :
J.ELHACHMI ASSEMBLEUR
2.les modes d’adressage
Exemple : registres de données
Memory
MOVE D0,D1
0 0 0 0 0 0 0 0
J.ELHACHMI ASSEMBLEUR
2.les modes d’adressage
Exemple : registres de données
Memory
MOVE D0,D1
0 0 0 0 3 2 1 0
J.ELHACHMI ASSEMBLEUR
2.les modes d’adressage
Exemple : registres de données
Memory
MOVE D0,$FF9000
0 0 0 0 3 2 1 0 3 2 $FF9000
1 0 $FF9001
J.ELHACHMI ASSEMBLEUR
2.les modes d’adressage
Exemple : registres d’adresses
J.ELHACHMI ASSEMBLEUR
2.les modes d’adressage
Exemple:
MOVE.B $F0, $FF9001
Écrit la donnée F0 à l'adresse FF9001.
Exemple :
CLR.B $5000 ; Remise à zéro (8 bits) de la case mémoire (5000 )16
J.ELHACHMI ASSEMBLEUR
2.les modes d’adressage
MOVE.B $2000,D0
J.ELHACHMI ASSEMBLEUR
2.les modes d’adressage
NOT.B $0FF8000
J.ELHACHMI ASSEMBLEUR
2.les modes d’adressage
2. 3- Adressage immédiat
Dans ce cas la valeur est spécifiée directement dans l’instruction précédée par
le symbole #.
MOVE.W #523,D0
le mot de poids faible de D0 est initialisé avec 523.
J.ELHACHMI ASSEMBLEUR
2.les modes d’adressage
2. 3- Adressage immédiat
Dans ce cas la valeur est spécifiée directement dans l’instruction précédée par le
symbole #.
MOVE.W #523,D0
le mot de poids faible de D0 est initialisé avec 523.
Exemple :
MOVE.B #100,D0 D0 (100 )10
MOVE.B #$64,D0 D0 (100 )10
MOVE.B #%01100100,D0 D0 (100 )10
J.ELHACHMI ASSEMBLEUR
2.les modes d’adressage
Remarquer que :
Le mode immédiat accepte aussi le code ASCII
MOVE.L #’face’ ,D1 D1 (66616365 )16
MOVE.L #’FACE’ ,D1 D1 (46414345)16
J.ELHACHMI ASSEMBLEUR
2.les modes d’adressage
Remarque:
Dans la plupart des cas, lorsque l’instruction porte sur un mot qui doit être reçu par un
registre d’adresses, il y a extension du bit de signe. L’extension du signe consiste à
recopier dans les bits 16 à 31 la valeur du bit de signe du résultat c’est à dire le bit 15.
J.ELHACHMI ASSEMBLEUR
2.les modes d’adressage
Remarque:
Dans la plupart des cas, lorsque l’instruction porte sur un mot qui doit être reçu par un
registre d’adresses, il y a extension du bit de signe. L’extension du signe consiste à
recopier dans les bits 16 à 31 la valeur du bit de signe du résultat c’est à dire le bit 15.
J.ELHACHMI ASSEMBLEUR
2.les modes d’adressage
Prob : les registres d’adresse sont des pointeurs et sont utilisés pour adresser la
mémoire. Contrairement au cas des registres de donnée, tous les 32 bits de ces
registres vont être affectés à la suite d’une opération.
Des opérations sur octet ne sont pas autorisées. Pour le mode d'adressage An, la
taille des données doit être un mot ou un mot long.
Exemple:
MOVEA #$AB12,A0 Résultat dans A0 (FFFFAB12)16
MOVEA #$1234,A0 Résultat dans A0 (00001234)16
J.ELHACHMI ASSEMBLEUR
2.les modes d’adressage
2. 5- Adressage indirect simple:
Dans ce cas l’opérande est spécifié par son adresse mémoire contenu dans un registre
d’adresse.
Une mise entre parenthèses du registre d’adresse différencie ce mode du mode registre.
L’Adresse Effective = (An). Memory
Exemple : A0
LEA $2000,A0
00000000
002000
002001
J.ELHACHMI ASSEMBLEUR
2.les modes d’adressage
2. 5- Adressage indirect simple:
Dans ce cas l’opérande est spécifié par son adresse mémoire contenu dans un registre
d’adresse.
Une mise entre parenthèses du registre d’adresse différencie ce mode du mode registre.
L’Adresse Effective = (An). Memory
Exemple : A0
LEA $2000,A0
00002000
002000 FFFFFFFF
002001
J.ELHACHMI ASSEMBLEUR
2.les modes d’adressage
2. 5- Adressage indirect simple:
Dans ce cas l’opérande est spécifié par son adresse mémoire contenu dans un registre
d’adresse.
Une mise entre parenthèses du registre d’adresse différencie ce mode du mode registre.
L’Adresse Effective = (An). Memory
Exemple : A0
LEA adr,A2
00002000
A2
00003000
002000 FFFFFFFF
002001
003000 00000000
J.ELHACHMI ASSEMBLEUR
2.les modes d’adressage
2. 5- Adressage indirect simple:
Dans ce cas l’opérande est spécifié par son adresse mémoire contenu dans un registre
d’adresse.
Une mise entre parenthèses du registre d’adresse différencie ce mode du mode registre.
L’Adresse Effective = (An). Memory
Exemple : A0
CLR.W (A0)
00002000
002000 00000000
002001
J.ELHACHMI ASSEMBLEUR
2.les modes d’adressage
2. 5- Adressage indirect simple:
Dans ce cas l’opérande est spécifié par son adresse mémoire contenu dans un registre
d’adresse.
Une mise entre parenthèses du registre d’adresse différencie ce mode du mode registre.
L’Adresse Effective = (An). Memory
Exemple : A0
MOVE.B #FF,(A2)
00002000
A2
00003000
002000 FFFFFFFF
002001
003000 000000FF
J.ELHACHMI ASSEMBLEUR
2.les modes d’adressage
2. 5- Adressage indirect simple:
Dans ce cas l’opérande est spécifié par son adresse mémoire contenu dans un registre
d’adresse.
Une mise entre parenthèses du registre d’adresse différencie ce mode du mode registre.
L’Adresse Effective = (An). Memory
Exemple : A0
CLR.W (A0)
00002000
002000 00000000
002001
J.ELHACHMI ASSEMBLEUR
2.les modes d’adressage
2. 6- Adressage indirect post-incrémenté:
Il s’agit d’un mode d’adressage indirect, où le registre pointeur An est
incrémenté (après l’exécution de l’instruction) par un nombre n.
§ n=1 si l’opérande est un 8 bits (.B).
§ n=2 si l’opérande est un 16 bits (.W).
§ n=4 si l’opérande est un 32 bits (.L).
Exemple :
J.ELHACHMI ASSEMBLEUR
2.les modes d’adressage
2. 7- Adressage indirect pré-décrémenté :
Dans ce cas l’adresse de l’opérande est déterminée après une décrémentation
du registre d’adresse pointeur avec une valeur n (qui dépend de la taille de
l’opération) :
§ n=1 dans le cas de 8 bits.
§ n=2 dans le cas de 16 bits.
§ n=4 dans le cas de 32 bits.
Exemple :
J.ELHACHMI ASSEMBLEUR
2.les modes d’adressage
Exemple :
J.ELHACHMI ASSEMBLEUR
2.les modes d’adressage
Exemple :
J.ELHACHMI ASSEMBLEUR
2.les modes d’adressage
J.ELHACHMI ASSEMBLEUR
2.les modes d’adressage
J.ELHACHMI ASSEMBLEUR
2.les modes d’adressage
J.ELHACHMI ASSEMBLEUR
2.les modes d’adressage
2. 8- Adressage relatif PC :
Dans ce type d’adressage l’adresse effective est obtenue en ajoutant un offset
(un déplacement) à la valeur en cours du compteur programme PC.
L’offset est calculé par le logiciel assembleur pendant la compilation du
programme.
Exemple :
Dans l’exemple suivant deux constantes 32
bits sont définies à la fin du programme
avec la directive DC.L, et une zone
mémoire 32 bit est réservée avec la
directive DS.L L’accés aux trois zone
mémoire est réalisé relativement au
contenu du PC.
J.ELHACHMI ASSEMBLEUR
3. Codage des instructions
3.1 Format d’instructions
OP.x SRC,DST
J.ELHACHMI ASSEMBLEUR
3. Codage des instructions
3.2 Format de l ’instruction ADD
Champs de l’instruction
§ Champ registre -Spécifie un des huit registres de donnée.
§ Champ mode-op-
Champs de l’instruction
§ Champ Taille - spécifie la taille de l ’opérande devant être transféré :
01 - Opération sur Octet
11 - Opération sur Mot
10 - Opération sur long mot
§ Champ Adresse Effective Destination : spécifie l ’emplacement de destination.
Seules les adresses de données modifiables sont permis.
§ Champ Adresse Effective Source : spécifie l ’opérande source. Tous les modes
d ’adressage sont permis. Si la taille de l ’opérande est l’Octet, l ’adressage
direct des registres adresse n ’est pas permis.
J.ELHACHMI ASSEMBLEUR
3. Codage des instructions
3.3 Format de l ’instruction Bcc
(cc : code condition)
Champs de l’instruction
§ Champ condition - spécifie une des quatorze conditions :
Mnémonique Signification Condition
BCC retenue à zéro C= 0
BCS retenue à 1 C=1
BEQ Egal Z=1
BNE Différent Z=0
BGE plus grand ou égal N.V + N/.V/ = 1
BGT strictement supérieur (signé) N.V.Z/ + N/.V/.Z/ = 1
BHI plus grand (non signé) C/.Z/
BLE plus petit ou égal (signé) Z + N.V/ + N/.V = 1
BLS plus petit ou égal (non signé) C+Z=1
BLT strictement inférieur (signé) N.V/ + N/.V = 1
BMI strictement inférieur (non signé) N=1
BPL Positif N=0
BVC dépassement à zéro V=0
BVS dépassement à 1 V=1
J.ELHACHMI ASSEMBLEUR
3. Codage des instructions
3.3 Format de l ’instruction Bcc
(cc : code condition)
Champs de l’instruction
§ Champ condition - spécifie une des quatorze conditions
Champs de l’instruction
§ Champ condition - spécifie une des quatorze conditions
Exemples:
– MOVE D0,$2000 31C0 2000
– MOVE D0,$FF8000 33C0 00FF 8000
– MOVE $1000,$2000 31F8 1000 2000
J.ELHACHMI ASSEMBLEUR
4.Extensions aux instructions
4.2 Format de l’adressage Immédiat
Exemples:
– MOVE #2,D0 303C 0002
– MOVE.B #2,D0 103C 0002
– MOVE #$05,$FF8000 33FC 0005 00FF 8000
J.ELHACHMI ASSEMBLEUR
4.Extensions aux instructions
4.3 Format de l’adressage Indexé
§ Bit 15 :
– D/A = 0 le registre d’indexe et un registre de donnée
– D/A = 1 le registre d’indexe et un registre d’adresse
§ Bit 11 :
– W/L = 0 le registre d’indexe contient un mot dont le
signe doit être étendu à 32 bits
– W/L = 1 le registre d’indexe contient un long mot
J.ELHACHMI ASSEMBLEUR
4.Extensions aux instructions
4.3 Format de l’adressage Indexé
Exemples :
§ MOVE #$03,(A0,D0) 31BC 0003 0000
0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0 1 0 1
J.ELHACHMI ASSEMBLEUR
4.Extensions aux instructions
4.4 Format de l’adressage avec Déplacement
– MOVE $10(A0),$0FF8000
33E8 0010 00FF 8000
§ Indirect indexé avec déplacement
– CMP #$20,2(A0,D0)
0C70 0020 0002
J.ELHACHMI ASSEMBLEUR
4.Extensions aux instructions
4.5 Format de l’adressage relatif
3 cas de figures :
–Branchement relatif
–Adressage relatif au PC
–Adressage indexé relatif au PC
J.ELHACHMI ASSEMBLEUR
4.Extensions aux instructions
4.5 Format de l’adressage relatif
§ Branchement relatif
L’instruction est codé sur 1 à 2 Words
Exemples
$0FF7000 BRA LABEL
:
$0FF8000 LABEL
J.ELHACHMI ASSEMBLEUR
4.Extensions aux instructions
4.5 Format de l’adressage relatif
§ Adressage Relatif au PC & d16
$FF8000 MOVE TAB(PC),D1
NOP
NOP
$FF8008 NOP
$FF800A TAB DS 1
J.ELHACHMI ASSEMBLEUR
4.Extensions aux instructions
4.5 Format de l’adressage relatif
§ Adressage Relatif au PC & d16
$FF8000 LEA TAB(PC,A0),A1
$FF8004 NOP
$FF8006 NOP
$FF8008 NOP
$FF800A NOP
$FF800C TAB DS 1
43FB 800A
J.ELHACHMI ASSEMBLEUR
5. Jeux d’instructions
5 classes d’instructions :
–instructions de transfert de données
–instructions arithmétiques et logiques
–instructions de décalage et de rotation
–instructions de manipulation de bits
–instructions de contrôle de programme
J.ELHACHMI ASSEMBLEUR
5. Jeux d’instructions
5.1 Les instructions de transfert de données
J.ELHACHMI ASSEMBLEUR
5. Jeux d’instructions
5.1 Les instructions de transfert de données
B
MOVE. W Source , destination
L
La destination apriori ne peut pas etre un registre d’adresse. Dans le cas ou la source
est un registre d’adresse, la taille se limite à W et L.
La destination est un registre de donnée, et l’opérande source est une donnée 8 bits,
qui subit une extension de signe sur 32 bits.
J.ELHACHMI ASSEMBLEUR
5. Jeux d’instructions
5.1 Les instructions de transfert de données
J.ELHACHMI ASSEMBLEUR
5. Jeux d’instructions
5.1 Les instructions de transfert de données
J.ELHACHMI ASSEMBLEUR
5. Jeux d’instructions
5.1 Les instructions de transfert de données
Exemple :
J.ELHACHMI ASSEMBLEUR
5. Jeux d’instructions
5.1 Les instructions de transfert de données
Exemple : L’instruction MOVEM
J.ELHACHMI ASSEMBLEUR
5. Jeux d’instructions
5.1 Les instructions de transfert de données
Exemple : L’instruction MOVEM
MOVEM.W A0/A3/D1/D5,$0FF8000
J.ELHACHMI ASSEMBLEUR
5. Jeux d’instructions
5.1 Les instructions de transfert de données
Exemple : L’instruction MOVEM
MOVEM.L A1-A3/D3-D5,-(A7)
J.ELHACHMI ASSEMBLEUR
5. Jeux d’instructions
5.1 Les instructions de transfert de données
Exemple : L’instruction MOVEM
MOVEM.L (SP)+, D0-D7/A0-A6
J.ELHACHMI ASSEMBLEUR
5. Jeux d’instructions
5.2 Les instructions arithmétiques
J.ELHACHMI ASSEMBLEUR
5. Jeux d’instructions
5.2 Les instructions arithmétiques
Exemple :
Addition 64 bits de deux données stockées respectivement aux adresses adr1, et adr2,
avec un stockage du résultat à partir de l’adresse adr3:
J.ELHACHMI ASSEMBLEUR
5. Jeux d’instructions
5.2 Les instructions arithmétiques
J.ELHACHMI ASSEMBLEUR
5. Jeux d’instructions
5.2 Les instructions arithmétiques
Les instructions de Multiplication et de Division :
Dans le cas des opérations de multiplication et de division la taille des opérandes
est fixe.
La multiplication signée :
Dans les deux cas, les opérandes source et destination sont codés sur 16 bits (poids
faibles de l ’opérande), et le résultat tient sur 32 bits (d’un registre de donnée).
Dans le cas où les opérandes sont codés sur 8 bits, il est nécessaire de les
représenter sur 16 bits avant l’opération de multiplication :
§ par une extension de signe dans le cas signé.
§ par une remise a zéro de l’octet de poids fort dans le cas non-signé.
J.ELHACHMI ASSEMBLEUR
5. Jeux d’instructions
5.2 Les instructions arithmétiques
Les instructions de Multiplication et de Division :
Exemple :
J.ELHACHMI ASSEMBLEUR
5. Jeux d’instructions
5.2 Les instructions arithmétiques
Les instructions de Multiplication et de Division :
La division signée :
Dans les deux cas, l’opérande source est sur 16 bits, et l’opérande destination est
sur 32 bits .
Le résultat dans le registre de donnée est réparti en deux mots :
§ Les 16 bits de poids faibles : le quotient .
§ Les 16 bits de poids forts : le reste de la division entière
J.ELHACHMI ASSEMBLEUR
5. Jeux d’instructions
5.2 Les instructions arithmétiques
Addition décimale avec retenue :
J.ELHACHMI ASSEMBLEUR
5. Jeux d’instructions
5.2 Les instructions arithmétiques
Autres
J.ELHACHMI ASSEMBLEUR
5. Jeux d’instructions
5.3 Les instructions logiques
L’assembleur du MC68000 permet la réalisation des opérations logiques de base
(ET , OU , XOR , Complément). Ces instructions logiques ne manipulent jamais des
registres d’adresse.
J.ELHACHMI ASSEMBLEUR
5. Jeux d’instructions
5.3 Les instructions logiques
§ Des instructions de formes similaires réalisent le ‘OU’ logique, et le OU exclusif : OR;
ORI; EOR; EORI
§ NOT < AE > : réalise le complément à 1 du contenu de l’adresse effective.
En résumé :
Exemple :
J.ELHACHMI ASSEMBLEUR
5. Jeux d’instructions
5.4 Les instructions de comparaison
§ Les instructions de comparaison sont identiques à celle de soustraction, sauf que le
résultat n’est pas affecté à l’opérande destination, mais uniquement les flags (C,
N,Z, et V) du registre CCR qui sont modifiés.
§ Les instructions de comparaison du MC68000 permettent des opérations sur des
registres de donnée et d’adresse, des valeurs immédiates, et des données en
mémoire :
J.ELHACHMI ASSEMBLEUR
5. Jeux d’instructions
5.4 Les instructions de comparaison
Exemple : Mise à zéro d’une zone mémoire délimitée par deux pointeurs A0, et A1.
J.ELHACHMI ASSEMBLEUR
5. Jeux d’instructions
5.5 Les instructions de Branchement
Le jeu d’instructions du MC68000 dispose de deux types de branchement :
J.ELHACHMI ASSEMBLEUR
5. Jeux d’instructions
5.5 Les instructions de Branchement
Le jeu d’instructions du MC68000 dispose de deux types de branchement :
a. Le branchement inconditionnel
• On distingue les instructions qui utilisent un adressage absolu : JMP et JSR qui
permettent de transférer le contrôle du programme n ’importe où dans les 16 Mo d ’espace
d ’adressage du 68000.
JMP <étiquette>,
PC < - (<EA>)
JMP Le 68000 continue l'exécution du programme à l'adresse indiquée.
§ Taille des opérandes : non Définit
§ Mode d’adressage sauf Immédiat,
§ Flags du CCR : non affectées
J.ELHACHMI ASSEMBLEUR
5. Jeux d’instructions
5.5 Les instructions de Branchement
Le jeu d’instructions du MC68000 dispose de deux types de branchement :
a. Le branchement inconditionnel
• On distingue les instructions qui utilisent un adressage relatif par rapport à la valeur
courante du PC : BRA et BSR. Ce déplacement peut être court et codé sur un octet (-128 à
+127) ou long codé sur 2 octets (-32768 à + 32767).
BRA <étiquette>
PC <- PC + d , d en complément à 2
d : nombre d'instructions entre l'endroit du branchement et l'endroit où le programme
doit se brancher
L'instruction suivante qui sera exécutée est située à l'adresse (PC) + Etiquette
§ Taille opérande: Byte (B sur 1 octet) , Word (W sur 2 octets),
§ Modes d ’adressage : relatif par rapport à la valeur courante du PC
§ Flags du CCR : non affectés
J.ELHACHMI ASSEMBLEUR
5. Jeux d’instructions
5.5 Les instructions de Branchement
Le jeu d’instructions du MC68000 dispose de deux types de branchement :
a. Le branchement inconditionnel
Exemple de calcule de l’offset :
Exemple : assembler à la main le code suivant :
$1000 ….
….
$1030 BRA.B ...
$1032 ….
J.ELHACHMI ASSEMBLEUR
5. Jeux d’instructions
5.5 Les instructions de Branchement
Le jeu d’instructions du MC68000 dispose de deux types de branchement :
b. Le branchement conditionnel
BCC etiquette ; (CC : Condition Code) La condition du branchement dépend des
indicateurs du registre CCR (Registre de Codes Condition)
Par exemple :
BCC : (branch if carry clear) branchement si la retenu est zéro (bit c=0)
BCS : (branch if carry set) branchement si la retenu est 1 (bit c=1)
BEQ : (branch if equal) branchement en cas d’égalité (bit z=1)
BNE : (branch if not equal) branchement en cas d’inégalité (bit z=0)
J.ELHACHMI ASSEMBLEUR
5. Jeux d’instructions
5.5 Les instructions de Branchement
Le jeu d’instructions du MC68000 dispose de deux types de branchement :
b. Le branchement conditionnel
Exemple Détermination du nombre de caractère ‘A’ dans une chaine de 100 caractères
ascii situés en mémoire à partir de l’adresse MEM.
J.ELHACHMI ASSEMBLEUR
5. Jeux d’instructions
5.5 Les instructions de Branchement
Le jeu d’instructions du MC68000 dispose de deux types de branchement :
b. Le branchement conditionnel
Exemple Détermination du nombre de caractère ‘A’ dans une chaine de 100 caractères
ascii situés en mémoire à partir de l’adresse MEM.
J.ELHACHMI ASSEMBLEUR
5. Jeux d’instructions
5.6 Les instructions de décalage
Les instructions de décalage sont largement utilisées en arithmétique pour remplacer
les instructions de multiplication et division par des puissance de 2, vu qu’elles offrent
un temps d’exécution plus rapide que les instructions (MULU, MULS, DIVU, DIVS)
Rappel :
§ Dans le cas des entiers non signés :
• la multiplication par 2 équivaut à un décalage gauche par un bit,
en remplaçant le bit manquant par un zéro.
0111 7
× 0010 × 2
=1110 =14
• la division par 2 équivaut à un décalage droite par un bit, en
remplaçant le bit manquant par un zéro.
1000 8
÷ 0010 ÷ 2
=0100 =4
J.ELHACHMI ASSEMBLEUR
3. Jeux d’instructions
5.6 Les instructions de décalage
Les instructions de décalage sont largement utilisées en arithmétique pour remplacer
les instructions de multiplication et division par des puissance de 2, vu qu’elles offrent
un temps d’exécution plus rapide que les instructions (MULU, MULS, DIVU, DIVS)
Rappel :
§ Dans le cas des entiers signés (complément à 2) :
• La multiplication par 2 équivaux un décalage gauche par un bit, en
remplaçant le bit manquant par un zéro.
J.ELHACHMI ASSEMBLEUR
5. Jeux d’instructions
3.6 Les instructions de décalage
L’assembleur du MC68000 dispose de deux types d’instructions de décalage :
§ Le décalage logique (logical shift) : compatible à la division et la multiplication
non signées par 2 :
J.ELHACHMI ASSEMBLEUR
5. Jeux d’instructions
5.6 Les instructions de décalage
L’assembleur du MC68000 dispose de deux types d’instructions de décalage :
§ Le décalage arithmétique : compatible à la division et la multiplication signées
par 2 :
J.ELHACHMI ASSEMBLEUR
5. Jeux d’instructions
5.6 Les instructions de décalage
Exemple:
J.ELHACHMI ASSEMBLEUR
5. Jeux d’instructions
5.6 Les instructions de Rotation
La forme des instructions de rotation est similaire à celles des instructions de décalage,
Exemple assembleur:
ROL (A0)+
ROL #$01, D0
J.ELHACHMI ASSEMBLEUR
Merci pour votre attention