Page 1 sur 1
Jump & label ( undefined symbol )
Publié : ven. 25/juin/2010 14:09
par G-Rom
j'essaye toujours de comprendre l'asm , mais là , moi pas comprendre l'erreur.
en gros , il ne trouve pas le label...
Code : Tout sélectionner
A=0
B=0
MOV [v_A], $2D
MOV [v_B], $40
MOV EBX,v_A
CMP EBX,v_B
JNZ MyLabel
MOV EBX,v_A
INC EBX
MOV [v_A],ebx
MyLabel:
Debug A
Debug B
Re: Jump & label ( undefined symbol )
Publié : ven. 25/juin/2010 14:36
par djes
Comme ça ça ira mieux
Code : Tout sélectionner
A=0
B=0
calldebugger
MOV [v_A], $0000002D
MOV [v_B], $00000040
MOV EBX,v_A
CMP EBX,v_B
JE MyLabel
MOV EBX,dword[v_A]
INC EBX
MOV dword [v_A],ebx
!MyLabel:
Debug A
Debug B
Re: Jump & label ( undefined symbol )
Publié : ven. 25/juin/2010 14:52
par Backup
j'ai meme pas pu commencer a regarder , chez moi ça refuse de se lancer !!
avec des le depart une erreur "undifined symbole V_A"
(assembleur activé)
meme ta correction Djes
Re: Jump & label ( undefined symbol )
Publié : ven. 25/juin/2010 15:32
par djes
Tu dois avoir un truc qui change la casse des variables.
Re: Jump & label ( undefined symbol )
Publié : ven. 25/juin/2010 16:42
par Backup
djes a écrit :Tu dois avoir un truc qui change la casse des variables.
arg !! effectivement dans Japbe !! "Autre option" / changement de casse automatique!
je me demande a quoi peut servir cette option dans notre éditeur , si celle ci limite l'assembleur
Re: Jump & label ( undefined symbol )
Publié : ven. 25/juin/2010 17:20
par G-Rom
Merci Djes !
Re: Jump & label ( undefined symbol )
Publié : ven. 25/juin/2010 17:29
par G-Rom
Autre question Djes ,
l'instruction PUSH , pousse un registre au sommet d'une pile LIFO , jusque là pas de problème
on récupère le sommet de la pile avec un POP , un coup de MOV est on dégage le resultat dans une variable pb.
Last.i=0
MOV EBX ,1 : PUSH EBX
MOV EBX ,2 : PUSH EBX
MOV EBX ,3 : PUSH EBX
MOV EBX ,4 : PUSH EBX
POP EBX : MOV DWORD[v_Last] , EBX : Debug Last
POP EBX : MOV DWORD[v_Last] , EBX : Debug Last
POP EBX : MOV DWORD[v_Last] , EBX : Debug Last
POP EBX : MOV DWORD[v_Last] , EBX : Debug Last
Ou est physiquement la pile ? la ram ? une unité dans le processeur ?
Re: Jump & label ( undefined symbol )
Publié : ven. 25/juin/2010 18:18
par djes
En RAM.
Re: Jump & label ( undefined symbol )
Publié : dim. 26/sept./2010 21:30
par Ollivier
La pile est pointée par le registre ESP et est "à l'envers" dans la mémoire... C'est le seul moyen de retrouver les infos stockées dedans...
Aussi l'instruction...
...s'écrit comme ça:
Sinon, dans un listing de code, je trouve qu'il s'agit d'une bonne technique de considérer l'analogie entre les manips de la pile (entre autres) et les alinéas (entre autres, aussi). (Pas de manière purement stricte, sinon c'est trop lourd!)
Après... Chacun voit comme il le sent Midi à sa porte !
Code : Tout sélectionner
;{ Une allure plus "chorégraphique" }
EnableExplicit
DisableDebugger
EnableASM
Define.S Text$
Macro Qu()
"
EndMacro
Macro Ack(VariableName)
Text$ + Qu()VariableName = Qu() + Str(VariableName) + Chr(10)
EndMacro
;}
Define.I V0, V1, V2, V3
; >>>>>> Ceci... <<<<<<
PUSH 1
PUSH 2
PUSH 3
PUSH 4
POP V0
POP V1
POP V2
POP V3
Ack(V0)
Ack(V1)
Ack(V2)
Ack(V3)
MessageRequester("Sortie ASM", Text$)
; >>>>>> ...égale cela (sans EAX) <<<<<<
SUB ESP, 4
MOV EAX, 1
MOV [ESP], EAX
SUB ESP, 4
MOV EAX, 2
MOV [ESP], EAX
SUB ESP, 4
MOV EAX, 3
MOV [ESP], EAX
SUB ESP, 4
MOV EAX, 4
MOV [ESP], EAX
MOV EAX, [ESP]
MOV V0, EAX
ADD ESP, 4
MOV EAX, [ESP]
MOV V1, EAX
ADD ESP, 4
MOV EAX, [ESP]
MOV V2, EAX
ADD ESP, 4
MOV EAX, [ESP]
MOV V3, EAX
ADD ESP, 4
Ack(V0)
Ack(V1)
Ack(V2)
Ack(V3)
MessageRequester("Sortie ASM", Text$)