Page 1 sur 1

Asm eZ80 : problème de pile(stack)

Message non luPosté: 08 Mar 2018, 13:27
de isquelcrax
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

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

Message non luPosté: 08 Mar 2018, 14:58
de Epharius
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 :/

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

Message non luPosté: 08 Mar 2018, 15:09
de Dark coco
il doit s'agir de l'instruction _getkey je sais qu'elle utilise la pile.

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

Message non luPosté: 08 Mar 2018, 15:13
de Epharius
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.

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

Message non luPosté: 08 Mar 2018, 15:47
de isquelcrax
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.

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

Message non luPosté: 08 Mar 2018, 16:31
de Adriweb
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.

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

Message non luPosté: 08 Mar 2018, 20:33
de isquelcrax
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

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

Message non luPosté: 09 Mar 2018, 06:32
de Adriweb
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

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

Message non luPosté: 09 Mar 2018, 23:47
de isquelcrax
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 !!!