COURS201.TXT/fr: Difference between revisions

From Atari Wiki
Jump to navigation Jump to search
No edit summary
(Replacing content with updated version)
 
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
  +
{{Languages|COURS201.TXT}}
 
<pre>
 
<pre>
 
****************************************************************
 
****************************************************************
Line 4: Line 5:
 
* COURS D'ASSEMBLEUR 68000 SUR ATARI ST *
 
* COURS D'ASSEMBLEUR 68000 SUR ATARI ST *
 
* *
 
* *
* par Le F�roce Lapin (from 44E) *
+
* par Le Féroce Lapin (from 44E) *
 
* *
 
* *
* Seconde s�rie *
+
* Seconde série *
 
* *
 
* *
* Cours num�ro 1 *
+
* Cours numéro 1 *
 
****************************************************************
 
****************************************************************
   
Voici la seconde s�rie de cours sur l'assembleur 68000 sur Atari.
+
Voici la seconde série de cours sur l'assembleur 68000 sur Atari.
Ce cours fait suite la premi�re s�rie. J'esp�re pour vous que
+
Ce cours fait suite à la première série. J'espère pour vous que
cette premi�re s�rie a �t� parfaitement comprise, et que RIEN n'a
+
cette première série a été parfaitement comprise, et que RIEN n'a
�t� laiss� de cot�. Partant de ce principe, nous pouvons dire que
+
été laissé de coté. Partant de ce principe, nous pouvons dire que
 
vos bases sont bien solides, et que nous allons pouvoir allez
 
vos bases sont bien solides, et que nous allons pouvoir allez
beaucoup plus vite. La premi�re s�rie �tait destin�e vous
+
beaucoup plus vite. La première série était destinée à vous
apprendre le m�canisme de fonctionnement du 68000 et du ST au
+
apprendre le mécanisme de fonctionnement du 68000 et du ST au
niveau de son syst�me d'exploitation, la seconde s�rie ne sera
+
niveau de son système d'exploitation, la seconde série ne sera
qu'un ensemble de ficelles, de clefs d'acc�s divers choses. Si
+
qu'un ensemble de ficelles, de clefs d'accès à divers choses. Si
vous avez PARFAITEMENT �tudi�s la premi�re s�rie, vous pourrez
+
vous avez PARFAITEMENT étudiés la première série, vous pourrez
tirer doucement sur ces ficelles afin de faire venir vous les
+
tirer doucement sur ces ficelles afin de faire venir à vous les
 
informations.
 
informations.
   
Si par contre vous 'pensez' avoir compris la premi�re s�rie mais
+
Si par contre vous 'pensez' avoir compris la première série mais
que vous n'�tes pas 'certain' de tout avoir compris, il est
+
que vous n'êtes pas 'certain' de tout avoir compris, il est
 
encore temps de la relire car d'ici quelques pages vous allez
 
encore temps de la relire car d'ici quelques pages vous allez
commencer vous sentir perdu, ce qui serait bien dommage!!! Pour
+
commencer à vous sentir perdu, ce qui serait bien dommage!!! Pour
v�rifier un tout petit peu vos connaissances, voici quelques
+
vérifier un tout petit peu vos connaissances, voici quelques
questions toutes b�tes:
+
questions toutes bêtes:
   
 
1) MOVE.L #$12345678,A0 puis MOVE.W #$1234,A0
 
1) MOVE.L #$12345678,A0 puis MOVE.W #$1234,A0
Line 37: Line 38:
 
Qu'obtient-on dans A0?
 
Qu'obtient-on dans A0?
 
 
3) Pouvez-vous expliquer concr�tement ce qui se passe lorsque je
+
3) Pouvez-vous expliquer concrètement ce qui se passe lorsque je
 
fais MOVE.W #$2700,SR
 
fais MOVE.W #$2700,SR
 
 
4) MOVE.L #MESSAGE,-(SP) Que r�alise cette fonction?
+
4) MOVE.L #MESSAGE,-(SP) Que réalise cette fonction?
 
MOVE.W #9,-(SP)
 
MOVE.W #9,-(SP)
 
TRAP #1
 
TRAP #1
Line 46: Line 47:
   
   
Avant de vous donner les r�ponses, voici la liste (non
+
Avant de vous donner les réponses, voici la liste (non
d�finitive) de ce qui sera trait� dans cette seconde s�rie de
+
définitive) de ce qui sera traité dans cette seconde série de
 
cours. Les traps (comment les reprogrammer), la Ligne A, le GEM,
 
cours. Les traps (comment les reprogrammer), la Ligne A, le GEM,
 
les tableaux, les programmes auto-modifiables, les macros, les
 
les tableaux, les programmes auto-modifiables, les macros, les
 
inclusions de fichiers, etc... A chaque fois, le travail
 
inclusions de fichiers, etc... A chaque fois, le travail
consistera vous indiquer comment faire et vous fournir une
+
consistera à vous indiquer comment faire et à vous fournir une
liste d'articles, d'ouvrages plus ou moins pr�cis dans ce
+
liste d'articles, d'ouvrages plus ou moins précis dans ce
domaine. Il m'a sembl� en effet ridicule de tartiner par exemple
+
domaine. Il m'a semblé en effet ridicule de tartiner par exemple
 
50 pages sur le GEM alors que cela n'est pas susceptible
 
50 pages sur le GEM alors que cela n'est pas susceptible
d' int�resser tout le monde. Par contre il m'a sembl� normal de
+
d' intéresser tout le monde. Par contre il m'a semblé normal de
d�grossir ce sujet et de fournir toutes les pi�ces n�cessaires
+
dégrossir ce sujet et de fournir toutes les pièces nécessaires
(ou, du moins, les pi�ces dont j'ai connaissance) afin que ceux d'
+
(ou, du moins, les pièces dont j'ai connaissance) afin que ceux d'
entre vous qui d�sirent r�aliser des applications de haut niveau
+
entre vous qui désirent réaliser des applications de haut niveau
 
puissent le faire. Il leur faudra bosser mais en assembleur il
 
puissent le faire. Il leur faudra bosser mais en assembleur il
est courant de passer beaucoup de temps simplement chercher de
+
est courant de passer beaucoup de temps simplement à chercher de
la documentation. Je vous fournis donc la liste de celle-ci,
+
la documentation. Je vous fournis donc la liste de celle-ci, à
 
vous de voir si vous en avez besoin. A titre indicatif, la doc
 
vous de voir si vous en avez besoin. A titre indicatif, la doc
 
que j'utilise pour GEM se nomme PRO GEM, fait environ 200 pages,
 
que j'utilise pour GEM se nomme PRO GEM, fait environ 200 pages,
 
et est toute en Anglais!!!! Vous vous rendez donc bien compte que
 
et est toute en Anglais!!!! Vous vous rendez donc bien compte que
faire un cours complet sur GEM grossirait de mani�re stupide ce
+
faire un cours complet sur GEM grossirait de manière stupide ce
 
cours d'assembleur!!!!
 
cours d'assembleur!!!!
   
C'est ce m�me principe qui sera utilis� pour les diff�rents
+
C'est ce même principe qui sera utilisé pour les différents
sujets abord�s dans cette seconde s�rie. Vous trouverez
+
sujets abordés dans cette seconde série. Vous trouverez
d'ailleurs 2 livrets, le premier comprenant les cours eux-m�mes,
+
d'ailleurs 2 livrets, le premier comprenant les cours eux-mêmes,
le second comportant de courts listings sur les diff�rents
+
le second comportant de courts listings sur les différents
 
sujets. Attention, ces listings sont pour la plupart
 
sujets. Attention, ces listings sont pour la plupart
inutilisables sans avoir lu au pr�alable le cours correspondant.
+
inutilisables sans avoir lu au préalable le cours correspondant.
Pour finir je vous donnerai le m�me conseil que pour la premi�re
+
Pour finir je vous donnerai le même conseil que pour la première
s�rie: prenez votre temps, relisez bien chaque chapitre, faites
+
série: prenez votre temps, relisez bien chaque chapitre, faites
 
des petits programmes en utilisant ce que vous venez d'apprendre!
 
des petits programmes en utilisant ce que vous venez d'apprendre!
   
R�sultat du concours: Si vous avez faux un seul truc, je
+
Résultat du concours: Si vous avez faux à un seul truc, je
 
vous conseille vivement de reprendre le premier cours!!!
 
vous conseille vivement de reprendre le premier cours!!!
   
1) On obtient #$00001234 dans A0. Ceux qui ont r�pondu qu'on
+
1) On obtient #$00001234 dans A0. Ceux qui ont répondu qu'on
 
obtenait #$12341234 ont tout faux! En effet on aurait obtenu
 
obtenait #$12341234 ont tout faux! En effet on aurait obtenu
#$12341234 si l'op�ration avait eu lieu sur un registre de
+
#$12341234 si l'opération avait eu lieu sur un registre de
  +
données.
donn�es.
 
Sur un registre d'adresse pris en op�rande destination, il y a
+
Sur un registre d'adresse pris en opérande destination, il y a
extension sur le poids fort. L�, y-en-a d�j� 50% qui reprennent la
+
extension sur le poids fort. , y-en-a déjà 50% qui reprennent la
s�rie 1......
+
série 1......
   
 
2) On n'obtient rien du tout parce qu'on ne peut pas assembler!!!
 
2) On n'obtient rien du tout parce qu'on ne peut pas assembler!!!
On ne peut travailler avec un registre d'adresse comme op�rande
+
On ne peut travailler avec un registre d'adresse comme opérande
 
destination que sur le format word ou long word mais pas sur le
 
destination que sur le format word ou long word mais pas sur le
 
format byte.
 
format byte.
   
 
3)$2700 cela donne en binaire %0010011100000000. Si on plaque ce
 
3)$2700 cela donne en binaire %0010011100000000. Si on plaque ce
nombre sur le Status Register (ceux qui croyaient que SR c'�tait
+
nombre sur le Status Register (ceux qui croyaient que SR c'était
la pile et qui on donc confondu avec SP doivent imp�rativement
+
la pile et qui on donc confondu avec SP doivent impérativement
recommencer la s�rie 1 en entier, ils sont juste pr�ts pour ne
+
recommencer la série 1 en entier, ils sont juste prêts pour ne
rien comprendre la suite!), on se rend compte que les bits mis
+
rien comprendre à la suite!), on se rend compte que les bits mis
1 dans ce nombre correspondent aux bits S,I2,I1 et I0.
+
à 1 dans ce nombre correspondent aux bits S,I2,I1 et I0.
 
Comme on ne peut taper dans le SR qu'en mode superviseur, on en
 
Comme on ne peut taper dans le SR qu'en mode superviseur, on en
d�duit qu'une telle op�ration ne peut se faire que dans ce mode.
+
déduit qu'une telle opération ne peut se faire que dans ce mode.
Notre MOVE conserve donc le bit superviseur dans l'�tat 1 puis
+
Notre MOVE conserve donc le bit superviseur dans l'état 1 puis
force les bits d�crivant le niveau d'interruption 1. Le niveau
+
force les bits décrivant le niveau d'interruption à 1. Le niveau
 
d'interruption minimal pris en cours est donc le niveau 7 qui est
 
d'interruption minimal pris en cours est donc le niveau 7 qui est
le niveau maximum. En r�sum�, nous venons de bloquer, d'interdire
+
le niveau maximum. En résumé, nous venons de bloquer, d'interdire
 
les interruptions.
 
les interruptions.
   
4) Cette fonction r�alise 2 choses. Tout d'abord l'affichage du
+
4) Cette fonction réalise 2 choses. Tout d'abord l'affichage du
texte situ� l'adresse MESSAGE. C'est en effet la fonction
+
texte situé à l'adresse MESSAGE. C'est en effet la fonction
Cconws() du gemdos. Mais cette fonction r�alise aussi autre
+
Cconws() du gemdos. Mais cette fonction réalise aussi autre
 
chose.... une joyeuse erreur! car en passant l'adresse puis le
 
chose.... une joyeuse erreur! car en passant l'adresse puis le
num�ro de la fonction nous avons modifi� la pile de 6 bytes (un
+
numéro de la fonction nous avons modifié la pile de 6 bytes (un
long word pour l'adresse et un word pour le num�ro de fonction)
+
long word pour l'adresse et un word pour le numéro de fonction)
 
or nous ne corrigeons que de 4!!!!!
 
or nous ne corrigeons que de 4!!!!!
   
   
D'apr�s vos r�ponses, vous pouvez continuer ou alors
+
D'après vos réponses, vous pouvez continuer ou alors
recommencer la s�rie 1 avec un peu moins d'empressement. Il faut
+
recommencer la série 1 avec un peu moins d'empressement. Il faut
TOUT comprendre, c'est �a le secret. Si vous avez commis quelques
+
TOUT comprendre, c'est ça le secret. Si vous avez commis quelques
 
erreurs et que voulez cependant attaquer directement la seconde
 
erreurs et que voulez cependant attaquer directement la seconde
s�rie, ne soyez pas �tonn� d'abandonner l'assembleur dans
+
série, ne soyez pas étonné d'abandonner l'assembleur dans
quelques mois, d�courag� par des montagnes de listings auxquels
+
quelques mois, découragé par des montagnes de listings auxquels
 
vous ne comprendrez rien!
 
vous ne comprendrez rien!
   

Latest revision as of 23:52, 16 December 2023

****************************************************************
*                                                              *
*         COURS D'ASSEMBLEUR 68000 SUR ATARI ST                *
*                                                              *
*            par Le Féroce Lapin (from 44E)                    *
*                                                              *
*                    Seconde série                             *
*                                                              *
*                    Cours numéro 1                            *
****************************************************************

Voici la seconde série de cours sur l'assembleur 68000 sur Atari. 
Ce cours fait suite à la première série.  J'espère pour vous  que 
cette première série a été parfaitement comprise, et que RIEN n'a 
été laissé de coté. Partant de ce principe, nous pouvons dire que 
vos  bases sont bien solides,  et que nous allons  pouvoir  allez 
beaucoup  plus  vite.  La première série était  destinée  à  vous 
apprendre  le  mécanisme de fonctionnement du 68000 et du  ST  au 
niveau  de son système d'exploitation,  la seconde série ne  sera 
qu'un ensemble de ficelles,  de clefs d'accès à divers choses. Si 
vous  avez PARFAITEMENT étudiés la première série,  vous  pourrez 
tirer  doucement sur ces ficelles afin de faire venir à vous  les 
informations.

Si par contre vous 'pensez' avoir compris la première série  mais 
que  vous  n'êtes pas 'certain' de tout  avoir  compris,  il  est 
encore  temps  de la relire car d'ici quelques pages  vous  allez 
commencer à vous sentir perdu, ce qui serait bien dommage!!! Pour 
vérifier  un  tout petit peu vos  connaissances,  voici  quelques 
questions toutes bêtes:

1) MOVE.L       #$12345678,A0 puis MOVE.W #$1234,A0
        Qu'obtient-on dans A0?
        
2) MOVE.L  #$12345678,A0 puis MOVE.B  #$12,A0
        Qu'obtient-on dans A0?
        
3) Pouvez-vous expliquer concrètement ce qui se passe lorsque  je 
   fais MOVE.W       #$2700,SR
   
4) MOVE.L       #MESSAGE,-(SP)    Que réalise cette fonction?
   MOVE.W       #9,-(SP)
   TRAP #1
   ADDQ.L       #4,SP               


Avant  de  vous  donner  les  réponses,   voici  la  liste   (non 
définitive)  de  ce qui sera traité dans cette seconde  série  de 
cours.  Les traps (comment les reprogrammer), la Ligne A, le GEM, 
les tableaux,  les programmes auto-modifiables,  les macros,  les 
inclusions  de  fichiers,   etc...  A  chaque  fois,  le  travail 
consistera  à vous indiquer comment faire et à vous  fournir  une 
liste  d'articles,  d'ouvrages  plus  ou  moins  précis  dans  ce 
domaine.  Il m'a semblé en effet ridicule de tartiner par exemple 
50  pages  sur  le  GEM  alors que  cela  n'est  pas  susceptible 
d' intéresser tout le monde.  Par contre il m'a semblé normal  de 
dégrossir  ce sujet et de fournir toutes les  pièces  nécessaires 
(ou, du moins, les pièces dont j'ai connaissance) afin que ceux d'
entre vous qui désirent réaliser des  applications de haut niveau 
puissent  le faire.  Il leur faudra bosser mais en assembleur  il 
est courant de passer beaucoup de temps simplement à chercher  de 
la documentation.  Je vous fournis donc la liste de  celle-ci,  à 
vous de voir si vous en avez besoin.  A titre indicatif,  la  doc 
que j'utilise pour GEM se nomme PRO GEM,  fait environ 200 pages, 
et est toute en Anglais!!!! Vous vous rendez donc bien compte que 
faire  un cours complet sur GEM grossirait de manière stupide  ce 
cours d'assembleur!!!!

  C'est  ce même principe qui sera utilisé  pour  les  différents 
sujets   abordés  dans  cette  seconde  série.   Vous   trouverez 
d'ailleurs 2 livrets,  le premier comprenant les cours eux-mêmes, 
le  second  comportant  de courts  listings  sur  les  différents 
sujets.   Attention,   ces   listings   sont  pour   la   plupart 
inutilisables sans avoir lu au préalable le cours  correspondant. 
Pour finir je vous donnerai le même conseil que pour la  première 
série:  prenez votre temps,  relisez bien chaque chapitre, faites 
des petits programmes en utilisant ce que vous venez  d'apprendre!

    Résultat du concours:  Si vous avez faux à un seul  truc,  je 
vous conseille vivement de reprendre le premier cours!!!

1)  On  obtient #$00001234 dans A0.  Ceux qui  ont  répondu  qu'on 
obtenait  #$12341234  ont tout faux!  En effet on  aurait  obtenu  
#$12341234  si  l'opération  avait eu lieu  sur  un  registre  de 
données.
Sur  un registre d'adresse pris en opérande destination,  il y  a 
extension sur le poids fort. Là, y-en-a déjà 50% qui reprennent la 
série 1......       

2) On n'obtient rien du tout parce qu'on ne peut pas assembler!!! 
On  ne peut travailler avec un registre d'adresse comme  opérande 
destination  que sur le format word ou long word mais pas sur  le 
format byte.

3)$2700 cela donne en binaire %0010011100000000.  Si on plaque ce 
nombre sur le Status Register (ceux qui croyaient que SR  c'était 
la  pile et qui on donc confondu avec SP  doivent  impérativement 
recommencer  la série 1 en entier, ils sont juste prêts  pour  ne 
rien comprendre à la suite!),  on se rend compte que les bits mis 
à 1 dans ce nombre correspondent aux bits S,I2,I1 et I0.
Comme on ne peut taper dans le SR qu'en mode superviseur,  on  en 
déduit qu'une telle opération ne peut se faire que dans ce  mode. 
Notre  MOVE conserve donc le bit superviseur dans l'état  1  puis 
force les bits décrivant le niveau d'interruption à 1.  Le niveau 
d'interruption minimal pris en cours est donc le niveau 7 qui est 
le niveau maximum. En résumé, nous venons de bloquer, d'interdire 
les interruptions.

4) Cette fonction réalise 2 choses.  Tout d'abord l'affichage  du 
texte  situé  à l'adresse MESSAGE.  C'est en  effet  la  fonction 
Cconws()  du  gemdos.  Mais cette fonction  réalise  aussi  autre 
chose....  une joyeuse erreur!  car en passant l'adresse puis  le 
numéro  de la fonction nous avons modifié la pile de 6 bytes  (un 
long  word pour l'adresse et un word pour le numéro de  fonction) 
or nous ne corrigeons que de 4!!!!!


    D'après  vos  réponses,   vous  pouvez  continuer  ou   alors 
recommencer la série 1 avec un peu moins d'empressement.  Il faut 
TOUT comprendre, c'est ça le secret. Si vous avez commis quelques 
erreurs  et que voulez cependant attaquer directement la  seconde 
série,   ne  soyez  pas  étonné  d'abandonner  l'assembleur  dans 
quelques  mois,  découragé par des montagnes de listings  auxquels 
vous ne comprendrez rien!

                Bon courage

Back to ASM_Tutorial