π
<-
Chat plein-écran
[^]

Asm eZ80 : problème de pile(stack)

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

Asm eZ80 : problème de pile(stack)

Message non lude isquelcrax » 08 Mar 2018, 13:27

Bonjour à tous(bon appétit aussi si vous mangez maintenant :) )

C'est encore moi, je suis en train d'apprendre l'asm eZ80 et j'en suis aux stack. J'ai bien compriss le concept mais j'ai rencintré une petite difficulté : je souhaite faire un programme très simple : je veux que ce programme me donne la valeur stockée dans le registre SPL(cette valeur étant une adresse, donc un pointeur si j'ai bien compris). J'ai essayé plusieurs code mais ça ne semble pas marché.

Voici un simple exemple de code que j'ai pu essayé(les autres étants de pseudo variantes) :
Code: Tout sélectionner
#include "ti84pce.inc";         
.assume ADL=1;                        
.org userMem-2;                      
.db tExtTok,tAsm84CeCmp;                
call $0020810;   // affiche un écran blanc   
ld hl,0h; on stocke 0 en hexadecimale dans le registre hl
add hl,SP; on ajoute la valeur du registre SPL dans hl
call _DispHL; affiche la valeur du registre hl
call _GetKey; attends la pression d'une touche
ret


Je compile avec spasm : aucun problème.
Je transfère le prgm sur CEmu et je l'éxecute .
Je lance le debbugger pour voir l'état du CPU.
Et la valeur qui m'est affiché est "13740101" sur l'écarn de la calculatrice.
je compare avec SPL (sa valeur est D1A83C en hex et en décimale ça donne 13740092)
Or ce n'est pas la même chose (9 de différence). :(
C'est dû à quoi ? Une mauvaise manip du logiciel ? Ou le code ?
Je sais que l’intérêt du programme est nul mais c'est juste un des programmes tests pour voir si j'ai bien compris les notions.

Je remercie celles et ceux qui peuvent m'aider par avance. :D
Que vive les sciences ad vitam aeternam
Avatar de l’utilisateur
isquelcraxPremium
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Prochain niv.: 57.8%
 
Messages: 62
Inscription: 01 Mar 2018, 10:24
Localisation: Nancy
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Terminale S-SVT spé maths

Re: Asm eZ80 : problème de pile(stack)

Message non lude Epharius » 08 Mar 2018, 14:58

Mmmh, c'est censé marcher... tu vérifies la valeur (sur cemu) de sp quand ? Après la fin du programme ? Parce que sp change tout le temps, ce serait normal de ne pas trouver la même valeur.
Après, connaître la valeur de sp ça peut être un utile mais personnellement je n'en ai jamais eu besoin :/
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.: 7.1%
 
Messages: 1110
Images: 4
Inscription: 08 Déc 2014, 17:38
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: Ensimag
GitHub: MathisLav

Re: Asm eZ80 : problème de pile(stack)

Message non lude Dark coco » 08 Mar 2018, 15:09

il doit s'agir de l'instruction _getkey je sais qu'elle utilise la pile.
(21:48:26) Hamza.S: Dark_coco : tu a écris 2 phrases sans faute
(19:15:10) Hayleia: ah ça je confirme que t'as appris à écrire à l'école de baptiste_leprovost :troll:
Avatar de l’utilisateur
Dark cocoProgrammeur
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 65.8%
 
Messages: 95
Inscription: 15 Jan 2017, 14:39
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: dut gte

Re: Asm eZ80 : problème de pile(stack)

Message non lude Epharius » 08 Mar 2018, 15:13

Ah oui Dark coco a raison si tu vérifies SP alors que tu es dans le getkey, c'est normal que tu n'aies pas la même chose.
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.: 7.1%
 
Messages: 1110
Images: 4
Inscription: 08 Déc 2014, 17:38
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: Ensimag
GitHub: MathisLav

Re: Asm eZ80 : problème de pile(stack)

Message non lude isquelcrax » 08 Mar 2018, 15:47

oui c'est vrai, sans getkey j'ai la même valeur mais il y a quand même un bon vieux ram cleared. Merci beaucoup à vous deux !
tant pis pour le ram cleared.
Que vive les sciences ad vitam aeternam
Avatar de l’utilisateur
isquelcraxPremium
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Prochain niv.: 57.8%
 
Messages: 62
Inscription: 01 Mar 2018, 10:24
Localisation: Nancy
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Terminale S-SVT spé maths

Re: Asm eZ80 : problème de pile(stack)

Message non lude Adriweb » 08 Mar 2018, 16:31

CEmu indique dans la console la cause du RAM clear, si possible ; ça devrait te mettre sur une piste.
Tu peux aussi activer l'option pour automatiquement lancer le débuggeur lors d'un NMI.
Image

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...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80.2%
 
Messages: 14614
Images: 1218
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: Asm eZ80 : problème de pile(stack)

Message non lude isquelcrax » 08 Mar 2018, 20:33

j'ai enfin compris ce que tu voulais me dire, voilà j'ai ça

[CEmu] NMI reset cause by write to flash at address 0x744e1 from unprivileged code. Hint: Possibly a null pointer dereference.
[CEmu] Reset caused by writing to bit 4 of port 0.
[CEmu] Reset triggered.
[CEmu] Memory reset.
[CEmu] LCD reset.
[CEmu] Keypad reset.
[CEmu] GPT reset.
[CEmu] RTC reset.
[CEmu] Watchdog timer reset.
[CEmu] CPU reset.

J'avoue que je n'ai rien compris (si bien que ce soit ce que tu voulais me dire)

donc NEED HELP
Que vive les sciences ad vitam aeternam
Avatar de l’utilisateur
isquelcraxPremium
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Prochain niv.: 57.8%
 
Messages: 62
Inscription: 01 Mar 2018, 10:24
Localisation: Nancy
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Terminale S-SVT spé maths

Re: Asm eZ80 : problème de pile(stack)

Message non lude Adriweb » 09 Mar 2018, 06:32

isquelcrax a écrit:[CEmu] NMI reset cause by write to flash at address 0x744e1 from unprivileged code. Hint: Possibly a null pointer dereference.
[CEmu] Reset caused by writing to bit 4 of port 0.

Ben donc a un moment, tu as un pointeur vers 0x744e1, ce qui n'est pas une adresse "a toi" (voire a personne ? *), donc tu n'as pas le droit de modifier ce qu'il s'y passe.
J'imagine que ce n'est pas quelque chose que tu as voulu, donc tu as une erreur quelque part dans ton code.
C'est quoi ton code exactement ?
Tu devrais surement l'executer pas-a-pas pour comprendre ce qui ne va pas (d'autant plus simple si c'est de l'assembleur, regarde dans la partie Desassembleur de CEmu et fais des "step")


* [eZ80Bot] 0x744e1 could be _os_GetStringDataPtr+0x52345 or ramStart-0xC8BB1F
Image

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...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80.2%
 
Messages: 14614
Images: 1218
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: Asm eZ80 : problème de pile(stack)

Message non lude isquelcrax » 09 Mar 2018, 23:47

dsl pour le retard, j'ai pu voir ce que tu voulais par là : si je te suis c'est bien une erreur dû à mon PC ? Mon code est juste au dessus. Si tu pouvais m'expliquer comment fonctionne le "désassembleur" et le debbugger de CEmu car je crois que je les ai mal compris/utilisé, tu me sauverais la vie !!!
Que vive les sciences ad vitam aeternam
Avatar de l’utilisateur
isquelcraxPremium
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Prochain niv.: 57.8%
 
Messages: 62
Inscription: 01 Mar 2018, 10:24
Localisation: Nancy
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Terminale S-SVT spé maths


Retourner vers Langages alternatifs

Qui est en ligne

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

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
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.
1591 utilisateurs:
>1555 invités
>32 membres
>4 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
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)