COURS201.TXT/fr

From Atari Wiki
Revision as of 14:01, 23 November 2023 by Exxos (talk | contribs)
Jump to navigation Jump to search
****************************************************************
*                                                              *
*         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