2016-11-02 1 views
0

Je suis actuellement en train d'apprendre les rudiments de la langue d'assemblage. J'ai rencontré un problème où le programme marque les appels de procédures internes comme des symboles indéfinis (A2006). Pendant ce temps, les appels à la bibliothèque incluse fonctionnent très bien. Après avoir regardé ce problème en ligne, j'ai seulement vu des gens ayant des problèmes avec les appels externes parce qu'ils ont oublié d'utiliser mettre dans le fichier d'inclusion. En ce qui concerne les procédures elles-mêmes, j'ai vu des gens les configurer de deux manières différentes et toutes deux me donnent l'erreur indéfinie.Comment utiliser les procédures à côté de main dans ASM?

INCLUDE whatever 
.data 
.code 
main proc 
coding 
CALL procedurefromwhatever ;this works just fine 
CALL name ;this is the part that returns the A2006 undefined error 
CALL name_proc ;this doesn't work either 
exit 
main ENDP 
end main 

name proc 
coding 
ret 
name ENDP 

name_proc: 
coding 
ret 
name ENDP 

Répondre

1

La ligne end main doit fermer le document entier, donc le déplacer vers le bas (après la deuxième name ENDP), le document a été fermé au mauvais endroit, de sorte que les procédures ne font pas partie du segment de code et ils ne sont pas reconnus:

INCLUDE whatever 
.data 
.code 
main proc 
coding 
CALL procedurefromwhatever ;this works just fine 
CALL name ;this is the part that returns the A2006 undefined error 
CALL name_proc ;this doesn't work either 
exit 
main ENDP 
;end main     ◄■■■ WRONG PLACE. MUST BE AT THE BOTTOM. 

name proc 
coding 
ret 
name ENDP 

name_proc: 
coding 
ret 
name ENDP 

end main     ;◄■■■ RIGHT HERE!!! 
+0

Cela fonctionne. Merci pour l'aide. Je vous donnerais un upvote mais mon compte est trop nouveau et j'ai été attrapé par le filtre de vote de spam de ce site. – LostintheMostObscureMistakes

+0

@LostintheMostObscureMistakes, vous pouvez cliquer sur la coche verte pour accepter la réponse (voir la coche sous le grand "0" sur la gauche?). –