Académique Documents
Professionnel Documents
Culture Documents
Séquence 2
TD assembleur
CMP #80, R1 Comparer #80 et R1, si #80 différent de R1, allez dans endif
BNE endif
CMP RO, R1 Compare la valeur stockée dans le registre R0 et la valeur stockée dans le registre R1.
SUB R1, 128,R0 Soustrait le nombre 128 de la valeur stockée dans le registre R0, place le résultat dans le
registre R1.
CMP, R0,42 Si la valeur stockée dans le registre R0 est différente de 42 alors la prochaine instruction à
exécuter se situe à l’adresse mémoire 85.
BNE, 85
CMP,R3,23 La prochaine instruction à exécuter se situe au niveau else du programme si la valeur
stockée dans le registre R0 est plus petit que 23.
BLT else
À quoi sert le premier HALT ? Il sert a arrêter le programme et se déplacer dans monLabel
n° adress opérations,
contenu
ligne e comparaisons
1 R0 deplacer 4
2 30 stocke R0
3 R0 déplacer 8
75 Stocke R0
4
RO
5 Charger Adresse 30
Else Comparer 10
6
RO Si différent 9
7
8 RO Déplacer R0
9 75 Stocker R0
1) Remplir le tableau ci-contre permettant
d'analyser ligne par ligne le programme en Endif Prochaine
10 instruction :endif
assembleur.
else Sinon
11
2) Établir une correspondance entre les lignes du (etiquette)
programme en Python et les lignes du programme 12 R0 Charger Adresse 30
en assembleur. 13 R0 Additioner 1
Les variables sont représentés par RAM 0, les
14 30 Stocker R0
contenus sont les valeurs précédés d’un #
Le if est ici « CMP », 15 Endif Dans endif 6
16 R0 Déplacer R0
3) À quoi sert la ligne "B endif" ? À quoi
17 23 Stocker
correspondent les adresses mémoires 23, 75 et 30
Ceci indique que la prochaine instruction se 18 stopper
déroulera dans la partie B endif ?
Exercice 6 : On suppose qu'une valeur est déjà dans la case mémoire 0 et une autre dans la case
mémoire 1. Écrire un programme qui lit la valeur de la mémoire 1 puis la compare à celle de la mémoire 0
et si elle est plus grande ou égale, écrit cette valeur dans la case mémoire 2.