- Code: Select all
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
[ASM] Variable ASM/Ti-Basic
18 posts
• Page 2 of 2 • 1, 2
Re: [ASM] Variable ASM/Ti-Basic
Bon après quelques essais j'ai une erreur sur le "ex" qui donne des opérateurs pas bons selon le compileur.
-
guilhem prevot
Niveau 2: MI2 (Membre Initié)- Posts: 8
- Joined: 26 Nov 2015, 19:12
- Gender:
- Calculator(s):→ MyCalcs profile
Re: [ASM] Variable ASM/Ti-Basic
C'est parce que tu à mis "DE" en majuscule j'ai l'impression! 

-
Bartmaniaque
Niveau 9: IC (Compteur Infatigable)- Posts: 57
- Joined: 09 Oct 2015, 14:58
- Location: Yonne, Bourgogne, France
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: 1ère S-SI
Re: [ASM] Variable ASM/Ti-Basic
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 :
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 :
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 !

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: Select all
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
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

Unis par la flèche sacrée de cupidon


-
EphariusPremium
Niveau 16: CC2 (Commandeur des Calculatrices)- Posts: 1182
- Images: 4
- Joined: 08 Dec 2014, 17:38
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: Ensimag
- GitHub: MathisLav
Re: [ASM] Variable ASM/Ti-Basic
Bon pour le coup je crois avoir tout compris au code mais mon compileur l'aime pas trop lui
Des idées ?
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.

- Code: Select all
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: Select all
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.
Last edited by guilhem prevot on 27 Nov 2015, 20:35, edited 1 time in total.
-
guilhem prevot
Niveau 2: MI2 (Membre Initié)- Posts: 8
- Joined: 26 Nov 2015, 19:12
- Gender:
- Calculator(s):→ MyCalcs profile
Re: [ASM] Variable ASM/Ti-Basic
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

Unis par la flèche sacrée de cupidon


-
EphariusPremium
Niveau 16: CC2 (Commandeur des Calculatrices)- Posts: 1182
- Images: 4
- Joined: 08 Dec 2014, 17:38
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: Ensimag
- GitHub: MathisLav
Re: [ASM] Variable ASM/Ti-Basic
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: Select all
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: Select all
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
-
guilhem prevot
Niveau 2: MI2 (Membre Initié)- Posts: 8
- Joined: 26 Nov 2015, 19:12
- Gender:
- Calculator(s):→ MyCalcs profile
Re: [ASM] Variable ASM/Ti-Basic
(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
-
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)- Posts: 14880
- Images: 1211
- Joined: 01 Jun 2007, 00:00
- Location: France
- Gender:
- Calculator(s):→ MyCalcs profile
- Twitter: adriweb
- GitHub: adriweb
Re: [ASM] Variable ASM/Ti-Basic
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
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

Unis par la flèche sacrée de cupidon


-
EphariusPremium
Niveau 16: CC2 (Commandeur des Calculatrices)- Posts: 1182
- Images: 4
- Joined: 08 Dec 2014, 17:38
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: Ensimag
- GitHub: MathisLav
18 posts
• Page 2 of 2 • 1, 2
Return to Langages alternatifs
Who is online
Users browsing this forum: ClaudeBot [spider] and 4 guests