Page 1 of 2
[ASM] Variable ASM/Ti-Basic

Posted:
26 Nov 2015, 19:38
by guilhem prevot
Bonjour à tous,
J'ai commencé l'assembleur il y a un certain temps mais j'ai beaucoup de mal avec les variables, j'ai beau avoir relu une dizaine de fois le tuto pas moyen de comprendre la totalité. J'arrive à m'en sortir quelque peu mais quelque choses m'embête depuis un certain temps, 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 (Par exemple réussir à modifié les variables A,B,C,D,... du Ti-Basic mais à partir d'un programme en ASM)
Si certains on des idées je suis preneur, merci à tous ceux qui auront lu

Re: [ASM] Variable ASM/Ti-Basic

Posted:
26 Nov 2015, 20:16
by critor
Salut !
Quelle calculatrice as-tu ?
Une idée est d'utiliser la routine _ChkFindSym.
Elle recherche en mémoire la variable dont le nom est dans OP1, et enregistre dans DE l'adresse des données correspondantes.
http://wikiti.brandonw.net/index.php?ti ... CALLs:42F1Il te suffit ensuite de lire/modifier à partir de cette adresse, en suivant la documentation du format de variable :
http://merthsoft.com/linkguide/ti83+/indexex3.html
Re: [ASM] Variable ASM/Ti-Basic

Posted:
26 Nov 2015, 21:38
by guilhem prevot
Bonsoir,
J'ai une TI83+, si j'ai bien compris ton idée je ne peux récupérer l'information que dans un sens basic vers ASM mais c'est le contraire que je veux faire. Mais je vais quand même étudier ton idée voir si cela peut m'apporter autre chose, merci à toi.
Après avoir lu tes liens, je pense avoir compris, il faudrait mettre une variable Basic (genre A,B,...) dans OP1, la modifié puis on peut la réutiliser ensuite modifiée ? A ce moment comment met-on dans une variable dans OP1 ?
Re: [ASM] Variable ASM/Ti-Basic

Posted:
26 Nov 2015, 23:52
by critor
guilhem prevot wrote:J'ai une TI83+, si j'ai bien compris ton idée je ne peux récupérer l'information que dans un sens basic vers ASM mais c'est le contraire que je veux faire
Je ne comprends pas.
Tu as dit vouloir modifier une variable en Asm.
C'est bien ce que j'expose dans le post ci-dessus.
En sortie du programme Asm, les programmes Basic auront donc accès à la variable modifiée.
Re: [ASM] Variable ASM/Ti-Basic

Posted:
27 Nov 2015, 14:46
by guilhem prevot
D'accord, mais j'ai une autre petite question, pourrais-tu me présenter rapidement comment faire avec OP1? (Prendre la variable, la modifier et la réutiliser ensuite). Merci de ton aide
Re: [ASM] Variable ASM/Ti-Basic

Posted:
27 Nov 2015, 15:20
by critor
Ben écoute, ça dépend de ce que tu veux faire, je ne sais même pas où est-ce que tu coinces.
Et je ne vois pas quoi te dire concernant la réutilisation de la variable... tu la réutilises totalement normalement ?
Pourquoi tenir d'ailleurs à modifier ta variable en asm ?
Voici une base de code pour récupérer l'accès en lecture au contenu d'une variable d'application "TEST" (AppVar) :
- 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
jp c,LError ; variable non trouvée
call _ChkInRam ; la variable est-elle en RAM ?
ex hl,de ; échange DE et HL (le pointeur de données est donc par la suite dans HL)
jr z,Goto1 ; la variable est en RAM -> on saute la gestion de la mémoire d'archive
ld bc,18 ; la variable est en archive
add hl,bc ; -> on saute les 18 octets de header
Goto1:
ld bc,2
add hl,bc ; saute les deux premiers octets contenant la taille des données
... ; tu lis et écris ici tout ce que tu veux dans HL, à incrémenter à chaque fois
ret ; fin de routine
Error:
ld hl,0
LoadString:
DB 15h,"TEST",0 ; type + nom de la variable
Re: [ASM] Variable ASM/Ti-Basic

Posted:
27 Nov 2015, 19:32
by guilhem prevot
Enfaite j'ai un programme qui sert de launcher à des programmes en Basic, or le Basic est trop lent pour avoir une launcher fluide, donc je passe par un launcher en ASM qui lorsque l'on appuierait sur Entrer, il nous lance le programme Basic voulu. Je cherche donc à modifier une variable pour savoir quel programme lancer à la sortie du programme ASM.
Donc je me disais qu'il était surement possible de modifier les variables de bases de la calculatrice en ASM pour la réutiliser simplement en Basic.
Re: [ASM] Variable ASM/Ti-Basic

Posted:
27 Nov 2015, 19:53
by critor
Ok. Ben c'est possible, oui - c'est bien le but du code ci-dessus.

Re: [ASM] Variable ASM/Ti-Basic

Posted:
27 Nov 2015, 19:55
by guilhem prevot
(Je vais encore t'embêter un peu ^^) J'ai bien compris comment modifié la variable, tout ça tout ça mais par contre pour lire une AppVar en Basic je suis complètement perdu même après des recherches sur le web :/
Re: [ASM] Variable ASM/Ti-Basic

Posted:
27 Nov 2015, 19:57
by critor
Ah non mais le code précédent était un exemple.
Tu remplaces l'AppVar par un réel donc
Juste à changer en dernière ligne le nom (donc A par exemple), ainsi que le type de variable (le 15 signifiant AppVar).