atmel mega128 i call/ret

Jul 23, 2003 3 Replies

witam, probujac nauczyc sie programowania tego procesorka zauwazylem dziwne zachowanie przy stosowanie skoków za pomoca polecenia call. Sam skok do podprocedury jest wykonywany dobrze, ale przy powrocie AVR Studio zarzymuje sie jakby na chwile i od razu skacze na sam poczatek programu. Czy ja o czyms zapominam czy tez moze czegos jeszcze nie wiem ?



Marcin



U¿ytkownik "Marcin Kuczera" snipped-for-privacy@poczta.rybnik.pl> napisa³ w wiadomo¶ci news:bfm54b$s5q$ snipped-for-privacy@zeus.polsl.gliwice.pl...

Znaczy siê - piszesz w asm.

Mo¿e zapominasz o _zdjêciu_ ze stosu wszystkich w³o¿onych nañ w danej procedurze rejestrów. Prze¶led¼ jak wygl±da wska¼nik stosu na pocz±tku procedury i na jej koñcu. Powinien byæ oczywi¶cie taki sam.

Pozdrawiam Bartosz Sarama

sprawa jest arcydziwna,

program wyglada np tak:

loop: ldi r19, 0xff; nop nop call increment rjmp loop

increment: inc r19; ret;

to jest oczywiscie bzdura która nic nie robi, ale problem jest taki, ze po wykonaniu ret symulator siê zatrzymuje na chwile a zaraz potem wraca do pocz±tku procedury loop. I to mnie wlasnie martwi..

Marcin

----- Original Message ----- From: "Marcin Kuczera" snipped-for-privacy@poczta.rybnik.pl>

To: snipped-for-privacy@wp.pl Sent: Thursday, July 24, 2003 9:43 AM Subject: Re: atmel mega128 i call/ret

Eeee.. wcale nie dziwna

Nie zainicjowa³e¶ wska¼nika stosu. AVR jedzie ze wska¼nikiem w dó³ (w odró¿nieniu od '51) -> musi mieæ trochê miejsca na górze pamiêci :-)

.include "m128def.inc"

ldi r16, 0xff out spl, r16

loop: ldi r19, 0xff nop nop call increment rjmp loop

increment: inc r19 ret;

Teraz bêdzie dzia³aæ.

Pozdrawiam i powodzenia

Bartosz Sarama

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required