Suivez-nous sur X
|
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z,
ALL
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
A propos d'Obligement
|
|
David Brunet
|
|
|
|
Programmation : Assembleur - l'intérêt de l'Assembleur
(Article écrit par Little Zeus et extrait d'A-News (Amiga News) - septembre 1988)
|
|
Dans un premier temps, examinons l'intérêt de l'assembleur face aux autre langages.
Langage machine
Tout d'abord, signalons que tous les
langages sans exception, sont une traduction plus ou moins longue du langage machine. Il apparaît donc évident que le
langage machine est le plus rapide et le plus puissant de tous les langages puisque son exécution ne nécessite en aucun
cas quelque interpréteur ou compilateur dont le travail est souvent très long et peu efficace. Il se trouve que l'assembleur
est une traduction immédiate du langage machine. Nous tapons notre programme en assembleur, nous l'assemblons au moyen de
l'assembleur et nous obtenons du langage machine pur.
La mémoire
Nous ne verrons pas la configuration de l'Amiga, que nous pouvons trouver dans tous les livres fournis avec la machine.
Cependant, attardons-nous sur la mémoire que nous allons tenter de considérer différemment.
Nous avons peut-être toujours vu la mémoire comme un circuit électronique permettant de stocker des informations, mais pour
la facilité de compréhension de l'assembleur, nous allons, pour l'instant, la considérer comme un grand placard constitué de
milliers de tiroirs qui ne seront en fait rien d'autre que des cases mémoires. La programmation en assembleur ne consiste en
réalité en rien d'autre que changer le contenu de ses différents tiroirs en faisant par exemple passer le contenu de l'un dans
un autre. Précisons cependant que comme il existe dans le vie courante des tiroirs spécifiques aux chemises ou aux pantalons,
nous aurons des tiroirs spécifiques à l'écran ou au son...
Prenons l'exemple des tiroirs spécifiques à l'écran : lorsque nous rangerons des valeurs bien déterminées dans ces derniers, nous
aurons alors une image à l'écran.
0, 1 et bit
La définition que nous avons donnée de l'assembleur n'est toutefois pas bien précise et c'est à quoi nous allons essayer de
remédier dans ce paragraphe. L'Amiga, comme tous les ordinateurs ne comprend que les 1 et les 0, le courant passe ou ne passe
pas (système binaire). Comme il nous était bien difficile à nous, pauvres humains que nous sommes, de comprendre ce langage,
nous avons tout d'abord décider de regrouper ces signaux électriques ou bits par groupes de quatre pour en former des nombres. Avec quatre
chiffres ne pouvant être que des 1 ou des 0, nous ne pouvons créer que seize nombres différents d'où l'idée d'utiliser la base
hexadécimale dont les nombres sont les suivants : 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 ..." et ainsi jusqu'à l'infini.
Le grand intérêt du système hexadécimal est qu'à chaque chiffre hexadécimal correspond un quartet (ensemble de quatre bits). Si
nous ne travaillions qu'avec des nombres hexadécimaux, nous ferions du langage machine mais vu qu'il est très dur de se souvenir
de l'effet de chaque suite de nombres, nous utilisons un petit utilitaire, "l'assembleur" qui à chaque nombre instruction fait
correspondre un petit mot bien plus parlant et bien plus facile à retenir, la mnémonique.
Instruction et adresse
Mais alors, qu'est-ce qu'un nombre instruction et qu'est-ce qu'un nombre qui ne l'est pas ?
Lorsque l'ordinateur exécute un programme machine, il procède, pour le lire, de la façon suivante : tout d'abord il rencontre
un premier nombre hexadécimal qu'il considère comme un code instruction, ensuite il "regarde" le nombre suivant afin de savoir
à quels tiroirs cette instruction s'adresse à moins qu'il soit implicitement dit dans le mot instruction quels tiroirs elle
concernait. Nous venons de rencontrer le mot "adresse" qui possède exactement le même sens que le mot tiroir et donc du mot
case mémoire.
Appuyons-nous sur un exemple : 33 FC 00 04 00 00 10 00 correspond en assembleur à "Move #4, $1000" qui a pour effet de ranger
le nombre 4 dans la case mémoire $1000 où $1000 est un nombre en hexadécimal (ceci est spécifié par $ précédant le nombre).
Nous nous apercevons donc qu'il est quasiment impossible de se rappeler tous les codes instructions dans la mesure où il y
a 65 536 possibilités d'instructions différentes dont beaucoup sont vierges et qu'il est inimaginable (du moins pour moi) de
se souvenir de l'effet de chaque instruction. De plus, comme nous le verrons la prochaine fois, la même mnémonique en assembleur
s'écrit de centaines de façons différentes en langage machine suivant qu'elle est suivie d'un signe ou d'un autre.
Il est donc clair qu'en aucun cas le langage machine ne peut être programmé sans l'intermédiaire d'un quelconque assembleur.
Pour un premier cours d'assembleur, cela suffira. Assimilons tout ce qui a été vu dans ce numéro afin de voir de nouveaux horizons
le mois prochain : notamment différents modes d'adressages.
|