π
<-

[ASM] Variable ASM/Ti-Basic

Assembleur, Axe, C/C++, ICE...

Re: [ASM] Variable ASM/Ti-Basic

Message non lude guilhem prevot » 27 Nov 2015, 20:10

Bon après quelques essais j'ai une erreur sur le "ex" qui donne des opérateurs pas bons selon le compileur.

Code: Tout sélectionner
 
   ld hl,LoadString   ; on met dans HL le type (1 octet) + nom de variable (maximum, 8 octets)
   CALL _Mov9ToOP1      ; on copie les 9 premiers octets de HL dans OP1
   CALL _ChkFindSym           ; récupère dans DE le pointeur de données de la variable décrite dans OP1
   ex hl,DE      ; échange DE et HL (le pointeur de données est donc par la suite dans HL)
   ld bc,2
   add hl,bc      ; saute les deux premiers octets contenant la taille des données
   ld hl,2         ; tu lis et écris ici tout ce que tu veux dans HL, à incrémenter à chaque fois
   ret        ; fin de routine
LoadString:
   .DB 02h,"A",0   ; type + nom de la variable
Avatar de l’utilisateur
guilhem prevot
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Prochain niv.: 66.7%
 
Messages: 8
Inscription: 26 Nov 2015, 19:12
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: [ASM] Variable ASM/Ti-Basic

Message non lude Bartmaniaque » 27 Nov 2015, 20:15

C'est parce que tu à mis "DE" en majuscule j'ai l'impression! ;)
Avatar de l’utilisateur
Bartmaniaque
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 46.7%
 
Messages: 57
Inscription: 09 Oct 2015, 14:58
Localisation: Yonne, Bourgogne, France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: 1ère S-SI

Re: [ASM] Variable ASM/Ti-Basic

Message non lude Epharius » 27 Nov 2015, 20:17

Bartmaniaque : non, le compilateur n'est sensible à la casse que pour les labels en gros ;)

Je voudrais revenir sur la question de départ en passant :
j'aimerai pouvoir modifier la valeur d'une variable dans mon programme ASM puis en sortir et pouvoir réutiliser la variable modifiée en TI-Basic

Il y a plus simple que d'écrire et formater toi-même le nombre pour faire VAR->OP1 ou OP1->VAR (surtout que c'est un format assez spécial donc difficile à imiter). En fait, il existe deux RomCalls supers qui sont :
  • RclVarSym : Elle sert à récupérer la valeur d'une variable dont le nom est dans OP1 et de la mettre dans OP1. Tu peux la combiner avec par exemple convop1 qui sert à mettre le nombre qui est dans OP1, dans le registre DE. Il y a un exemple d'utilisation dans le lien que je t'ai passé.
  • StoOther : Celle-ci sert au contraire à mettre le nombre contenu en haut de la Floating Point Stack dans la variable dont le nom est contenu dans OP1. Voici un exemple d'utilisation :
    Code: Tout sélectionner
    CALL    _OP1SET4        ; SYS ROUTINE TO SET REG OP1 TO 4
    CALL    _PUSHREALO1     ; THIS SETS FPST = FLOATING POINT 4
    CALL    _ZEROOP1        ; SETS REG OP1 = ALL 0'S
    LD      HL,'W'
    LD      (OP1+1),HL      ; OP1 = VAR W NAME
    CALL    _STOOTHER       ; THIS WILL STORE 4 TO VAR W
    (c'est un code pris dans la documentation).

Bref, ce sera beaucoup plus simple que de faire toi-même tout ça ;)
Si je n'ai pas été assez clair dans certains points, n'hésite pas !
Le projet Geometry Dash est terminé ! N'hésitez pas à aller jeter un coup d’œil au topic du projet ! Vous pouvez le télécharger ici.

Unis par la flèche sacrée de cupidon :favorite:
Image
Avatar de l’utilisateur
EphariusPremium
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 8.9%
 
Messages: 1182
Images: 4
Inscription: 08 Déc 2014, 17:38
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: Ensimag
GitHub: MathisLav

Re: [ASM] Variable ASM/Ti-Basic

Message non lude guilhem prevot » 27 Nov 2015, 20:28

Bon pour le coup je crois avoir tout compris au code mais mon compileur l'aime pas trop lui :( Des idées ?

Code: Tout sélectionner
bcall(_OP1SET4)        ; SYS ROUTINE TO SET REG OP1 TO 4
bcall(_PUSHREALO1)     ; THIS SETS FPST = FLOATING POINT 4
bcall(_ZEROOP1)        ; SETS REG OP1 = ALL 0'S
LD      HL,'W'
LD      (OP1+1),HL      ; OP1 = VAR W NAME
bcall(_STOOTHER)       ; THIS WILL STORE 4 TO VAR W


Code: Tout sélectionner
Pass one...
D:\ASM\ASM.z80:12: warning: redefinition of 'LD'
D:\ASM\ultimate.inc:1473: warning: previous definition of 'LD' was here
Pass two...
Done
Assembly time: 0.252 seconds
D:\ASM\ASM.z80:12: error SE113: Unknown opcode 'HL'
D:\ASM\ASM.z80:13: error SE119: Unknown syntax
D:\ASM\ASM.z80:15: error SE113: Unknown opcode 'KeyLoop'


La programmation me facinera toujours, tu compile ça marche pas, tu fais un copier coller sur le même programme et ça fonctionne ... n'allez pas me demander pourquoi. Enfin dans tout les cas j'ai enfin pu modifier la variable ! Je me relance à fond dans la finition du code. Merci à vous pour l'aide.
Dernière édition par guilhem prevot le 27 Nov 2015, 20:35, édité 1 fois.
Avatar de l’utilisateur
guilhem prevot
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Prochain niv.: 66.7%
 
Messages: 8
Inscription: 26 Nov 2015, 19:12
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: [ASM] Variable ASM/Ti-Basic

Message non lude Epharius » 27 Nov 2015, 20:32

Tu as bien mis des tabulations ou des espaces au début de toutes tes lignes (SAUF les lignes des labels) ? Ensuite, enlève les espaces inutiles entre le LD et HL etc. Tu peux donner tout ton code si ça ne marche pas pour voir ?
Le projet Geometry Dash est terminé ! N'hésitez pas à aller jeter un coup d’œil au topic du projet ! Vous pouvez le télécharger ici.

Unis par la flèche sacrée de cupidon :favorite:
Image
Avatar de l’utilisateur
EphariusPremium
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 8.9%
 
Messages: 1182
Images: 4
Inscription: 08 Déc 2014, 17:38
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: Ensimag
GitHub: MathisLav

Re: [ASM] Variable ASM/Ti-Basic

Message non lude guilhem prevot » 27 Nov 2015, 21:05

Pour le moment tout marche excepté que si j'ai bien compris _OP1SET(le nombre voulu), on devrait pouvoir modifier le nombre voulu à sa guise mais le compileur accepte de 1 à 4 puis me dit qu'il ne trouve pas les suivantes (5 à 10)



Code: Tout sélectionner
D:\ASM\ASM.z80:1: error SE106: Could not find label or macro '_OP1SET5'
D:\ASM\ASM.z80:1: error SE106: Could not find label or macro '_OP1SET6'
D:\ASM\ASM.z80:1: error SE106: Could not find label or macro '_OP1SET7'
D:\ASM\ASM.z80:1: error SE106: Could not find label or macro '_OP1SET8'
D:\ASM\ASM.z80:1: error SE106: Could not find label or macro '_OP1SET9'
D:\ASM\ASM.z80:1: error SE106: Could not find label or macro '_OP1SET10'


Code: Tout sélectionner
ajout:
   LD   A, C
   cp 17
   jp p, w1
   cp 16
   jp p, w2
   cp 15
   jp p, w3
   cp 14
   jp p, w4
   cp 13
   jp p, w5
   cp 12
   jp p, w6
   cp 11
   jp p, w7
   cp 9
   jp p, w8
   cp 5
   jp p, w9
   cp 1
   jp p, w10
   JP   KeyLoop
fin:
   bcall(_PUSHREALO1)     ; THIS SETS FPST = FLOATING POINT 4
   bcall(_ZEROOP1)        ; SETS REG OP1 = ALL 0'S
   LD      HL,'W'
   LD      (OP1+1),HL      ; OP1 = VAR W NAME
   bcall(_STOOTHER)       ; THIS WILL STORE 4 TO VAR W
   JP   KeyLoop

w1:
   bcall(_OP1SET1)
   JP fin
w2:
   bcall(_OP1SET2)
   JP fin
w3:
   bcall(_OP1SET3)
   JP fin
w4:
   bcall(_OP1SET4)
   JP fin
w5:
   bcall(_OP1SET5)
   JP fin
w6:
   bcall(_OP1SET6)
   JP fin
w7:
   bcall(_OP1SET7)
   JP fin
w8:
   bcall(_OP1SET8)
   JP fin
w9:
   bcall(_OP1SET9)
   JP fin
w10:
   bcall(_OP1SET10)
   JP fin
Avatar de l’utilisateur
guilhem prevot
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Prochain niv.: 66.7%
 
Messages: 8
Inscription: 26 Nov 2015, 19:12
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: [ASM] Variable ASM/Ti-Basic

Message non lude Adriweb » 27 Nov 2015, 21:08

(Précision, c'est un assembleur, par un compilateur)

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
My calculator programs
Mes programmes pour calculatrices
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 82.2%
 
Messages: 14886
Images: 1211
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: [ASM] Variable ASM/Ti-Basic

Message non lude Epharius » 27 Nov 2015, 21:19

Adriweb : Ah oui mince, je fais souvent la confusion x)

C'est normal, il faut utiliser une autre méthode qui utilise SETXXOP1. C'est une romcall qui attend un nombre entre 0 et 99 dans le registre accumulateur A et qui met ce nombre dans OP1 ;)
Le projet Geometry Dash est terminé ! N'hésitez pas à aller jeter un coup d’œil au topic du projet ! Vous pouvez le télécharger ici.

Unis par la flèche sacrée de cupidon :favorite:
Image
Avatar de l’utilisateur
EphariusPremium
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 8.9%
 
Messages: 1182
Images: 4
Inscription: 08 Déc 2014, 17:38
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: Ensimag
GitHub: MathisLav

Précédente

Retourner vers Langages alternatifs

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 6 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Ndless for CX 4.5.5 / CX II 6.2.0
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
12345
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
2550 utilisateurs:
>2533 invités
>10 membres
>7 robots
Record simultané (sur 6 mois):
32248 utilisateurs (le 01/09/2025)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)