π
<-

[ASM] Variable ASM/Ti-Basic

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

Re: [ASM] Variable ASM/Ti-Basic

Unread postby 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: 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
User avatar
guilhem prevot
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Level up: 66.7%
 
Posts: 8
Joined: 26 Nov 2015, 19:12
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: [ASM] Variable ASM/Ti-Basic

Unread postby Bartmaniaque » 27 Nov 2015, 20:15

C'est parce que tu à mis "DE" en majuscule j'ai l'impression! ;)
User avatar
Bartmaniaque
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Level up: 46.7%
 
Posts: 57
Joined: 09 Oct 2015, 14:58
Location: Yonne, Bourgogne, France
Gender: Male
Calculator(s):
MyCalcs profile
Class: 1ère S-SI

Re: [ASM] Variable ASM/Ti-Basic

Unread postby 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: 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
    (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
User avatar
EphariusPremium
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 8.9%
 
Posts: 1182
Images: 4
Joined: 08 Dec 2014, 17:38
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Ensimag
GitHub: MathisLav

Re: [ASM] Variable ASM/Ti-Basic

Unread postby 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: 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.
User avatar
guilhem prevot
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Level up: 66.7%
 
Posts: 8
Joined: 26 Nov 2015, 19:12
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: [ASM] Variable ASM/Ti-Basic

Unread postby 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
User avatar
EphariusPremium
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 8.9%
 
Posts: 1182
Images: 4
Joined: 08 Dec 2014, 17:38
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Ensimag
GitHub: MathisLav

Re: [ASM] Variable ASM/Ti-Basic

Unread postby 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: 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
User avatar
guilhem prevot
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Level up: 66.7%
 
Posts: 8
Joined: 26 Nov 2015, 19:12
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: [ASM] Variable ASM/Ti-Basic

Unread postby 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
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 82.1%
 
Posts: 14880
Images: 1211
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Re: [ASM] Variable ASM/Ti-Basic

Unread postby 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
User avatar
EphariusPremium
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 8.9%
 
Posts: 1182
Images: 4
Joined: 08 Dec 2014, 17:38
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Ensimag
GitHub: MathisLav

Previous

Return to Langages alternatifs

Who is online

Users browsing this forum: ClaudeBot [spider] and 4 guests

-
Search
-
Social TI-Planet
-
Featured topics
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
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
7121 utilisateurs:
>7081 invités
>31 membres
>9 robots
Record simultané (sur 6 mois):
32248 utilisateurs (le 01/09/2025)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)