Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

TP Assembleur

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 5

TP ARCHITECTURE DES ORDINATEURS – LANGAGE ASSEMBLEUR

Nom : Sarthal Prénom : Christina Classe : 1G3

1. Introduction :

Un programme écrit dans un langage de haut niveau (comme Python) éloigné du langage machine (dit
de bas niveau) dépend le moins possible du processeur et du système d’exploitation.

Si on ouvre un fichier exécutable avec un éditeur (hexadécimal), on obtient :

01ebe814063727473747566662e6305f5f43544f525f4c
5f05f5f44544f525f4c4953545f5f05f5f4a43525f4c49
53545f5f05f5f646f5f676c6f62616c5f64746f72735f6
75780636f6d706c657465642e36353331064746f725f69

C’est une suite d’instructions comme 01ebe814, que l’on peut traduire directement de façon plus lisible :

add $t7, $t3 , $sp

C’est ce qu’on appelle l’assembleur. L’assembleur est donc une représentation du langage machine.
Il y a autant d’assembleurs que de types de processeurs différents.

2. Instructions et assembleur :

Chaque assembleur a son propre jeu d’instructions, qui utilisent des mnémoniques (ADD, MOV ...).
Il y a quatre grands types d’instructions :
Les instructions de Les instructions de Les instructions de Les appels système.
transfert entre registres calcul : saut :
et mémoire :  additions,  sauts
 chargement, multiplications, inconditionnels,
 sauvegarde.  opérations  sauts
logiques, conditionnels,
 comparaisons,  sauvegarde.
sauvegarde.

3. Programmer en assembleur :

Il existe plusieurs logiciels de simulation permettant de programmer en assembleur.


Dans ce TP nous allons utiliser le simulateur de Peter L. Higginson.

Allez à l’adresse : http://www.peterhigginson.co.uk/AQA/. Vous devez obtenir ceci :

1er NSI LPO POINTE-NOIRE


Programme 1 : Dans la partie gauche, saisir ces 3 lignes de code en assembleur :

Cliquez sur le bouton Submit.

Vous devriez voir apparaitre des nombres comme ci-dessous dans les cellules mémoires 000, 001 et
002 :

L’assembleur a fait son travail, il a converti les 3 lignes de notre programme en instructions machines, la
première instruction machine est stockée à l’adresse mémoire 000 (elle correspond à MOV R0,#42 en
assembleur), la deuxième à l’adresse 001 (elle correspond à STR R0,150 en assembleur) et la
troisième à l’adresse 002 (elle correspond à HALT en assembleur).

Pour avoir une idée des véritables instructions machines, vous devez repasser à un affichage en
binaire. Vous devriez obtenir ceci :

Repassez à un affichage en base 10 afin de faciliter la lecture des données présentes en mémoire.

Pour exécuter notre programme, il suffit maintenant de cliquer sur le bouton . Vous allez voir le
CPU travailler en direct grâce à de petites animations.
Si cela va trop vite (ou trop doucement), vous pouvez régler la vitesse de simulation à l’aide des
boutons << >>.

1er NSI LPO POINTE-NOIRE


Un appui sur le bouton met en pause la simulation, si vous appuyez une deuxième fois sur ce
même bouton , la simulation reprend là où elle s’était arrêtée.
Une fois la simulation terminée, vous pouvez constater que la cellule mémoire d’adresse 150, contient
bien le nombre 42 (en base 10).
Vous pouvez aussi constater que le registre R0 a bien stocké le nombre 42.

ATTENTION : pour relancer la simulation, il est nécessaire d’appuyer sur le bouton afin de
remettre les registres R0 à R12 à 0, ainsi que le registre PC (il faut que l’unité de commande pointe de
nouveau sur l’instruction située à l’adresse mémoire 000).
La mémoire n’est pas modifiée par un appui sur le bouton , pour remettre la mémoire à 0, il faut

cliquer sur le bouton et choisir . Si vous remettez votre mémoire à 0, il


faudra cliquer sur le bouton avant de pouvoir exécuter de nouveau votre programme.

Programme 2 : Modifiez le programme précédent pour qu’à la fin de l’exécution on trouve le nombre 54
à l’adresse mémoire 50. On utilisera le registre R1 à la place du registre R0. Testez vos modifications
en exécutant la simulation.

MOV R1, #54


STR R1, 50
Votre réponse ici : HALT

Programme 3 : Faites en sorte que dans la mémoire 100, il y ait le résultat de la somme de 42 et 54.
L’instruction pour effectuer une addition est : ADD R2,R0,R1 (place dans R2 le résultat de R0+R1)

MOV R0, #42


STR R0, 150
MOV R1, #54
Votre réponse ici : STR R1, 50
ADD R2,R0,R1
STR R2, 100
HALT

Programme 4 : Additionner les 3 nombres 50, 42 et 54, en n’utilisant que les deux registres R0 et R1.

MOV R0, #42


MOV R1, #50
ADD R0,R0,R1
Votre réponse ici : STR R0, 90
MOV R1, #54
ADD R1,R0,R1
STR R1, 100
HALT

1er NSI LPO POINTE-NOIRE


On souhaite calculer 25. Il n’y a pas d’instruction "multiplier", il faut se débrouiller avec des additions.
Voici un programme, qui à l’aide d’une boucle, calcule 2 5. (Et aussi grâce au fait que 2 + 2 = 4 = 22, 4 +
4 = 8 = 23, 8 + 8 = 16 = 24, etc.)

n° Instruction Commentaire
0 MOV R0,#2 On place le nombre 2 dans le registre R0
1 MOV R1,#1 On place le nombre 1 dans le registre R1 (ce sera le compteur de boucle)
2 B maboucle B signifie « Branch » et maboucle est un label ou étiquette
maboucle: B maboucle renvoie l’exécution à maboucle :
3 ADD R0,R0,R0 On stocke dans R0 le résultat de l’addition de R0 avec R0
4 ADD R1,R1,#1 On stocke dans R1 le résultat de l’addition de R1 avec 1 : on incrémente le compteur
de 1
5 CMP R1,#5 On compare R1 avec 5 (CMP – comparaison)
6 BNE maboucle S’ils ne sont pas égaux (NE – not equal), on relance maboucle
7 STR R0,100 On stocke le résultat dans la mémoire 100
8 HALT On stoppe le programme

Programme 5 : Modifiez le programme pour qu’il calcule 2 10.

0 MOV R0, #2
1 MOV R1, #1
2 B maboucle
maboucle:
3 ADD R0,R0,R0
Votre réponse ici : 4 ADD R1,R1,#1
5 CMP R1,#10
6 BNE maboucle
7 STR R0, 100
8 HALT

Programme 6 : Trouvez ce que fait le programme suivant. Vérifiez avec le simulateur

Votre réponse ici :


Ce programme permet de multiplier un nombre.

1er NSI LPO POINTE-NOIRE


Programme 7 : Trouvez ce que fait le programme suivant. Vérifiez avec le simulateur

Votre réponse ici :

Ce programme permet de soutraire un nombre.

Programme 8 : Traduire en assembleur le programme Python ci-dessous :

Votre réponse ici :

1er NSI LPO POINTE-NOIRE

Vous aimerez peut-être aussi