COURS201.TXT
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