Imprimer
Affichages : 29897

Vote utilisateur: 4 / 5

Etoiles activesEtoiles activesEtoiles activesEtoiles activesEtoiles inactives
 

NSI - Numérique et Sciences Informatiques


Mémoire et langage machine


En son coeur, la machine effectue des calculs à partir d'instructions simples en binaire qui peuvent être directement traduites dans un langage, l'assembleur.
L'assembleur prend, traite et remplit des cases mémoires.

Avant de consultez cette page, il est conseillé de lire celle consacrée à l'architecture de von Neumann.

 

I. Organisation de la mémoire

I.1. Les différents types de mémoire

Il existe de nombreux mécaniques de mémoires qui se distinguent par leur durabilité (volatile ou permanente), leur mode d'accès (par adresse ou dans l'ordre de rangement).

Mémoire vive RAM (Random Acces Memory)

memoire vive RAM
Deux barrettes de mémoire de 512 Mio chacune

Mémoire morte ROM (Read-Only Memory )

memoire ROMROM (Read-Only Memory)

I.2. Les registres

Instruction LOAD

Noms de registres

 

I.3. Mémoires centrales et mémoire cache

La mémoire centrale : RAM (Random Acces Memory)

 

La mémoire cache

registres

 

II. Assembleur et jeu d'instructions

II.1. L'assembleur

01ebe814063727473747566662e6305f5f43544f525f4c
5f05f5f44544f525f4c4953545f5f05f5f4a43525f4c49
53545f5f05f5f646f5f676c6f62616c5f64746f72735f6
75780636f6d706c657465642e36353331064746f725f69

add $t7, $t3 , $sp

II.2. Instructions et assembleur

Il y a trois types d’instructions

  1. instructions de transfert entre registres et mémoire
    • chargement
    • sauvegarde
  2. instructions de calcul
    • additions, multiplications
    • opérations logiques
    • comparaisons, sauvegarde
  3. instructions de saut
    • sauts inconditionnels
    • sauts conditionnels
    • sauvegarde
  4. appels système

 

II.3. Exemples d'assembleurs

 Il existe plusieurs logiciels premattant de programmer en assembleur, citons :

De nombreux assembleurs coexistent et les instructions diffèrent donc de l'un à l'autre mais beaucoup de fonctions sont communes.

 

II.3.1. Sur l'émulateur MARS par exemple

Exemple 1 : avec MARS (téléchargeable ici)

Ecrire ces ligne puis cliquer sur RUN / Assemble

la  $t1,3   
addi $t2,$t1,5

Cela revient à :

Mars nous donne le conversion de ces instructions :

assembleur mars1

 

II.3.2. Sur l'émulateur  de CPU :  http://www.peterhigginson.co.uk/AQA/.

 sim cpu

Dans ce simulateur :

 Le CPU

Dans la partie centrale du simulateur, nous allons trouver en allant du haut vers le bas :

 

Exemple 2

MOV R0,#42
STR R0,150
HALT

Ses instructions signifient :

 

assembleur peterhigginson1

L'assembleur a converti les 3 lignes de notre programme en instructions machines,

Pour avoir une idée des véritables instructions machines, vous devez repasser à un affichage en binaire (bouton "OPTION"->"binary"). Vous devriez obtenir ceci :

 assembleur peterhigginson2

On remarque que l'octet de droite de l'instruction machine "11100011 10100000 00000000 00101010", soit, (00101010)2, est bien égale à (42)10

 

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.

 assembleur peterhigginson3

Exemple 3

Effectuer les instructions suivantes et commentez-les :

MOV R0,#10
MOV R1,#20
ADD R2,R1,R0
ADD R2,R2,#5

 

Remarque : L'instruction pour effectuer une addition est : ADD R2,R0,R1 (place dans R2 le résultat de R0+R1)

 

 

II.3. Exercices

Pour faire d'autres exercices 

 

Compléments

 

Articles Connexes