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 de l’utilisateur
parabolus
Messages : 213
Inscription : 30 nov. 2008 00:56
Localisation : Arcachon
Contact :

Re: Qui sait programmer en Assembleur ?

Message par parabolus »

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é.
Dernière modification par parabolus le 02 mai 2011 23:44, modifié 1 fois.
jester
Messages : 2328
Inscription : 01 janv. 2009 23:16
Localisation : Grenoble

Re: Qui sait programmer en Assembleur ?

Message par jester »

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.
Marsupilami
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 ?

Message par Marsupilami »

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 de l’utilisateur
jfg
Messages : 245
Inscription : 22 mars 2011 16:28
Localisation : Région parisienne

Re: Qui sait programmer en Assembleur ?

Message par jfg »

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 de l’utilisateur
Eric_80
Messages : 184
Inscription : 31 mars 2011 16:52

Re: Qui sait programmer en Assembleur ?

Message par Eric_80 »

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
Pièces jointes
octal.PNG
octal.PNG (3.63 Kio) Consulté 3901 fois
Avatar de l’utilisateur
Eric_80
Messages : 184
Inscription : 31 mars 2011 16:52

Re: Qui sait programmer en Assembleur ?

Message par Eric_80 »

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 de l’utilisateur
Carl
Modérateur
Messages : 13253
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: Qui sait programmer en Assembleur ?

Message par Carl »

merci pour la leçon base n :wink:

carl
Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: Qui sait programmer en Assembleur ?

Message par 6502man »

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 de l’utilisateur
Eric_80
Messages : 184
Inscription : 31 mars 2011 16:52

Re: Qui sait programmer en Assembleur ?

Message par Eric_80 »

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 : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Qui sait programmer en Assembleur ?

Message par Daniel »

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 : 2328
Inscription : 01 janv. 2009 23:16
Localisation : Grenoble

Re: Qui sait programmer en Assembleur ?

Message par jester »

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 de l’utilisateur
Eric_80
Messages : 184
Inscription : 31 mars 2011 16:52

Re: Qui sait programmer en Assembleur ?

Message par Eric_80 »

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 : 2328
Inscription : 01 janv. 2009 23:16
Localisation : Grenoble

Re: Qui sait programmer en Assembleur ?

Message par jester »

Tu m'as démasqué !
Avatar de l’utilisateur
Eric_80
Messages : 184
Inscription : 31 mars 2011 16:52

Re: Qui sait programmer en Assembleur ?

Message par Eric_80 »

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 de l’utilisateur
Carl
Modérateur
Messages : 13253
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: Qui sait programmer en Assembleur ?

Message par Carl »

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