Poster un nouveau sujet Poster une réponse
Plus ou moins en ASM sous ion
Auteur Message
sandro



Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Mar 12 Juil 2011, 21:28   Citer 

Bonjours bonsoir,
Je vient de finir un "plus ou moins" en ASM sous ion.
Le programme prend 267 octés.

Voici les liens:
-les programmes : PLUSMOIN.83p PLUSMOIN.8xp (je n'ai pas testé le .8xp)
-le code : PLUSMOIN.z80
-le compilateur : compiler2.bat spasm.exe

ATTENTION : ne sortais pas des bornes ( [0;255] ) : nombres affichés invalides (bug de résultat mais aucun "dommage")

Voici la source:

Code
   .nolist
#include "ion.inc"

#define   nombrecherche   saferam1
#define   n_essais   nombrecherche+1
#define   numerau_essaye   n_essais+1


   .list
#ifdef TI83P
   .org progstart-2
   .db $BB,$6D
#else
   .org progstart
#endif
   ret
   jr nc,start
   .db "PLUSMOIN",0
 
start:


   ld   a,r
   ld   (nombrecherche),a
   ld   a,0
   ld   (numerau_essaye),a
   ld   (n_essais),a


debut:
   ld   hl,$0000
   ld   (pencol),hl
   ld   hl,interval
   bcall _vputs

boucle:
   ld   hl,$0001
   ld   (currow),hl
   ld   hl,(numerau_essaye)
   ld   h,0
   bcall _disphl
   bcall _getkey


   ld   hl,numerau_essaye

   cp   3
   jp   z,haut
   cp   4
   jp   z,bas
   cp   5
   jp   z,entrer


   cp   9
   jp   nz,boucle
   ret   

haut:
   inc   (hl)
   jp   boucle

bas:
   dec   (hl)
   jp   boucle
entrer:
   bcall _clrlcdf
   ld   a,(n_essais)
   inc   a
   ld   (n_essais),a

   ld   hl,$0807
   ld   (currow),hl
   
   ld   l,a
   ld   h,0
   bcall _disphl

   ld   hl,numerau_essaye
   ld   a,(nombrecherche)
   cp   (hl)
   jp   z,victoire
   jp   p,plus

   ld   hl,$0F00
   ld   (pencol),hl
   ld   hl,moin
   bcall _vputs
   jp   boucle

victoire:
   ld   hl,$0302
   ld   (pencol),hl
   ld   hl,vict
   bcall _vputs
   bcall _getkey
   ret

plus:
   ld   hl,$0F00
   ld   (pencol),hl
   ld   hl,plu
   bcall _vputs
   jp   boucle



interval:
   .db"C'est entre 0 et 255",0
vict:
   .db"Victoire !!!",0
moin:
   .db"C'est moins!",0
plu:
   .db"C'est plus! ",0
.end



Sandro

----------------------
mort à l'inutile, place à la mémoire libre et aux programmes
 Adresse email Haut de page Bas de page 
 
sandro



Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Sam 16 Juil 2011, 14:01   Citer 

Bonjour,bonsoir,
voici la v2 du plus ou moins, elle fait 432 octés mais comporte plusieurs amméliorations:
- interval [1;10 000] au lieu de [0;255]
-suppréssion des problèmes de sortie des bornes (on arrive "de l'autre coté")
-possibilité de sauter de 20 en 20 avec les flèches gauche et droite (1 en 1 avec haut et bas)
-amélioration au niveau graphique

Voici les fichiers qui changent:
-le code (cf plus bas) : PLUSMOIN.z80
-le .83p : PLUSMOI2.83p
-le .8xp : cf un des messages suivants
Voici le code :

Code
   .nolist
#include "ion.inc"

#define   nombrecherche   saferam1
#define   n_essais   nombrecherche+2
#define   numerau_essaye   n_essais+1


   .list
#ifdef TI83P
   .org progstart-2
   .db $BB,$6D
#else
   .org progstart
#endif
   ret
   jr nc,start
   .db "PLUSMOIN2",0
 
start:

   bcall _clrlcdf
   ld   b,28
   call   ionRandom
   ld   h,a
   ld   b,255
   call   ionRandom
   ld   l,a
   ld   (nombrecherche),hl
   ld   de,0
   bcall _cphlde
   jp   z,start
   ld   hl,(nombrecherche)
   ld   de,10000
   bcall _cphlde
   jp   p,start


   ld   hl,1
   ld   (numerau_essaye),hl
   ld   a,0
   ld   (n_essais),a


   ld   hl,$0000
   ld   (pencol),hl
   ld   hl,interval
   bcall _vputs

   ld   hl,$3802
   ld   (pencol),hl
   ld   hl,nombredecoups
   bcall _vputs
boucle:
   ld   hl,$0001
   ld   (currow),hl
   ld   hl,(numerau_essaye)
   bcall _disphl
   bcall _getkey


   cp   1
   call   z,droite
   cp   2
   call   z,gauche
   cp   3
   call   z,haut
   cp   4
   call   z,bas
   cp   5
   jp   z,entrer


   cp   9
   jp   nz,boucle
   ret   

droite:
   ld   hl,(numerau_essaye)
   ld   de,20
   add   hl,de
   ld   de,10001
   bcall _cphlde
   jp   m,droite_suite
   dec   de; de=10 000
   sbc   hl,de
droite_suite:
   ld   (numerau_essaye),hl
   ret


gauche:
   ld   hl,(numerau_essaye)
   ld   de,20
   or   a
   sbc   hl,de
   call   z,gauche0
   call   m,gauche0
   ld   (numerau_essaye),hl
   ret

gauche0:
   ld   de,10000
   add   hl,de
   ret


haut:
   ld   de,10000
   ld   hl,(numerau_essaye)
   bcall _cphlde
   call   z,haut10000

   ld   hl,numerau_essaye
   inc   (hl)
   ret


haut10000:
   ld   hl,1
   ld   (numerau_essaye),hl
   ret

bas:
   ld   hl,(numerau_essaye)
   dec   hl
   ld   de,0
   bcall _cphlde
   jp   nz,bas_suite
   ld   hl,10000
bas_suite:
   ld   (numerau_essaye),hl
   ret



entrer:
   ld   a,(n_essais)
   inc   a
   ld   (n_essais),a

   ld   hl,$0A07
   ld   (currow),hl
   
   ld   l,a
   ld   h,0
   bcall _disphl

   ld   hl,(numerau_essaye)
   ld   e,l
   ld   d,h
   ld   hl,(nombrecherche)
   bcall _cphlde
   jp   z,victoire
   jp   p,plus

   ld   hl,$0F00
   ld   (pencol),hl
   ld   hl,moin
   bcall _vputs
   jp   boucle

victoire:
   ld   hl,$0204
   ld   (currow),hl
   ld   hl,vict
   bcall _puts

   ld   hl,$0002
   ld   (currow),hl
   ld   hl,victeff
   bcall _puts
   bcall _getkey
   ret

plus:
   ld   hl,$0F00
   ld   (pencol),hl
   ld   hl,plu
   bcall _vputs
   jp   boucle




interval:
   .db"C'est entre 1 et 10 000",0
nombredecoups:
   .db"Nombre de coups :",0
vict:
   .db"Victoire !!!",0
victeff:
   .db"              ",0
moin:
   .db"C'est moins!",0
plu:
   .db"C'est plus!     ",0
.end



Sandro

PS : pensez vous qu'il est intéréssant de rajouter un saut de 100 en 100 ou de 200 en 200 (place suplémentaire mais plus ergonomique)?

----------------------
mort à l'inutile, place à la mémoire libre et aux programmes
 Adresse email Haut de page Bas de page 
 
Programaths



Autorisation : Membre
Nb de messages : 178
Inscrit le : Sam 02 Avr 2011, 12:53
Posté le : Sam 16 Juil 2011, 20:39   Citer 

Je ne l'ai pas encore tester mais je répond quand même car je vois qu'il n'y a pas beaucoup de commentaire !

Félicitation ! tu commences l'ASM et tu nous fais un Juste prix ^^ ( dasn ton titre, on a l'impression que c'est "plus ou moin en ASM" du genre c'est un peut de l'asm et un peu d'autre chose crazy.gif )

Le mieux, tu dois le savoir c'est d'entrer nous même le chiffre plutot que de monter/descendre avec les flêche winkle.gif mais si tu ne l'as pas fais ça doit être parce que tu ne sais pas encore le faire.

Dans un interval de 10 000 c'est mieux de 100 en 100. Mais si c'est entre 1 et 100 c'est mieux d'aller de 10 en 10
Voila je vais le tester d'ici peu.

----------------------
"Des millions de gens ont vu tomber une pomme, Newton est le seul a s'être demandé pourquoi ."

"L'urgent est fait, l'impossible est en cours.
un probléme a toujours une solution, la solution est de trouver le probléme, pour les miracles, prévoir un délai ...
"
 Adresse email Haut de page Bas de page 
 
sandro



Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Sam 16 Juil 2011, 21:04   Citer 

Tu as raison, je ne sais pas encore demander directement un nombre (enfin si mais il faudrait bien 300 octées suplémentaires pour le faire avec les getkey (ceux de l'asm).

Après l'avantage de ne pas rentrer directement les nombres, c'est aussi que l'on ne doit pas tout retaper à chaque fois (pour passer de 4841 à 4842 par example).

Merci beaucoup
Sandro

----------------------
mort à l'inutile, place à la mémoire libre et aux programmes
 Adresse email Haut de page Bas de page 
 
Programaths



Autorisation : Membre
Nb de messages : 178
Inscrit le : Sam 02 Avr 2011, 12:53
Posté le : Sam 16 Juil 2011, 21:40   Citer 

oui pour le faire avec le getkey même en basic ça serais un peu lourd :p
entre 1 et 10 000 si on va de 10 en 10 il faut taper 100 fois pour atteindre 10 000
entre 1 et 100 si on va de 1 en 1 faut taper 100 fois pour atteindre 1000

tu pourais faire les flèches haut / bas de 1 en 1, gauche / droite de 10 en 10 et [2ND] / [alpha] de 100 en 100

ce n'est pas très pratique mais ça résous ton problème winkle.gif




Citer
Après l'avantage de ne pas rentrer directement les nombres, c'est aussi que l'on ne doit pas tout retaper à chaque fois (pour passer de 4841 à 4842 par example).



C'est vrai que, si tu utilise le getkey pour entrer le nombre c'est bien pratique ta méthode. Après en basic sur l'écran de calcule ça va, je suis sur que tu sauras comment faire ça en asm d'ici peu ^^

----------------------
"Des millions de gens ont vu tomber une pomme, Newton est le seul a s'être demandé pourquoi ."

"L'urgent est fait, l'impossible est en cours.
un probléme a toujours une solution, la solution est de trouver le probléme, pour les miracles, prévoir un délai ...
"
 Adresse email Haut de page Bas de page 
 
sandro



Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Sam 16 Juil 2011, 22:10   Citer 

Il y a un bug dans le ***.8xp, donc si quelcun à une TI83+, merci de bien vouloir utiliser ce lien : PLUSMOI2.8xp

Sandro

----------------------
mort à l'inutile, place à la mémoire libre et aux programmes
 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
Programaths



Autorisation : Membre
Nb de messages : 178
Inscrit le : Sam 02 Avr 2011, 12:53
Posté le : Lun 18 Juil 2011, 15:29   Citer 

Le programme pour les 83+, pour les utilisateur de mirage OS en tout cas provoque une belle ram cleaded quand, au début on appui sur [haut] (j'ai eu le temps de voir affiché 10 000 a la place du 1)

----------------------
"Des millions de gens ont vu tomber une pomme, Newton est le seul a s'être demandé pourquoi ."

"L'urgent est fait, l'impossible est en cours.
un probléme a toujours une solution, la solution est de trouver le probléme, pour les miracles, prévoir un délai ...
"
 Adresse email Haut de page Bas de page 
 
sandro



Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Lun 18 Juil 2011, 18:34   Citer 

Désolé, je pensais que le fichier fonctionnait, mais bon, d'un autre coté, ça doit être normal vue qu'il est compilé pour ION et utilise une routine d'ION pour les nombres aleatoires et donc lors de la compilation, elle est remplacée par une addresse, donc MirageOS va aller à cette même addresse mais n'y trouvera pas la routine avec un ret à la fin mais autrechose, il va donc continuer j'usqu'à tomber sur un ret, mais jusqu'à là, il à de bonnes chances d'executer une action interdite.

Sandro

----------------------
mort à l'inutile, place à la mémoire libre et aux programmes
 Adresse email Haut de page Bas de page 
 
Programaths



Autorisation : Membre
Nb de messages : 178
Inscrit le : Sam 02 Avr 2011, 12:53
Posté le : Lun 18 Juil 2011, 19:05   Citer 

et puis, j'ai appris a être prudent quand j'utilise un programme ASM donc aucune perte n'est a déclarer winkle.gif

----------------------
"Des millions de gens ont vu tomber une pomme, Newton est le seul a s'être demandé pourquoi ."

"L'urgent est fait, l'impossible est en cours.
un probléme a toujours une solution, la solution est de trouver le probléme, pour les miracles, prévoir un délai ...
"
 Adresse email Haut de page Bas de page 
 
icard4



Autorisation : Membre
Nb de messages : 1
Inscrit le : Mer 24 Aoû 2011, 6:27
Posté le : Mer 24 Aoû 2011, 7:47   Citer 

donc MirageOS va aller à cette même addresse mais n'y trouvera pas la routine avec un ret à la fin mais autrechose






____________________________________________________________________________________________
wholesale r4 card r4i suppliers x360 key

 Adresse email Haut de page Bas de page 
 
Persalteas



Autorisation : Membre
Nb de messages : 2086
Inscrit le : Sam 23 Jan 2010, 20:09
Posté le : Mer 24 Aoû 2011, 8:41   Citer 

Bien je vais le tester.

C'est celui là que tu présentes au concours d'espace TI ?

 Adresse email Haut de page Bas de page 
 
sandro



Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Mer 24 Aoû 2011, 9:55   Citer 

Non, c'est un dérivé de la v1 que je présente (je ne vais pas m'encombrer des registres 2bit de la version à 10 000 sans raison). Néanmoins, il y a un certain nombre d'amméliorations :
-bornes addaptées à la demande (1 à 100 au lieu de 0 à 255)
-quand on dépasse les bornes, on continue de l'autre coté
-possiblilité de se déplacer de 20 en 20 avec gauche et droite
-petites retouches au code et au graphisme

Sandro
PS : je le posterrais dès que le concours sera corrigé (ou peut-être terminé)

----------------------
mort à l'inutile, place à la mémoire libre et aux programmes
 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Page générée en 6 requêtes