AVR assembler: ich blicks einfach nicht
-
irgendwie klappt das mit dem ret nicht
hier mal ein ganz einfaches beispiel:nop nop nop rcall routine ;hierher sollte er nach dem ret springen nop nop nop routine: nop nop nop ret
wenn ich das jetzt in debugger lauffen lasse dann springt er schön brav in die routine und der stackpointer wird auch dekrementiert. aber nach dem ret springt er nicht etwa dorthin wo er sollte sondern einfach an den anfang vom programm zurück.
entweder irgendwas läuft da ganz massiv daneben oder ich bin mal wieder zu blöd und sehe irgendeinen offensichtlichen fehler nicht
-
Sehe ich das richtig oder ist routine als Label definiert und nicht als unterprogramm?
Code-Hacker
-
ja wie denn sonst? rcall schreibt die rücksprungadresse auf den stack und springt in die rutine und das ret popt die adresse wieder und springt dort hin...
naja das problem jedenfalls hat sich erledigt ich hatte den stack nicht initialisiert...
-
@code-hacker
bei einer ausführlich deklarierten prozedur ist der name auch nichts weiter als ein label.
-
@wasiliy:
Ja das weiß ich. Mit Unterprogramm war ja auch gemeint Label mit der zusätzlichen Deklaration als solches. Er hat ja verstanden was ich meinte.@japro:
wie es funzt weiß ich
´habe nur gefragt, weil dein Code ja sehr.....unvollständig istCode-Hacker
-
Öhm.. hast du den Stack auch wirklich initialisiert??
welchen AVR benutzt Du?
-
japro schrieb:
naja das problem jedenfalls hat sich erledigt ich hatte den stack nicht initialisiert...
im moment nen ATmega16
-
*gg*
Ich sollte nach 5 - Stündiger Dokumentationsarbeit keine Foreneinträge mehr lesen, übersehe nur die Hälfte ...