COURS 2.TXT/fr: Difference between revisions
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 |
+ | * par Le F�roce Lapin (from 44E) * |
* * |
* * |
||
− | * Cours |
+ | * Cours num�ro 2 * |
* * |
* * |
||
****************************************************************** |
****************************************************************** |
||
Line 12: | Line 12: | ||
LES CHIFFRES 'MAGIQUES' |
LES CHIFFRES 'MAGIQUES' |
||
− | Voyons d'abord d'une |
+ | 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�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 |
+ | 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 |
+ | Nous avons donc 4 possibilit�s de message |
LAMPE 1 LAMPE2 |
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 |
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 |
+ | 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 |
+ | 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 |
+ | 8 256 En informatique le codage des caract�res |
− | (lettres chiffres.. |
+ | (lettres chiffres.. gr�ce au code ASCII) |
− | permet d'avoir 256 |
+ | permet d'avoir 256 caract�res ! |
− | 9 512 Un 520 a 512 Ko de |
+ | 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 |
+ | 10 1024 La taille m�moire de mon 1040! |
− | 11 2048 Celle du |
+ | 11 2048 Celle du m�ga 2 de mon fr�re |
− | 12 4096 Celle d'un |
+ | 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 |
+ | 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 |
+ | J'ai donc un bouquin de 16 pages donnant les possibilit�s des 16 |
− | allumages possibles, et mon correspondant a le |
+ | 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, |
+ | 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 |
+ | 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), |
+ | 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 |
+ | 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 |
+ | En effet lampe 1 allum�e --> valeur 1 |
− | Lampe 2 |
+ | Lampe 2 allum�e --> valeur 2 |
− | Donc les 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. |
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 |
+ | Pour envoyer des messages nous allons donc pr�parer des lampes |
− | avec des petits interrupteurs puis, quand nos lampes seront |
+ | 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 |
+ | rant et donc allumer d'un coup les lampes pr�vues. |
− | Nous allons donc, par l' |
+ | 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 |
+ | 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 |
+ | 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�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 |
+ | 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 |
+ | 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 |
+ | 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 |
+ | Nous ne parlerons qu'Anglais. Toutes les abr�viations en informa- |
− | tique sont des |
+ | 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 |
+ | Anglais), ces expressions donnent d'elles m�mes leur d�finition. |
− | Un des exemples est T$ qui est lu |
+ | Un des exemples est T$ qui est lu syst�matiquement T dollar ! Or, |
− | $ n'est pas, dans le cas |
+ | $ 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 ' |
+ | 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�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 |
+ | 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 + |
+ | 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 |
+ | 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 |
+ | 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 |
+ | %, 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 |
+ | 'met le r�sultat' |
+ | '� l'adresse $6004' |
||
− | '… l'adresse $6004' |
||
− | Le microprocesseur peut bien |
+ | 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 |
+ | Il a 17 poches: 8 dans lesquelles il peut mettre des donn�es, et 9 |
− | dans lesquelles il peut mettre des adresses. |
+ | dans lesquelles il peut mettre des adresses. Donn�e =DATA et |
− | adresse=ADRESS, ces poches seront donc |
+ | 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 |
+ | 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 |
+ | 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 |
+ | 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 |
+ | 'mets le r�sultat de l'op�ration' |
+ | '� l'adresse $6004' |
||
− | '… l'adresse $6004' |
||
− | La machine est |
+ | 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 |
+ | 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 |
+ | 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 |
+ | qu'il n'en faut r�ellement. |
− | Il faut bien aussi avoir une |
+ | 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 |
+ | 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 |
+ | chine) et de faire les traducteurs correspondants, et cr�er ainsi |
− | les langages ' |
+ | les langages '�volu�s' (PASCAL, C, BASIC ...) |
− | Nous allons donc nous |
+ | 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 |
+ | pour nous!) on en effet montr�es qu'il �tait plus rapide d'avoir |
− | peu d'instructions faisant peu de chose chacune et donc |
+ | peu d'instructions faisant peu de chose chacune et donc ex�cuta- |
− | bles rapidement les unes |
+ | 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 |
+ | Avalez parfaitement TOUT ce qui est marqu�, car la compr�hension |
− | du moindre |
+ | du moindre d�tail vous servira. |
− | Une lampe, ce n'est pas grand chose, mais une de |
+ | 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