COURS201.TXT/fr: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
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) * |
* * |
* * |
||
− | * Seconde |
+ | * Seconde série * |
* * |
* * |
||
− | * Cours |
+ | * Cours numéro 1 * |
**************************************************************** |
**************************************************************** |
||
− | Voici la seconde |
+ | Voici la seconde série de cours sur l'assembleur 68000 sur Atari. |
− | Ce cours fait suite |
+ | Ce cours fait suite à la première série. J'espère pour vous que |
− | cette |
+ | 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 |
vos bases sont bien solides, et que nous allons pouvoir allez |
||
− | beaucoup plus vite. La |
+ | beaucoup plus vite. La première série était destinée à vous |
− | apprendre le |
+ | apprendre le mécanisme de fonctionnement du 68000 et du ST au |
− | niveau de son |
+ | niveau de son système d'exploitation, la seconde série ne sera |
− | qu'un ensemble de ficelles, de clefs d' |
+ | qu'un ensemble de ficelles, de clefs d'accès à divers choses. Si |
− | vous avez PARFAITEMENT |
+ | vous avez PARFAITEMENT étudiés la première série, vous pourrez |
− | tirer doucement sur ces ficelles afin de faire venir |
+ | tirer doucement sur ces ficelles afin de faire venir à vous les |
informations. |
informations. |
||
− | Si par contre vous 'pensez' avoir compris la |
+ | Si par contre vous 'pensez' avoir compris la première série mais |
− | que vous n' |
+ | 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 |
+ | commencer à vous sentir perdu, ce qui serait bien dommage!!! Pour |
− | + | vérifier un tout petit peu vos connaissances, voici quelques |
|
− | questions toutes |
+ | 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 37: | ||
Qu'obtient-on dans A0? |
Qu'obtient-on dans A0? |
||
− | 3) Pouvez-vous expliquer |
+ | 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 |
+ | 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 46: | ||
− | Avant de vous donner les |
+ | 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, |
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 |
+ | consistera à vous indiquer comment faire et à vous fournir une |
− | liste d'articles, d'ouvrages plus ou moins |
+ | liste d'articles, d'ouvrages plus ou moins précis dans ce |
− | domaine. Il m'a |
+ | 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' |
+ | 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 |
+ | (ou, du moins, les pièces dont j'ai connaissance) afin que ceux d' |
− | entre vous qui |
+ | 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 |
+ | 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 |
+ | faire un cours complet sur GEM grossirait de manière stupide ce |
cours d'assembleur!!!! |
cours d'assembleur!!!! |
||
− | C'est ce |
+ | C'est ce même principe qui sera utilisé pour les différents |
− | sujets |
+ | sujets abordés dans cette seconde série. Vous trouverez |
− | d'ailleurs 2 livrets, le premier comprenant les cours eux- |
+ | d'ailleurs 2 livrets, le premier comprenant les cours eux-mêmes, |
− | le second comportant de courts listings sur les |
+ | 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 |
+ | inutilisables sans avoir lu au préalable le cours correspondant. |
− | Pour finir je vous donnerai le |
+ | 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! |
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!!! |
vous conseille vivement de reprendre le premier cours!!! |
||
− | 1) On obtient #$00001234 dans A0. Ceux qui ont |
+ | 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' |
+ | #$12341234 si l'opération avait eu lieu sur un registre de |
+ | données. |
||
− | donn�es. |
||
− | Sur un registre d'adresse pris en |
+ | Sur un registre d'adresse pris en opérande destination, il y a |
− | extension sur le poids fort. |
+ | 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!!! |
2) On n'obtient rien du tout parce qu'on ne peut pas assembler!!! |
||
− | On ne peut travailler avec un registre d'adresse comme |
+ | 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' |
+ | nombre sur le Status Register (ceux qui croyaient que SR c'était |
− | la pile et qui on donc confondu avec SP doivent |
+ | la pile et qui on donc confondu avec SP doivent impérativement |
− | recommencer la |
+ | recommencer la série 1 en entier, ils sont juste prêts pour ne |
− | rien comprendre |
+ | 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 |
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' |
+ | Notre MOVE conserve donc le bit superviseur dans l'état 1 puis |
− | force les bits |
+ | 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 |
+ | le niveau maximum. En résumé, nous venons de bloquer, d'interdire |
les interruptions. |
les interruptions. |
||
− | 4) Cette fonction |
+ | 4) Cette fonction réalise 2 choses. Tout d'abord l'affichage du |
− | texte |
+ | texte situé à l'adresse MESSAGE. C'est en effet la fonction |
− | Cconws() du gemdos. Mais cette fonction |
+ | 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 |
|
− | long word pour l'adresse et un word pour le |
+ | 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' |
+ | D'après vos réponses, vous pouvez continuer ou alors |
− | recommencer la |
+ | recommencer la série 1 avec un peu moins d'empressement. Il faut |
− | TOUT comprendre, c'est |
+ | 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 |
|
− | quelques mois, |
+ | quelques mois, découragé par des montagnes de listings auxquels |
vous ne comprendrez rien! |
vous ne comprendrez rien! |
||
Revision as of 12:38, 24 November 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