Qui sait programmer en Assembleur ?
Modérateurs : Papy.G, fneck, Carl
Re: Qui sait programmer en Assembleur ?
Je me suis remis à l'Assembler quand j'ai acheté mon Apple 2 en 1983. Je me souviens avoir été très déçu par la pauvreté du soft qui était fourni à l'époque. Le BASIC avait un éditeur qui n'utilisait pas les possibilités de la machine, en particulier l'écran. Il travaillait ligne après ligne comme s'il avait affaire à une machine à écrire. C'est pourquoi, j'ai écrit un éditeur qui travaille en full screen c'est à dire avec lequel on peut se déplacer et modifier une partie quelconque de l'écran sans avoir à tout retaper, avec des fonctions d'insertion ou de suppression de caractères, de scrollng vers l'avant, vers l'arrière, des fonctions de recherche, Bref, un édtteur qui se tient, tel qu'on pouvait en trouver sur les gros systèmes de l'époque.
Pour écrire ce genre de programme il ne suffit pas de connaitre l'Assembler, il faut pouvoir l'interfacer avec le DOS ou le PRODOS ce qui m'a obligé à décortiquer le MONITOR en ROM ce qui n'est pas une partie de plaisir compte tenu de la manière dont il est écrit.
Vous pouvez trouver le source de mon éditeur ici http://parabolfr.free.fr/Turbo_Editor_V3.txt
Après je n'ai plus touché l'Assembler. Je vis avec mon temps.Je progamme en C++ ou en C#.
Comme je ne fais pas de développent hardware, je peux me passer de l'Assembler. D'ailleurs je ne vois pas pourquoi il est nécessaire dans ce cas. Mais je ne suis peut être pas d'un niveau assez avancé.
Pour écrire ce genre de programme il ne suffit pas de connaitre l'Assembler, il faut pouvoir l'interfacer avec le DOS ou le PRODOS ce qui m'a obligé à décortiquer le MONITOR en ROM ce qui n'est pas une partie de plaisir compte tenu de la manière dont il est écrit.
Vous pouvez trouver le source de mon éditeur ici http://parabolfr.free.fr/Turbo_Editor_V3.txt
Après je n'ai plus touché l'Assembler. Je vis avec mon temps.Je progamme en C++ ou en C#.
Comme je ne fais pas de développent hardware, je peux me passer de l'Assembler. D'ailleurs je ne vois pas pourquoi il est nécessaire dans ce cas. Mais je ne suis peut être pas d'un niveau assez avancé.
Dernière modification par parabolus le 02 mai 2011 23:44, modifié 1 fois.
Re: Qui sait programmer en Assembleur ?
Depuis 2ans sur TMS7020 pour machines Exelvision, niveau débutant, je l'utilise juste pour voir des trucs que j'aurais voulu voir à l'époque. J'ai beaucoup pratiqué pendant un moment, mais comme tout plaisir solitaire on s'en lasse vite.
-
- Messages : 364
- Inscription : 12 nov. 2008 18:19
- Localisation : Jamais très loin d'un Atari 800 XL, en Bretagne, parfois en corse et RP
- Contact :
Re: Qui sait programmer en Assembleur ?
Houlaaa ca remonte à loin...Il y a 20 ans je programmais des routines en ASM sur mon 386 (avec copro 80387) pour les intégrer à des programmes en Turbo Pascal 6 pour calculer des fractales (ca calculait plus vite), donc MASM, TASM et tutti quanti
Et j'ai tout oublié depuis mais j'ai encore mes programmes sur disquette
Et j'ai tout oublié depuis mais j'ai encore mes programmes sur disquette
www.atarinside.com
Atari 800 XL - Jeux et utilitaires Atari Fr/UK/Be/De - Photos HD de cartes mères 800XL - Atari 800 XL revue de presse
Atari 800 XL - Jeux et utilitaires Atari Fr/UK/Be/De - Photos HD de cartes mères 800XL - Atari 800 XL revue de presse
Re: Qui sait programmer en Assembleur ?
Le Turbo Pascal, une bien belle invention. J'avais adoré, et en plus le prix était abordable! Merci Mr. Philippe Kahn!Marsupilami a écrit :Houlaaa ca remonte à loin...Il y a 20 ans je programmais des routines en ASM sur mon 386 (avec copro 80387) pour les intégrer à des programmes en Turbo Pascal 6 pour calculer des fractales (ca calculait plus vite), donc MASM, TASM et tutti quanti
Re: Qui sait programmer en Assembleur ?
Bon, je donne la solution :Eric_80 a écrit :Que ceux qui ont suivi convertissent par exemple : 1750 décimal => en octal.
En prenant les puissances de 8 : on utilise la méthode dite "par divisions successives".
Il suffit de diviser le nombre décimal par la plus grande puissance de 8 qui peut le diviser,
de faire une soustraction et recommencer à partir du reste, jusqu'a obtenir reste = zéro.
1750 décimal = donc 3326 en octal. Voici un petit programme Basic que j'ai concocté pour vous :
Code : Tout sélectionner
10 CLS
20 N=0: PRINT:PRINT
30 INPUT "ENTREZ UN DECIMAL";DE
40 IF DE >= 8^N THEN N=N+1: GOTO 40
50 N=N-1: DV=INT(DE/(8^N))
60 PRINT DV;
70 RE=DE - (DV * (8^N))
80 IF RE <> 0 THEN DE=RE : GOTO 40
90 IF N <> 0 THEN FOR I=1 TO N : PRINT "0 "; : NEXT I
100 GOTO 20
- Pièces jointes
-
- octal.PNG (3.63 Kio) Consulté 3955 fois
Re: Qui sait programmer en Assembleur ?
Bien sûr, au lieu d'afficher un à un les chiffres obtenus pour trouver l'octal,
on peut calculer directement le nombre 3326 à partir de 3 , 3 , 2 et 6.
Comment faire ??
Mais en utilisant la base 10 pardi! (Celle que vous utilisez quotidiennement) :
10^0= 1 ; 10^1= 10 ; 10^2= 100 ; 10^3= 1000 ; 10^4= 10000 ; etc.
(3 x 1000) + (3 x 100) + (2 x 10) + (6 x 1) = 3326
Ce qui, une fois traduit en langage Basic, ligne 60, donne :
10 CLS
20 NB=0: N=0: PRINT:PRINT
30 INPUT "ENTREZ UN DECIMAL";DE
40 IF DE >= 8^N THEN N=N+1: GOTO 40
50 N=N-1: DV=INT(DE/ 8^N)
60 NB=NB + DV * 10^N
70 DE=DE - DV * 8^N
80 IF DE <> 0 THEN 50
90 PRINT NB
100 GOTO 20
Voilà, vous pouvez vous servir de ces exemples pour convertir un nombre
avec n'importe quelle base: 2, 5, 8, 10, 16, etc.
Le principe est toujours le même. Il vous permettra de bien aborder l'assembleur.
on peut calculer directement le nombre 3326 à partir de 3 , 3 , 2 et 6.
Comment faire ??
Mais en utilisant la base 10 pardi! (Celle que vous utilisez quotidiennement) :
10^0= 1 ; 10^1= 10 ; 10^2= 100 ; 10^3= 1000 ; 10^4= 10000 ; etc.
(3 x 1000) + (3 x 100) + (2 x 10) + (6 x 1) = 3326
Ce qui, une fois traduit en langage Basic, ligne 60, donne :
10 CLS
20 NB=0: N=0: PRINT:PRINT
30 INPUT "ENTREZ UN DECIMAL";DE
40 IF DE >= 8^N THEN N=N+1: GOTO 40
50 N=N-1: DV=INT(DE/ 8^N)
60 NB=NB + DV * 10^N
70 DE=DE - DV * 8^N
80 IF DE <> 0 THEN 50
90 PRINT NB
100 GOTO 20
Voilà, vous pouvez vous servir de ces exemples pour convertir un nombre
avec n'importe quelle base: 2, 5, 8, 10, 16, etc.
Le principe est toujours le même. Il vous permettra de bien aborder l'assembleur.
- Carl
- Modérateur
- Messages : 13300
- Inscription : 08 avr. 2007 13:21
- Localisation : http://www.doledujura.fr
- Contact :
Re: Qui sait programmer en Assembleur ?
merci pour la leçon base n
carl
carl
Re: Qui sait programmer en Assembleur ?
J'avais complement zappez
Et en plus pas mal débordé avec le boulot ...
Bravo pour le corrigé de l'exercice
Et en plus pas mal débordé avec le boulot ...
Bravo pour le corrigé de l'exercice
Re: Qui sait programmer en Assembleur ?
Pas grave, je te propose d'écrire le programme en Basic pour convertir l'octal en décimal.6502man a écrit :J'avais complement zappé
Le défi cette fois est d'écrire le programme le plus court possible.
Un peu comme les concours de "deuligne" du temps d'Hebdogiciel.
Celui qui écrit le prog le plus court en caractères ou en octets gagne.
Y a des amateurs de deuligne ici ?
Re: Qui sait programmer en Assembleur ?
Deuligne pour Thomson tous modèles (sans contrôle de validité du nombre octal saisi) :
Version simplifiée plus courte :
Code : Tout sélectionner
1 DEFINTA-Z:PRINT"ENTREZ UN NOMBRE OCTAL":PRINT"OU ZERO POUR FINIR ";:INPUTO:D=0:N=1:IFO=0THENEND
2 D=D+N*(O MOD10):N=N*8:O=INT(O/10):IFO>0THEN2ELSEPRINT"CONVERSION EN DECIMAL :";D:PRINT:GOTO1
Code : Tout sélectionner
1 N=1:INPUTO
2 D=D+N*(O MOD10):N=N*8:O=INT(O/10):IFO>0THEN2ELSEPRINTD
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Re: Qui sait programmer en Assembleur ?
Parler d'assembleur et coder des routines en Basic, c'est pas bien !
C'est d'ailleurs plus sportif de réaliser des divisions en langage machine sur des vieux proc 8bits
Pour le concours de codage en 2 lignes, je préférais quand même les listing d'ATARI ST Magazine où l'on trouvait des toutes petites démo en GFA Basic... plus sexy qu'une conversion de base pour un nombre
C'est d'ailleurs plus sportif de réaliser des divisions en langage machine sur des vieux proc 8bits
Pour le concours de codage en 2 lignes, je préférais quand même les listing d'ATARI ST Magazine où l'on trouvait des toutes petites démo en GFA Basic... plus sexy qu'une conversion de base pour un nombre
Re: Qui sait programmer en Assembleur ?
Le problème, c'est qu'à part critiquer, je ne t'ai pas vu proposer de solution...jester a écrit :Parler d'assembleur et coder des routines en Basic, c'est pas bien !
C'est d'ailleurs plus sportif de réaliser des divisions en langage machine sur des vieux proc 8bits
Le vrai programmeur propose un code qui fonctionne. Celui qui ne sait rien faire... fait du bla bla.
Propose nous ta solution pour convertir de l'octal en décimal, plutôt. Avec un deuligne.
J'attends de voir.
Re: Qui sait programmer en Assembleur ?
Tu m'as démasqué !
Re: Qui sait programmer en Assembleur ?
Superbe deuligne Daniel!
Ne pouvant refaire la même chose, je propose une voie différente :
Ne pouvant refaire la même chose, je propose une voie différente :
Code : Tout sélectionner
1 INPUTN$:FORI=0TOLEN(N$)-1:T=T+VAL(MID$(N$,LEN(N$)-I,1))*8^I:NEXT:?T
- Carl
- Modérateur
- Messages : 13300
- Inscription : 08 avr. 2007 13:21
- Localisation : http://www.doledujura.fr
- Contact :
Re: Qui sait programmer en Assembleur ?
Eric, Jester est probablement l'un des meilleurs programmeurs sur Exlevision mais dans ce post il a mis une casquette d'agitateur...
carl
carl