Qui sait programmer en Assembleur ?

Cette catégorie traite de développements récents pour nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Papy.G, fneck, Carl

Avatar du membre
parabolus
Messages : 213
Enregistré le : 30 nov. 2008 00:56
Localisation : Arcachon
Contact :

Re: Qui sait programmer en Assembleur ?

Message par parabolus » 01 mai 2011 18:33

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é.
Modifié en dernier par parabolus le 02 mai 2011 23:44, modifié 1 fois.

jester
Messages : 2271
Enregistré le : 01 janv. 2009 23:16
Localisation : Grenoble

Re: Qui sait programmer en Assembleur ?

Message par jester » 01 mai 2011 19:10

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.

Avatar du membre
Marsupilami
Messages : 330
Enregistré le : 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 ?

Message par Marsupilami » 02 mai 2011 21:36

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 :lol:
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

Avatar du membre
jfg
Messages : 245
Enregistré le : 22 mars 2011 16:28
Localisation : Région parisienne

Re: Qui sait programmer en Assembleur ?

Message par jfg » 02 mai 2011 22:07

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 :)
Le Turbo Pascal, une bien belle invention. J'avais adoré, et en plus le prix était abordable! Merci Mr. Philippe Kahn!

Avatar du membre
Eric_80
Messages : 184
Enregistré le : 31 mars 2011 16:52

Re: Qui sait programmer en Assembleur ?

Message par Eric_80 » 14 mai 2011 12:08

Eric_80 a écrit :Que ceux qui ont suivi convertissent par exemple : 1750 décimal => en octal. :mrgreen:
Bon, je donne la solution : :)

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 : :wink:

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
Fichiers joints
octal.PNG
octal.PNG (3.63 Kio) Vu 1391 fois

Avatar du membre
Eric_80
Messages : 184
Enregistré le : 31 mars 2011 16:52

Re: Qui sait programmer en Assembleur ?

Message par Eric_80 » 14 mai 2011 16:26

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 ?? :shock:
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.

Avatar du membre
Carl
Modérateur
Messages : 11249
Enregistré le : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: Qui sait programmer en Assembleur ?

Message par Carl » 14 mai 2011 17:42

merci pour la leçon base n :wink:

carl

Avatar du membre
6502man
Messages : 10167
Enregistré le : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: Qui sait programmer en Assembleur ?

Message par 6502man » 14 mai 2011 22:34

J'avais complement zappez :?

Et en plus pas mal débordé avec le boulot ...


Bravo pour le corrigé de l'exercice :wink:
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.

Avatar du membre
Eric_80
Messages : 184
Enregistré le : 31 mars 2011 16:52

Re: Qui sait programmer en Assembleur ?

Message par Eric_80 » 16 mai 2011 22:34

6502man a écrit :J'avais complement zappé :?
Pas grave, je te propose d'écrire le programme en Basic pour convertir l'octal en décimal. :D
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 ? :mrgreen:

Daniel
Messages : 12959
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Qui sait programmer en Assembleur ?

Message par Daniel » 17 mai 2011 09:52

Deuligne pour Thomson tous modèles (sans contrôle de validité du nombre octal saisi) :

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
Version simplifiée plus courte :

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.

jester
Messages : 2271
Enregistré le : 01 janv. 2009 23:16
Localisation : Grenoble

Re: Qui sait programmer en Assembleur ?

Message par jester » 17 mai 2011 10:03

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 :wink:

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 8)

Avatar du membre
Eric_80
Messages : 184
Enregistré le : 31 mars 2011 16:52

Re: Qui sait programmer en Assembleur ?

Message par Eric_80 » 17 mai 2011 11:11

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 :wink:
Le problème, c'est qu'à part critiquer, je ne t'ai pas vu proposer de solution...
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. :)

jester
Messages : 2271
Enregistré le : 01 janv. 2009 23:16
Localisation : Grenoble

Re: Qui sait programmer en Assembleur ?

Message par jester » 17 mai 2011 11:31

Tu m'as démasqué !

Avatar du membre
Eric_80
Messages : 184
Enregistré le : 31 mars 2011 16:52

Re: Qui sait programmer en Assembleur ?

Message par Eric_80 » 17 mai 2011 11:46

Superbe deuligne Daniel!
Ne pouvant refaire la même chose, je propose une voie différente : :wink:

Code : Tout sélectionner

1 INPUTN$:FORI=0TOLEN(N$)-1:T=T+VAL(MID$(N$,LEN(N$)-I,1))*8^I:NEXT:?T

Avatar du membre
Carl
Modérateur
Messages : 11249
Enregistré le : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: Qui sait programmer en Assembleur ?

Message par Carl » 17 mai 2011 13:04

Eric, Jester est probablement l'un des meilleurs programmeurs sur Exlevision mais dans ce post il a mis une casquette d'agitateur... :wink:


carl

Répondre