COURS 2.TXT/fr: Difference between revisions

From Atari Wiki
Jump to navigation Jump to search
(Created page with "<pre> ****************************************************************** * * * COURS D'ASSEMBL...")
 
No edit summary
Line 4: Line 4:
 
* COURS D'ASSEMBLEUR 68000 SUR ATARI ST *
 
* COURS D'ASSEMBLEUR 68000 SUR ATARI ST *
 
* *
 
* *
−
* par Le F
+
* par Le F�roce Lapin (from 44E) *
 
* *
 
* *
−
* Cours num
+
* Cours num�ro 2 *
 
* *
 
* *
 
******************************************************************
 
******************************************************************
Line 12: Line 12:
 
LES CHIFFRES 'MAGIQUES'
 
LES CHIFFRES 'MAGIQUES'
   
−
Voyons d'abord d'une fa
+
Voyons d'abord d'une fa�on simple comment marche un ordinateur, en
  +
nous pla�ant dans la situation suivante: nous devons fournir des
−
nous pla‡ant dans la situation suivante: nous devons fournir des
 
  +
messages � une personne dont nous sommes s�par�s (par exemple,
−
messages … une personne dont nous sommes s‚par‚s (par exemple,
 
−
message de nuit entre des gens
+
message de nuit entre des gens �loign�s).
   
 
Nous avons une lampe de poche, que nous pouvons donc allumer, ou
 
Nous avons une lampe de poche, que nous pouvons donc allumer, ou
  +
�teindre, c'est tout. Nous pouvons donc donner 2 messages 1)la
−
‚teindre, c'est tout. Nous pouvons donc donner 2 messages 1)la
 
−
lampe est
+
lampe est �teinte (par ex. tout va bien) 2)la lampe est allum�e
 
(par ex. vla les flics!)
 
(par ex. vla les flics!)
   
−
Approfondissons les 2
+
Approfondissons les 2 �tats de la lampe:
−
Allum
+
Allum�e Eteinte
   
−
qui revient
+
qui revient �: du courant pas de courant
 
ou: Du courant ? OUI NON
 
ou: Du courant ? OUI NON
   
 
Valeur du courant ? 1 0
 
Valeur du courant ? 1 0
   
−
Les tests seront donc not
+
Les tests seront donc not�s par 0 ou 1 suivant l'allumage ou non
 
de la lampe.
 
de la lampe.
   
−
Comme nous sommes riches, nous achetons une 2
+
Comme nous sommes riches, nous achetons une 2 �me lampe.
−
Nous avons donc 4 possibilit
+
Nous avons donc 4 possibilit�s de message
   
 
LAMPE 1 LAMPE2
 
LAMPE 1 LAMPE2
   
−
+
�teinte �teinte
−
allum
+
allum�e �teinte
−
+
�teinte allum�e
−
allum
+
allum�e allum�e
   
 
En comptant avec 3,4,5,6 ... lampes, nous nous rendons compte
 
En comptant avec 3,4,5,6 ... lampes, nous nous rendons compte
 
qu'il est possible de trouver une relation simple entre le nombre
 
qu'il est possible de trouver une relation simple entre le nombre
−
de lampes et le nombre de possibilit
+
de lampes et le nombre de possibilit�s.
   
  +
Nombre de possibilit�s = 2 � la puissance nombre de lampes.
−
Nombre de possibilit‚s = 2 … la puissance nombre de lampes.
 
   
 
Nous obtenons donc le tableau suivant
 
Nous obtenons donc le tableau suivant
−
Les remarques sont justes l
+
Les remarques sont justes l� pour mettre la puce � l'oreille !
   
−
Lampes Possibilit
+
Lampes Possibilit�s Remarques
 
1 2
 
1 2
 
2 4
 
2 4
Line 60: Line 60:
 
6 64 Amstrad CPC... 64!!
 
6 64 Amstrad CPC... 64!!
 
7 128 ou Commodore 128 ?
 
7 128 ou Commodore 128 ?
−
8 256 En informatique le codage des caract
+
8 256 En informatique le codage des caract�res
−
(lettres chiffres.. gr
+
(lettres chiffres.. gr�ce au code ASCII)
−
permet d'avoir 256 caract
+
permet d'avoir 256 caract�res !
−
9 512 Un 520 a 512 Ko de m
+
9 512 Un 520 a 512 Ko de m�moire et
 
Amstrad vend un PC1 512
 
Amstrad vend un PC1 512
−
10 1024 La taille m
+
10 1024 La taille m�moire de mon 1040!
−
11 2048 Celle du m
+
11 2048 Celle du m�ga 2 de mon fr�re
−
12 4096 Celle d'un m
+
12 4096 Celle d'un m�ga 4. Aussi le nbr de
 
couleurs affichables avec un Amiga.
 
couleurs affichables avec un Amiga.
 
etc...
 
etc...
 
16 65536 Dans le GFA, un tableau
 
16 65536 Dans le GFA, un tableau
−
ne peut avoir plus de 65536
+
ne peut avoir plus de 65536 �l�ments.
   
−
Si mes 4 lampes sont
+
Si mes 4 lampes sont �teintes (0000) je suis donc � la possibilit�
−
0. Si elles sont allum
+
0. Si elles sont allum�es (1111) je suis donc � la 15 (car de 0 �
  +
15 �a fait bien 16) donc 0000 --> 0 et 1111 --> 15
−
15 ‡a fait bien 16) donc 0000 --> 0 et 1111 --> 15
 
   
−
J'ai donc un bouquin de 16 pages donnant les possibilit
+
J'ai donc un bouquin de 16 pages donnant les possibilit�s des 16
−
allumages possibles, et mon correspondant a le m
+
allumages possibles, et mon correspondant a le m�me. Comment faire
 
pour lui envoyer le message de la page 13 ?
 
pour lui envoyer le message de la page 13 ?
   
−
Le chiffre le plus petit
+
Le chiffre le plus petit �tant � droite (on note les chiffre dans
−
l'ordre centaines, dizaines, unit
+
l'ordre centaines, dizaines, unit�s), pla�ons les lampes.
   
  +
Lampe num�ro: 4 3 2 1
−
Lampe num‚ro: 4 3 2 1
 
−
a) je n'ai qu'une lampe (la 1) elle est allum
+
a) je n'ai qu'une lampe (la 1) elle est allum�e donc j'obtiens la
 
valeur 1. (je ne peut obtenir que 0 ou 1)
 
valeur 1. (je ne peut obtenir que 0 ou 1)
   
−
b)j'ai 2 lampes (1 et 2), allum
+
b)j'ai 2 lampes (1 et 2), allum�es toutes les deux, j'obtiens la
  +
4�me possibilit� . J'ai donc la valeur 3 (puisque je compte les
−
4Šme possibilit‚ . J'ai donc la valeur 3 (puisque je compte les
 
 
valeurs 0,1,2 et 3, ce qui en fait bien 4) Puisque la lampe 1 vaut
 
valeurs 0,1,2 et 3, ce qui en fait bien 4) Puisque la lampe 1 vaut
−
au maximum la valeur 1, j'en d
+
au maximum la valeur 1, j'en d�duis que la lampe 2 vaut � elle
 
seule au maximum la valeur 2.
 
seule au maximum la valeur 2.
   
−
En effet lampe 1 allum
+
En effet lampe 1 allum�e --> valeur 1
−
Lampe 2 allum
+
Lampe 2 allum�e --> valeur 2
−
Donc les 2 allum
+
Donc les 2 allum�es ensemble --> valeur 3 = 4 possibilit�s.
   
 
La lampe 2 peut donc donner une 'augmentation' de 0 ou de 2.
 
La lampe 2 peut donc donner une 'augmentation' de 0 ou de 2.
   
  +
Lampe num�ro 4 3 2 1
−
Lampe num‚ro 4 3 2 1
 
 
'augmentation' 8 4 2 1
 
'augmentation' 8 4 2 1
   
Line 111: Line 111:
 
Nous sommes donc en train de compter en binaire.
 
Nous sommes donc en train de compter en binaire.
   
  +
En d�cimal : d�c signifie 10, car un chiffre peut prendre 10 va-
−
En d‚cimal : d‚c signifie 10, car un chiffre peut prendre 10 va-
 
−
leurs (de 0
+
leurs (de 0 � 9).
   
 
En binaire :bi = deux car chaque chiffre ne peut prendre que 2 va-
 
En binaire :bi = deux car chaque chiffre ne peut prendre que 2 va-
Line 118: Line 118:
   
 
L'informatique est un domaine Anglo-saxon. Un 'chiffre binaire',
 
L'informatique est un domaine Anglo-saxon. Un 'chiffre binaire',
−
en Anglais,
+
en Anglais, �a se dit 'binary digit'. On garde la premi�re lettre
  +
et les 2 derni�res, et on dit qu'un chiffe binaire c'est un BIT
−
et les 2 derniŠres, et on dit qu'un chiffe binaire c'est un BIT
 
−
!!! Un bit peut donc
+
!!! Un bit peut donc �tre � 0 ou 1. C'est la plus petite unit� in-
 
formatique,
 
formatique,
−
car, le correspondant
+
car, le correspondant � qui nous envoyons des messages, c'est en
 
fait un ordinateur. Au lieu d'allumer des lampes, nous mettons du
 
fait un ordinateur. Au lieu d'allumer des lampes, nous mettons du
−
courant sur un fil ou non. Un ordinateur 8 bits
+
courant sur un fil ou non. Un ordinateur 8 bits � donc 8 fil sur
 
lesquels on met ou non du courant !
 
lesquels on met ou non du courant !
   
−
Pour envoyer des messages nous allons donc pr
+
Pour envoyer des messages nous allons donc pr�parer des lampes
−
avec des petits interrupteurs puis, quand nos lampes seront pr
+
avec des petits interrupteurs puis, quand nos lampes seront pr�-
 
tes, on actionnera l'interrupteur principal pour envoyer le cou-
 
tes, on actionnera l'interrupteur principal pour envoyer le cou-
−
rant et donc allumer d'un coup les lampes pr
+
rant et donc allumer d'un coup les lampes pr�vues.
   
−
Nous allons donc, par l'interm
+
Nous allons donc, par l'interm�diaire de nos 'lampes', envoyer des
 
messages au coeur de la machine (dans le cas du ST c'est un micro-
 
messages au coeur de la machine (dans le cas du ST c'est un micro-
−
processeur 68000 de chez MOTOROLA) qui a
+
processeur 68000 de chez MOTOROLA) qui a �t� fabriqu� pour r�pon-
−
dre d'une certaine mani
+
dre d'une certaine mani�re aux diff�rents messages.
   
  +
On pr�pare donc nos lampes puis on allume. Nous, nous avons 16
−
On pr‚pare donc nos lampes puis on allume. Nous, nous avons 16
 
 
lampes. En effet le 68000 Motorola
 
lampes. En effet le 68000 Motorola
 
est un micro-processeur 16 bits.
 
est un micro-processeur 16 bits.
   
−
Voici donc un 'programme' (c'est-
+
Voici donc un 'programme' (c'est-�-dire une succession d'ordres)
 
tel qu'il est au niveau mise ou non de courant sur les 16 fils
 
tel qu'il est au niveau mise ou non de courant sur les 16 fils
  +
Tout � gauche c'est la valeur du fil 16 et � droite celle du 1. 0
−
Tout … gauche c'est la valeur du fil 16 et … droite celle du 1. 0
 
 
= pas de courant sur le fil, 1 du courant. Le microprocesseur est
 
= pas de courant sur le fil, 1 du courant. Le microprocesseur est
  +
entour� de multiples tiroirs (les cases m�moire) et parmi les or-
−
entour‚ de multiples tiroirs (les cases m‚moire) et parmi les or-
 
−
dres qu'il sait ex
+
dres qu'il sait ex�cuter il y a 'va chercher ce qu'il y a dans tel
−
tiroir' ou bien 'va mettre
+
tiroir' ou bien 'va mettre �a dans tel tiroir'. Chaque tiroir est
  +
rep�r� par une adresse (comme chaque maison), c'est-�-dire par un
−
rep‚r‚ par une adresse (comme chaque maison), c'est-…-dire par un
 
−
num
+
num�ro.
   
 
Nous allons dire au microprocesseur: va chercher ce qu'il y a au
 
Nous allons dire au microprocesseur: va chercher ce qu'il y a au
  +
num�ro 24576, ajoutes-y ce qu'il y a au num�ro 24578 et mets le
−
num‚ro 24576, ajoutes-y ce qu'il y a au num‚ro 24578 et mets le
 
  +
r�sultat au num�ro 24580. On pourrait remplacer 'au num�ro' par '�
−
r‚sultat au num‚ro 24580. On pourrait remplacer 'au num‚ro' par '…
 
 
l'adresse'.
 
l'adresse'.
   
−
Allumons donc les 16 lampes en cons
+
Allumons donc les 16 lampes en cons�quences, cela donne:
   
 
0011000000111000
 
0011000000111000
Line 166: Line 166:
   
 
Une seule biarque s'impose, c'est la merde totale! Comment faire
 
Une seule biarque s'impose, c'est la merde totale! Comment faire
−
pour s'y retrouver avec un programme comme
+
pour s'y retrouver avec un programme comme �a, si on oublie d'al-
−
lumer une seule lampe,
+
lumer une seule lampe, �a ne marche plus, et pour rep�rer l'erreur
 
dans un listing pareil, bonjour !
 
dans un listing pareil, bonjour !
 
la merde !!!!
 
la merde !!!!
   
−
On a donc la possibilit
+
On a donc la possibilit� de marquer �a non pas en binaire, mais en
  +
d�cimal. Malheureusement la conversion n'est pas commode et de
−
d‚cimal. Malheureusement la conversion n'est pas commode et de
 
  +
toute fa�on, on obtient quand m�me des grands chiffres (visuelle-
−
toute fa‡on, on obtient quand mˆme des grands chiffres (visuelle-
 
−
ment car leur taille en tant que nombre ne change pas, bien s
+
ment car leur taille en tant que nombre ne change pas, bien s�r!)
  +
Ainsi la 3�me ligne donne 53368. On va donc convertir autrement,
−
Ainsi la 3Šme ligne donne 53368. On va donc convertir autrement,
 
  +
en s�parant notre chiffres binaire en groupe de 4 bits.
−
en s‚parant notre chiffres binaire en groupe de 4 bits.
 
   
   
 
REMARQUE DE VOCABULAIRE:
 
REMARQUE DE VOCABULAIRE:
   
−
Nous ne parlerons qu'Anglais. Toutes les abr
+
Nous ne parlerons qu'Anglais. Toutes les abr�viations en informa-
−
tique sont des abr
+
tique sont des abr�viations de mots ou d'expressions anglaises.
  +
Les lire � la Fran�aise impose d'apprendre par coeur leur signifi-
−
Les lire … la Fran‡aise impose d'apprendre par coeur leur signifi-
 
−
cation. En les lisant telles qu'elles DOIVENT
+
cation. En les lisant telles qu'elles DOIVENT �tre lues (en
−
Anglais), ces expressions donnent d'elles m
+
Anglais), ces expressions donnent d'elles m�mes leur d�finition.
−
Un des exemples est T$ qui est lu syst
+
Un des exemples est T$ qui est lu syst�matiquement T dollar ! Or,
−
$ n'est pas, dans le cas pr
+
$ n'est pas, dans le cas pr�sent, l'abr�viation de dollar mais
 
celle de string. T$ doit donc se lire ET SE DIRE T string. String
 
celle de string. T$ doit donc se lire ET SE DIRE T string. String
−
signifiant 'cha
+
signifiant 'cha�ne' en Anglais, T est donc une cha�ne de carac-
  +
t�re. Evident, alors que lire T dollar ne signifie absolument rien
−
tŠre. Evident, alors que lire T dollar ne signifie absolument rien
 
  +
! Le seul int�r�t c'est que �a fait marrer Douglas, le joyeux bri-
−
! Le seul int‚rˆt c'est que ‡a fait marrer Douglas, le joyeux bri-
 
 
tannique qui programme avec moi!
 
tannique qui programme avec moi!
   
  +
Une unit� binaire se dit donc BIT (binary digit)
−
Une unit‚ binaire se dit donc BIT (binary digit)
 
  +
4 unit�s forment un NIBBLE
−
4 unit‚s forment un NIBBLE
 
   
  +
8 unit�s forment un octet (que nous appellerons par son nom an-
−
8 unit‚s forment un octet (que nous appellerons par son nom an-
 
−
glais c'est
+
glais c'est � dire BYTE)
   
  +
16 unit�s forment un mot (WORD)
−
16 unit‚s forment un mot (WORD)
 
   
  +
32 unit�s forment un mot long (LONG WORD)
−
32 unit‚s forment un mot long (LONG WORD)
 
   
−
Revenons donc
+
Revenons donc � notre conversion en groupant nos 16 lampes (donc
 
notre WORD) en groupes de 4 (donc en NIBBLE)
 
notre WORD) en groupes de 4 (donc en NIBBLE)
   
Line 213: Line 213:
 
Comptons dons les valeur possibles pour un seul nibble.
 
Comptons dons les valeur possibles pour un seul nibble.
   
  +
�tat du nibble 0000 valeur 0
−
‚tat du nibble 0000 valeur 0
 
 
0001 valeur 1
 
0001 valeur 1
 
0010 valeur 2
 
0010 valeur 2
Line 221: Line 221:
 
etc..
 
etc..
 
1010 valeur 10
 
1010 valeur 10
−
STOP
+
STOP �a va plus ! 10 c'est 1 et 0 or on les a d�j� uti-
−
lis
+
lis�s!
−
Ben oui mais
+
Ben oui mais � part 0,1,2,3,4,5,6,7,8,9 on n'a pas grand chose �
 
notre disposition... Ben si, y'a l'alphabet !
 
notre disposition... Ben si, y'a l'alphabet !
−
On va donc
+
On va donc �crire 10 avec A, 11 avec B, 12 avec C, 13/D, 14/E et
−
15 avec F. Il y a donc 16 chiffres dans notre nouveau syst
+
15 avec F. Il y a donc 16 chiffres dans notre nouveau syst�me (de
  +
0 � F). 'D�c' signifiant 10 et 'Hex' signifiant 6 (un hexagone)
−
0 … F). 'D‚c' signifiant 10 et 'Hex' signifiant 6 (un hexagone)
 
−
donc Hex + D
+
donc Hex + D�c=16. D�cimal = qui a 10 chiffres (0 � 9) hexad�ci-
−
mal= qui en
+
mal= qui en � 16!!!
   
−
Notre programme devient donc en hexad
+
Notre programme devient donc en hexad�cimal:
 
$3038
 
$3038
 
$6000
 
$6000
Line 239: Line 239:
 
$6004
 
$6004
   
−
Plus clair mais c'est pas encore
+
Plus clair mais c'est pas encore �a.
   
−
NOTE: pour diff
+
NOTE: pour diff�rencier un nombre binaire d'un nombre d�cimal ou
  +
d'un hexad�cimal, par convention un nombre binaire sera pr�c�d� de
−
d'un hexad‚cimal, par convention un nombre binaire sera pr‚c‚d‚ de
 
−
%, un nombre hexad
+
%, un nombre hexad�cimal de $ et il n'y aura rien devant un nombre
  +
d�cimal. $11 ne vaut donc pas 11 en d�cimal, mais 17.
−
d‚cimal. $11 ne vaut donc pas 11 en d‚cimal, mais 17.
 
   
  +
R�fl�chissons un peu. Nous avons en fait �crit:
−
R‚fl‚chissons un peu. Nous avons en fait ‚crit:
 
   
 
'Va chercher ce qu'il y a'
 
'Va chercher ce qu'il y a'
  +
'� l'adresse $6000'
−
'… l'adresse $6000'
 
−
'ajoute y ce qu'il y a' '
+
'ajoute y ce qu'il y a' '� l'adresse $6002'
−
'met le r
+
'met le r�sultat'
  +
'� l'adresse $6004'
−
'… l'adresse $6004'
 
   
−
Le microprocesseur peut bien s
+
Le microprocesseur peut bien s�r piocher dans les milliers de ca-
  +
ses m�moire qu'il y a dans la machine, mais en plus il en a sur
−
ses m‚moire qu'il y a dans la machine, mais en plus il en a sur
 
 
lui (des petites poches en quelque sorte, dans lesquelles il
 
lui (des petites poches en quelque sorte, dans lesquelles il
 
stocke temporairement des 'trucs' dont il aura besoin rapidement).
 
stocke temporairement des 'trucs' dont il aura besoin rapidement).
−
Il a 17 poches: 8 dans lesquelles il peut mettre des donn
+
Il a 17 poches: 8 dans lesquelles il peut mettre des donn�es, et 9
−
dans lesquelles il peut mettre des adresses. Donn
+
dans lesquelles il peut mettre des adresses. Donn�e =DATA et
−
adresse=ADRESS, ces poches seront donc rep
+
adresse=ADRESS, ces poches seront donc rep�r�es par D0,D1,D2,
 
...D7 et par A0,A1...A7 et A7' (nous verrons plus tard pourquoi
 
...D7 et par A0,A1...A7 et A7' (nous verrons plus tard pourquoi
−
c'est pas A8, et les diff
+
c'est pas A8, et les diff�rences entre ces types de poches).
   
  +
NOTE: le ph�nom�ne de courant/pas courant et le m�me pour TOUS les
−
NOTE: le ph‚nomŠne de courant/pas courant et le mˆme pour TOUS les
 
 
ordinateurs actuels. Le nombre de 'poche' est propre au 68000
 
ordinateurs actuels. Le nombre de 'poche' est propre au 68000
 
MOTOROLA .
 
MOTOROLA .
−
Il y a donc le m
+
Il y a donc le m�me nombre de 'poches' sur un Amiga ou un Mac
 
Intosh puisqu'ils ont eux aussi un 68000 Motorala. Sur un PC ou un
 
Intosh puisqu'ils ont eux aussi un 68000 Motorala. Sur un PC ou un
  +
CPC, les caract�ristiques (nombre de lampes allumables simultan�-
−
CPC, les caract‚ristiques (nombre de lampes allumables simultan‚-
 
−
ment, nombre de 'poches'...)sont diff
+
ment, nombre de 'poches'...)sont diff�rents, mais le principe est
  +
le m�me. C'est allum� OU c'est �teint.
−
le mˆme. C'est allum‚ OU c'est ‚teint.
 
   
 
Modifions notre 'texte', qui devient donc.
 
Modifions notre 'texte', qui devient donc.
   
  +
'd�place dans ta poche D0'
−
'd‚place dans ta poche D0'
 
−
'ce que tu trouveras
+
'ce que tu trouveras � l'adresse $6000'
−
'ajoute
+
'ajoute � ce que tu as dans ta poche D0'
−
'ce que tu trouveras
+
'ce que tu trouveras � l'adresse $6002'
−
'mets le r
+
'mets le r�sultat de l'op�ration'
  +
'� l'adresse $6004'
−
'… l'adresse $6004'
 
   
−
La machine est tr
+
La machine est tr�s limit�e, puisque par conception, le r�sultat
  +
de l'op�ration de la 3 �me ligne ira lui m�me dans D0, �crasant
−
de l'op‚ration de la 3 Šme ligne ira lui mˆme dans D0, ‚crasant
 
 
donc ce qui s'y trouve. Pour garder la valeur qui s'y trouvait il
 
donc ce qui s'y trouve. Pour garder la valeur qui s'y trouvait il
−
faudrait au pr
+
faudrait au pr�alable la recopier par exemple dans la poche D1!!!
   
  +
D�placer se dit en Anglais MOVE
−
D‚placer se dit en Anglais MOVE
 
 
Ajoute se dit en Anglais ADD
 
Ajoute se dit en Anglais ADD
   
Line 293: Line 293:
   
 
MOVE ce qu'il y a en $6000 dans D0
 
MOVE ce qu'il y a en $6000 dans D0
−
ADD ce qu'il y a en $6002
+
ADD ce qu'il y a en $6002 � D0
−
MOVE ce qu'il y a maintenant dans D0
+
MOVE ce qu'il y a maintenant dans D0 � $6004
   
−
C'est
+
C'est � dire:
 
MOVE $6000,D0
 
MOVE $6000,D0
 
ADD $6002,D0
 
ADD $6002,D0
 
MOVE D0,$6004
 
MOVE D0,$6004
   
−
Nous venons d'
+
Nous venons d'�crire en clair un programme en langage machine.
   
  +
La diff�rence fondamentale avec un programme dans n'importe quel
−
La diff‚rence fondamentale avec un programme dans n'importe quel
 
−
autre langage, c'est que l
+
autre langage, c'est que l�, chaque ligne ne correspond qu'� UNE
  +
SEULE op�ration du microprocesseur, alors que PRINT "BONJOUR" va
−
SEULE op‚ration du microprocesseur, alors que PRINT "BONJOUR" va
 
−
lui en faire faire beaucoup. Il est
+
lui en faire faire beaucoup. Il est �vident que notre BASIC
  +
n'�tant qu'un traducteur 'm�canique' sa traduction a toutes les
−
n'‚tant qu'un traducteur 'm‚canique' sa traduction a toutes les
 
  +
chances d'�tre approximative, et, bien qu'elle soit efficace, elle
−
chances d'ˆtre approximative, et, bien qu'elle soit efficace, elle
 
 
utilise beaucoup plus d'instructions (pour le microprocesseur)
 
utilise beaucoup plus d'instructions (pour le microprocesseur)
−
qu'il n'en faut r
+
qu'il n'en faut r�ellement.
   
−
Il faut bien aussi avoir une pens
+
Il faut bien aussi avoir une pens�e �mue pour les premiers pro-
 
grammeurs du 68000 qui ont d'abord fait un programme avec des 1 et
 
grammeurs du 68000 qui ont d'abord fait un programme avec des 1 et
−
des 0, programme qui ne faisait que traduire des chiffres hexad
+
des 0, programme qui ne faisait que traduire des chiffres hexad�-
−
cimaux en binaires avant de les transmettre
+
cimaux en binaires avant de les transmettre � la machine. Il ont
  +
ensuite r�alis�, en hexad�cimal des programmes traduisant des ins-
−
ensuite r‚alis‚, en hexad‚cimal des programmes traduisant des ins-
 
 
tructions du genre MOVE, ADD etc... en binaire...
 
tructions du genre MOVE, ADD etc... en binaire...
   
 
Il suffisait ensuite de regrouper plusieurs instructions de ce
 
Il suffisait ensuite de regrouper plusieurs instructions de ce
 
type sous une autre appellation (incomprise directement par la ma-
 
type sous une autre appellation (incomprise directement par la ma-
−
chine) et de faire les traducteurs correspondants, et cr
+
chine) et de faire les traducteurs correspondants, et cr�er ainsi
−
les langages '
+
les langages '�volu�s' (PASCAL, C, BASIC ...)
   
−
Nous allons donc nous int
+
Nous allons donc nous int�resser � la programmation ou plut�t � la
 
transmission d'ordre au 68000 Motorola. Combien d'ordres peut-il
 
transmission d'ordre au 68000 Motorola. Combien d'ordres peut-il
  +
ex�cuter. Uniquement 56 !!!! (avec des variantes quand m�me mais
−
ex‚cuter. Uniquement 56 !!!! (avec des variantes quand mˆme mais
 
  +
�a fait pas beaucoup). Des recherches (� un niveau bien trop haut
−
‡a fait pas beaucoup). Des recherches (… un niveau bien trop haut
 
−
pour nous!) on en effet montr
+
pour nous!) on en effet montr�es qu'il �tait plus rapide d'avoir
−
peu d'instructions faisant peu de chose chacune et donc ex
+
peu d'instructions faisant peu de chose chacune et donc ex�cuta-
−
bles rapidement les unes apr
+
bles rapidement les unes apr�s les autres, plut�t que d'avoir
 
beaucoup d'instructions (le microprocesseur perdant sans doute du
 
beaucoup d'instructions (le microprocesseur perdant sans doute du
  +
temps � chercher celle qu'on lui a demand� de faire) ou bien des
−
temps … chercher celle qu'on lui a demand‚ de faire) ou bien des
 
 
instructions complexes.
 
instructions complexes.
   
  +
Travail � faire: relire tout �a au moins 2 fois puis se reposer
−
Travail … faire: relire tout ‡a au moins 2 fois puis se reposer
 
 
l'esprit avant de lire la suite.
 
l'esprit avant de lire la suite.
   
 
CONSEIL: ne commencez pas la suite tout de suite.
 
CONSEIL: ne commencez pas la suite tout de suite.
−
Avalez parfaitement TOUT ce qui est marqu
+
Avalez parfaitement TOUT ce qui est marqu�, car la compr�hension
−
du moindre d
+
du moindre d�tail vous servira.
   
−
Une lampe, ce n'est pas grand chose, mais une de grill
+
Une lampe, ce n'est pas grand chose, mais une de grill�e et vous
−
comprendrez la merde que
+
comprendrez la merde que �a am�ne.
  +
L�, c'est pareil. La plus petite chose incomprise et vous n'allez
−
L…, c'est pareil. La plus petite chose incomprise et vous n'allez
 
−
rien comprendre
+
rien comprendre � la suite. Par contre si tout est compris, la
 
suite sera aussi facile, et surtout aussi logique.
 
suite sera aussi facile, et surtout aussi logique.
 
</pre>
 
</pre>

Revision as of 15:08, 23 November 2023

   ******************************************************************
   *                                                                *
   *             COURS D'ASSEMBLEUR 68000 SUR ATARI ST              *
   *                                                                *
   *                 par Le F�roce Lapin (from 44E)                 *
   *                                                                *
   *                         Cours num�ro 2                         *
   *                                                                *
   ******************************************************************

   LES CHIFFRES 'MAGIQUES'

   Voyons d'abord d'une fa�on simple comment marche un ordinateur, en
   nous  pla�ant  dans la situation suivante: nous devons fournir des
   messages  �  une  personne  dont nous sommes s�par�s (par exemple,
   message de nuit entre des gens �loign�s).

   Nous  avons  une lampe de poche, que nous pouvons donc allumer, ou
   �teindre, c'est  tout. Nous  pouvons  donc  donner 2 messages 1)la
   lampe  est  �teinte  (par ex. tout va bien) 2)la lampe est allum�e
   (par ex. vla les flics!)

   Approfondissons les 2 �tats de la lampe:
                         Allum�e                  Eteinte

   qui revient �:      du courant               pas de courant
   ou: Du courant ?       OUI                       NON

   Valeur du courant ?      1                        0

   Les  tests  seront donc not�s par 0 ou 1 suivant l'allumage ou non
   de la lampe.

   Comme nous sommes riches, nous achetons une 2 �me lampe.
   Nous avons donc 4 possibilit�s de message

               LAMPE 1             LAMPE2

              �teinte              �teinte
              allum�e              �teinte
              �teinte              allum�e
              allum�e              allum�e

   En  comptant  avec  3,4,5,6 ... lampes, nous  nous  rendons compte
   qu'il  est possible de trouver une relation simple entre le nombre
   de lampes et le nombre de possibilit�s.

   Nombre de possibilit�s = 2 � la puissance nombre de lampes.

   Nous obtenons donc le tableau suivant
   Les remarques sont justes l� pour mettre la puce � l'oreille !

   Lampes     Possibilit�s                 Remarques
   1             2
   2             4
   3             8         Il y a des ordinateurs 8 bits ... 
   4             16        et des 16 bits...
   5             32        Le ST est un 16/32 bits
   6             64        Amstrad CPC... 64!!
   7             128       ou Commodore 128 ?
   8             256       En informatique le codage des caract�res
                           (lettres chiffres.. gr�ce au code ASCII)
                           permet d'avoir 256 caract�res !
   9             512       Un 520 a 512 Ko de m�moire et
                           Amstrad vend un PC1 512
   10            1024      La taille m�moire de mon 1040!
   11            2048      Celle du m�ga 2 de mon fr�re
   12            4096      Celle d'un m�ga 4. Aussi le nbr de
                           couleurs affichables avec un Amiga.
   etc...
   16            65536     Dans le GFA, un tableau
                           ne peut avoir plus de 65536 �l�ments.

   Si mes 4 lampes sont �teintes (0000) je suis donc � la possibilit�
   0. Si  elles sont allum�es (1111) je suis donc � la 15 (car de 0 �
   15 �a fait bien 16) donc 0000 --> 0 et 1111 --> 15

   J'ai  donc  un bouquin de 16 pages donnant les possibilit�s des 16
   allumages possibles, et mon correspondant a le m�me. Comment faire
   pour lui envoyer le message de la page 13 ?

   Le  chiffre le plus petit �tant � droite (on note les chiffre dans
   l'ordre centaines, dizaines, unit�s), pla�ons les lampes.

   Lampe num�ro:       4       3       2        1
   a) je  n'ai qu'une lampe (la 1) elle est allum�e donc j'obtiens la
   valeur 1. (je ne peut obtenir que 0 ou 1)

   b)j'ai  2 lampes  (1 et 2), allum�es toutes les deux, j'obtiens la
   4�me  possibilit�  . J'ai  donc la valeur 3 (puisque je compte les
   valeurs 0,1,2 et 3, ce qui en fait bien 4) Puisque la lampe 1 vaut
   au  maximum  la  valeur  1, j'en d�duis que la lampe 2 vaut � elle
   seule au maximum la valeur 2.

   En effet     lampe 1 allum�e --> valeur 1
                Lampe 2 allum�e --> valeur 2
   Donc les 2 allum�es ensemble --> valeur 3 = 4 possibilit�s.

   La lampe 2 peut donc donner une 'augmentation' de 0 ou de 2.

   Lampe num�ro         4             3            2            1
   'augmentation'       8             4            2            1

   Pour  envoyer  le  message  13, il  faut  donc  allumer la lampe 4
   (valeur de 8), la lampe 3 (valeur de 4) et la 1 (valeur de 1) 
   Lampe               4      3         2       1
   Etat de la lampe    1      1         0       1
   Valeur              8  +   4    +    0   +   1 = 13

   Nous sommes donc en train de compter en binaire.

   En  d�cimal  : d�c signifie 10, car un chiffre peut prendre 10 va-
   leurs (de 0 � 9).

   En binaire :bi = deux car chaque chiffre ne peut prendre que 2 va-
   leurs (0 ou 1).

   L'informatique  est  un domaine Anglo-saxon. Un 'chiffre binaire',
   en  Anglais, �a se dit 'binary digit'. On garde la premi�re lettre
   et  les  2 derni�res, et  on dit qu'un chiffe binaire c'est un BIT
   !!! Un bit peut donc �tre � 0 ou 1. C'est la plus petite unit� in-
   formatique,
   car, le  correspondant  � qui nous envoyons des messages, c'est en
   fait  un ordinateur. Au lieu d'allumer des lampes, nous mettons du
   courant  sur  un fil ou non. Un ordinateur 8 bits � donc 8 fil sur
   lesquels on met ou non du courant !

   Pour  envoyer  des  messages  nous allons donc pr�parer des lampes
   avec  des  petits interrupteurs puis, quand nos lampes seront pr�-
   tes, on  actionnera  l'interrupteur principal pour envoyer le cou-
   rant et donc allumer d'un coup les lampes pr�vues.

   Nous allons donc, par l'interm�diaire de nos 'lampes', envoyer des
   messages au coeur de la machine (dans le cas du ST c'est un micro-
   processeur  68000 de chez MOTOROLA) qui a �t� fabriqu� pour r�pon-
   dre d'une certaine mani�re aux diff�rents messages.

   On  pr�pare  donc  nos  lampes puis on allume. Nous, nous avons 16
   lampes. En effet le 68000 Motorola
   est un micro-processeur 16 bits.

   Voici  donc  un 'programme' (c'est-�-dire une succession d'ordres)
   tel  qu'il  est  au  niveau mise ou non de courant sur les 16 fils
   Tout  � gauche c'est la valeur du fil 16 et � droite celle du 1. 0
   = pas  de courant sur le fil, 1 du courant. Le microprocesseur est
   entour�  de multiples tiroirs (les cases m�moire) et parmi les or-
   dres qu'il sait ex�cuter il y a 'va chercher ce qu'il y a dans tel
   tiroir' ou  bien 'va mettre �a dans tel tiroir'. Chaque tiroir est
   rep�r�  par une adresse (comme chaque maison), c'est-�-dire par un
   num�ro.

   Nous  allons dire au microprocesseur: va chercher ce qu'il y a  au
   num�ro  24576, ajoutes-y  ce  qu'il y a au num�ro 24578 et mets le
   r�sultat au num�ro 24580. On pourrait remplacer 'au num�ro' par '�
   l'adresse'.

   Allumons donc les 16 lampes en cons�quences, cela donne:

   0011000000111000
   0110000000000000
   1101000001111000
   0110000000000010
   0011000111000000
   0110000000000100

   Une  seule  biarque s'impose, c'est la merde totale! Comment faire
   pour  s'y retrouver avec un programme comme �a, si on oublie d'al-
   lumer une seule lampe, �a ne marche plus, et pour rep�rer l'erreur
   dans un listing pareil, bonjour !
   la merde !!!! 

   On a donc la possibilit� de marquer �a non pas en binaire, mais en
   d�cimal. Malheureusement  la  conversion  n'est  pas commode et de
   toute  fa�on, on obtient quand m�me des grands chiffres (visuelle-
   ment  car leur taille en tant que nombre ne change pas, bien s�r!)
   Ainsi  la  3�me ligne donne 53368. On va donc convertir autrement,
   en s�parant notre chiffres binaire en groupe de 4 bits.


   REMARQUE DE VOCABULAIRE:

   Nous  ne parlerons qu'Anglais. Toutes les abr�viations en informa-
   tique  sont  des  abr�viations de mots ou d'expressions anglaises.
   Les lire � la Fran�aise impose d'apprendre par coeur leur signifi-
   cation. En  les  lisant  telles  qu'elles  DOIVENT  �tre  lues (en
   Anglais), ces  expressions  donnent d'elles m�mes leur d�finition.
   Un  des exemples est T$ qui est lu syst�matiquement T dollar ! Or,
   $ n'est  pas, dans  le  cas  pr�sent, l'abr�viation de dollar mais
   celle  de string. T$ doit donc se lire ET SE DIRE T string. String
   signifiant  'cha�ne' en  Anglais, T  est donc une cha�ne de carac-
   t�re. Evident, alors que lire T dollar ne signifie absolument rien
   ! Le seul int�r�t c'est que �a fait marrer Douglas, le joyeux bri-
   tannique qui programme avec moi!

   Une unit� binaire se dit donc BIT (binary digit)
   4 unit�s forment un NIBBLE

   8 unit�s  forment  un  octet (que nous appellerons par son nom an-
   glais c'est � dire BYTE)

   16 unit�s forment un mot (WORD)

   32 unit�s forment un mot long (LONG WORD)

   Revenons  donc  � notre conversion en groupant nos 16 lampes (donc
   notre WORD) en groupes de 4 (donc en NIBBLE)

    0011        0000         0011         1000

   Ces 4 nibbles forment notre premier word.

   Comptons dons les valeur possibles pour un seul nibble.

   �tat du nibble 0000         valeur 0
           0001         valeur 1
           0010         valeur 2
           0011         valeur 3
           0100         valeur 4
           0101         valeur 5
           etc..
           1010         valeur 10
           STOP  �a  va  plus ! 10 c'est 1 et 0 or on les a d�j� uti-
   lis�s!
   Ben  oui  mais � part 0,1,2,3,4,5,6,7,8,9 on n'a pas grand chose �
   notre disposition... Ben si, y'a l'alphabet !
   On  va  donc �crire 10 avec A, 11 avec B, 12 avec C, 13/D, 14/E et
   15 avec  F. Il y a donc 16 chiffres dans notre nouveau syst�me (de
   0 �  F). 'D�c' signifiant  10 et  'Hex' signifiant 6 (un hexagone)
   donc  Hex  + D�c=16. D�cimal = qui a 10 chiffres (0 � 9) hexad�ci-
   mal= qui en � 16!!!

   Notre programme devient donc en hexad�cimal:
   $3038
   $6000
   $D078
   $6002
   $31C0
   $6004

   Plus clair mais c'est pas encore �a.

   NOTE: pour  diff�rencier  un nombre binaire d'un nombre d�cimal ou
   d'un hexad�cimal, par convention un nombre binaire sera pr�c�d� de
   %, un nombre hexad�cimal de $ et il n'y aura rien devant un nombre
   d�cimal. $11 ne vaut donc pas 11 en d�cimal, mais 17.

   R�fl�chissons un peu. Nous avons en fait �crit:

   'Va chercher ce qu'il y a'
   '� l'adresse $6000'
   'ajoute y ce qu'il y a' '� l'adresse $6002'
   'met le r�sultat'
   '� l'adresse $6004'

   Le  microprocesseur peut bien s�r piocher dans les milliers de ca-
   ses  m�moire  qu'il  y a dans la machine, mais en plus il en a sur
   lui  (des  petites  poches  en  quelque  sorte, dans lesquelles il
   stocke temporairement des 'trucs' dont il aura besoin rapidement).
   Il a 17 poches: 8 dans lesquelles il peut mettre des donn�es, et 9
   dans  lesquelles  il  peut  mettre  des  adresses. Donn�e =DATA et
   adresse=ADRESS, ces  poches  seront  donc  rep�r�es  par D0,D1,D2,
   ...D7 et  par  A0,A1...A7 et  A7' (nous verrons plus tard pourquoi
   c'est pas A8, et les diff�rences entre ces types de poches).

   NOTE: le ph�nom�ne de courant/pas courant et le m�me pour TOUS les
   ordinateurs  actuels. Le  nombre  de  'poche' est  propre au 68000
   MOTOROLA .
   Il  y  a  donc  le  m�me nombre de 'poches' sur un Amiga ou un Mac
   Intosh puisqu'ils ont eux aussi un 68000 Motorala. Sur un PC ou un
   CPC, les  caract�ristiques (nombre de lampes allumables simultan�-
   ment, nombre  de 'poches'...)sont diff�rents, mais le principe est
   le m�me. C'est allum� OU c'est �teint.

   Modifions notre 'texte', qui devient donc.

   'd�place dans ta poche D0'
   'ce que tu trouveras � l'adresse $6000'
   'ajoute � ce que tu as dans ta poche D0'
   'ce que tu trouveras � l'adresse $6002'
   'mets le r�sultat de l'op�ration'
   '� l'adresse $6004'

   La  machine  est tr�s limit�e, puisque par conception, le r�sultat
   de  l'op�ration  de  la 3 �me ligne ira lui m�me dans D0, �crasant
   donc  ce qui s'y trouve. Pour garder la valeur qui s'y trouvait il
   faudrait au pr�alable la recopier par exemple dans la poche D1!!!

   D�placer se dit en Anglais MOVE
   Ajoute   se dit en Anglais ADD

   Notre programme devient donc

   MOVE    ce qu'il y a en $6000   dans  D0
   ADD     ce qu'il y a en $6002     �   D0
   MOVE    ce qu'il y a maintenant dans  D0 � $6004

   C'est � dire:
   MOVE    $6000,D0
   ADD     $6002,D0
   MOVE    D0,$6004

   Nous venons d'�crire en clair un programme en langage machine.

   La  diff�rence  fondamentale avec un programme dans n'importe quel
   autre  langage, c'est  que l�, chaque ligne ne correspond qu'� UNE
   SEULE  op�ration  du microprocesseur, alors que PRINT "BONJOUR" va
   lui  en  faire  faire  beaucoup. Il  est  �vident  que notre BASIC
   n'�tant  qu'un  traducteur  'm�canique' sa traduction a toutes les
   chances d'�tre approximative, et, bien qu'elle soit efficace, elle
   utilise  beaucoup  plus  d'instructions  (pour le microprocesseur)
   qu'il n'en faut r�ellement.

   Il  faut  bien  aussi avoir une pens�e �mue pour les premiers pro-
   grammeurs du 68000 qui ont d'abord fait un programme avec des 1 et
   des  0, programme qui ne faisait que traduire des chiffres hexad�-
   cimaux  en  binaires avant de les transmettre � la machine. Il ont
   ensuite r�alis�, en hexad�cimal des programmes traduisant des ins-
   tructions du genre MOVE, ADD etc... en binaire...

   Il  suffisait  ensuite  de  regrouper plusieurs instructions de ce
   type sous une autre appellation (incomprise directement par la ma-
   chine) et  de faire les traducteurs correspondants, et cr�er ainsi
   les langages '�volu�s' (PASCAL, C, BASIC ...)

   Nous allons donc nous int�resser � la programmation ou plut�t � la
   transmission  d'ordre  au 68000 Motorola. Combien d'ordres peut-il
   ex�cuter. Uniquement  56 !!!! (avec  des variantes quand m�me mais
   �a  fait pas beaucoup). Des recherches (� un niveau bien trop haut
   pour  nous!) on  en effet montr�es qu'il �tait plus rapide d'avoir
   peu  d'instructions  faisant peu de chose chacune et donc ex�cuta-
   bles  rapidement  les  unes  apr�s  les autres, plut�t que d'avoir
   beaucoup  d'instructions (le microprocesseur perdant sans doute du
   temps  �  chercher celle qu'on lui a demand� de faire) ou bien des
   instructions complexes.

   Travail  �  faire: relire  tout �a au moins 2 fois puis se reposer
   l'esprit avant de lire la suite.

   CONSEIL: ne commencez pas la suite tout de suite.
   Avalez  parfaitement  TOUT ce qui est marqu�, car la compr�hension
   du moindre d�tail vous servira.

   Une  lampe, ce  n'est pas grand chose, mais une de grill�e et vous
   comprendrez la merde que �a am�ne.
   L�, c'est  pareil. La plus petite chose incomprise et vous n'allez
   rien  comprendre  �  la  suite. Par contre si tout est compris, la
   suite sera aussi facile, et surtout aussi logique.

Back to ASM_Tutorial