Guide explicatif sur l'annexe C des notes de cours de
GABRINI, Ph. -- Organisation des ordinateurs et assembleur.

En préliminaire: notions de langage machine et de langage d'assemblage.

Chapitre 3.3  Langage machine

Lire les pages 28 à 30.

Chaque instruction comprend un code opération qui indique l'opération que l'ordinateur doit exécuter.

exemple: 31 00 13 31 00 15 C1 00 13 71 00 15 E1 00 17 39 00 17 00 00 00 00 00 00 00


Chapitre 3.4 Langage d’assemblage

Lire les pages 30 et 31.

Un langage d'assemblage est une forme symbolique du langage machine; alors que le langage machine est
numérique, le langage d'assemblage permet l'utilisation de noms alphabétiques pour les codes
opérations et les opérandes en mémoire. Un programme appelé assembleur traduit un programme écrit
en langage d'assemblage en son équivalent en langage machine qui peut alors être exécuté par
l'ordinateur.

exemple: LDA nombre1,d

3.5 Traitement d’un programme en langage d’assemblage

Lire la page 31.

Explications se rapportant à la figure 3.9:

Le programme source PEP8 est traduit en langage machine (opération "assemble") et le programme objet ainsi obtenu
est rangé dans un fichier; une liste d'assemblage ("listing") est produite. La seconde phase de traitement est la phase de
chargement et d'édition de liens; le programme objet est placé en mémoire centrale, les divers modules
nécessaires à son exécution sont également chargés en mémoire et les liaisons entre les divers modules
sont établies. La troisième phase du traitement est l'exécution du programme proprement dite (opération "run source")
qui peut utiliser des données et qui produit des résultats (fenêtre output).

3.6 Assemblage

Lire les pages 31 et 32.

3.7 Chargement et exécution

Lire les pages 33 et 34.

Le système d'exploitation est toujours chargé à l'adresse 0.
Par la suite, le programme objet sera placé en mémoire à l'adresse de la zone de mémoire disponible.
Exemple: si le programme commence à l'adresse physique 1320, la première instruction du
programme (d'adresse relative zéro) sera placée à l'adresse 1320 et les instructions suivantes aux
adresses qui suivent. La figure 3.11 illustre ce processus de chargement du programme objet.

 

Annexe C. Les 39 instructions de PEP8

Page 235.

Nous allons faire un rapide survol des principales instructions de PEP8:

1) Arrêt du programme:

STOP Arrête l'exécution du programme

Instruction obligatoire qui apparaît à la fin des instructions du programme.
 

2) Branchements:

BR   Branchement inconditionnel
BRLE Branchement si inférieur ou égal
BRLT Branchement si inférieur
BREQ Branchement si égal
BRNE Branchement si non égal
BRGE Branchement si supérieur ou égal 
BRGT Branchement si supérieur 
BRV  Branchement si débordement
BRC  Branchement si retenue

Equivalent à un GOTO si la condition est vraie.
 

3) Opérations logiques:

NOT NON bit-à-bit du registre
NEG Opposé du registre
ASL Décalage arithmétique à gauche du registre
ASR Décalage arithmétique à droite du registre
ROL Décalage cyclique à gauche du registre
ROR Décalage cyclique à droite du registre
 

4) Opérations (pas d'opération):

NOPn Interruption unaire pas d'opération (NOP0 à NOP7)
NOP  Interruption non unaire pas d'opération

Ne produit rien.


5) Entrée/sortie:

DECI  Interruption d'entrée décimale 
DECO  Interruption de sortie décimale
STRO  Interruption de sortie de chaîne
CHARI Lecture caractère 
CHARO Sortie caractère

Pour lire/écrire au terminal. 
 

6) Opérations mathématiques et logiques:

ADD  Addition au registre
SUB  Soustraction au registre 
AND  ET bit-à-bit du registre 
OR   OU bit-à-bit du registre 
CP   Comparer registre 

Il n'y a pas d'opération pour la multiplication et la division.
Il va falloir les inventer.

 

7) Déplacement:

LD      Placer(copier) 1 mot (2 octets) dans registre
LDBYTE  Placer(copier) 1 octet dans registre (0-7)
ST      Ranger(copier) registre dans 1 mot (2 octets) 
STBYTE  Ranger(copier) registre bits(0-7) dans 1 octet 

Les calculs s'effectuent dans les registres.

 

Extraits du chapitre 2. Structure et fonctionnement d’un ordinateur

2.3.1 Les registres

Les instructions utilisent généralement l'information qui se trouve dans les registres du processeur.
Nous verrons les utilisations qu'on peut faire de ces registres en détail dans les chapitres ultérieurs
mais nous pouvons dès maintenant les énumérer. Les processeurs modernes possèdent un certain
nombre de registres pouvant avoir des rôles bien définis. Ainsi, on peut avoir 16 ou 32 registres,
généralement de 32 bits, pouvant appartenir à deux catégories : registres d’index et registres de
calcul. Pour PEP8, il n’existe que deux registres : le registre X peut être utilisé comme accumulateur
ou comme registre d'index, tandis que le registre A ne peut être utilisé que comme accumulateur.
 

 

xxxxxxxx xxxxxxxx

15       7      0

Les 16 bits des registres sont numérotés de 0 à 15 de droite à gauche. Le bit le moins significatif (bit
de droite) porte le numéro zéro, tandis que le bit le plus significatif (bit de gauche) porte le numéro 15.
Certaines instructions ne manipulent qu’une partie du registre comme un octet qui est alors
nécessairement l'octet le moins significatif du registre.

Avec les nombres signés, le bit 15 est le bit de signe (0-positif,1-négatif).


Directives de PEP8


Page 235.


.BYTE     Réserve 1 octet mémoire avec valeur initiale.
.WORD     Réserve 1 mot mémoire avec valeur initiale.
.BLOCK    Réserve un nombre d’octets mis à zéro.
.ASCII    Réserve l’espace mémoire pour une chaîne de caractères (ex: "Chaîne").
.ADDRSS   Réserve 1 mot mémoire pour un pointeur.
.EQUATE   Attribue une valeur à une étiquette.
.END      Directive obligatoire de fin d’assemblage qui doit être à la fin du code.
.BURN     Habituellement, un programme débute à l’adresse zéro. Avec .BURN,
          le programme se terminera à l’adresse spécifiée par l’opérande.

Ce sont des déclarations pour réserver de l'espace mémoire que nous approfondirons prochainement.

Codes ASCII importants (hexadécimaux)

Page 235.

Code ASCII Caractères
00         Caractère NUL
0A         Caractère de saut de ligne sur PEP8 (ENTREE)
20         Espacement ' '
30         Premier chiffre '0'
41         Premier caractère alphabétique majuscule 'A'
61         Premier caractère alphabétique minuscule 'a'

Si on mémorise que A c'est 4116, alors on peut facilement trouver la valeur des autres lettres de l'alphabet.
Si on ajoute 2016 alors on retrouve la lettre minuscule correspondante.