ldi r16, high(RAMEND) out SPH, r16 ldi r16, low(RAMEND) out SPL, r16
rcall start rcall nic
start: ldi r16,5 ret
nic: ldi r16,0 ret
No i robie build i debug. Program dochodzi do "rcall start" i zamiast wejść do start przechodzi do "rcall nic". Dlaczego nie wykonuje podprogramu. Czy coś robię źle?
Didn't find your answer? Ask the community — no account required.
M
mIrO
U¿ytkownik "skasuj" napisa³ w wiadomo¶ci
Ja tu widze dwa podprogramy, ale nie bardzo widze program ;) To zadziala wg mnie tak: zaladuje odpowiednia wartoscia SP skoczy do podprogramu start (zapamietujac LP na stosie) powroci w miejsce rcall nic (czyli nic) powroci... do rozkazu znajdujacego sie po rcall nic, czyli do tego ldi :) a pozniej juz sie moga dziac rozne cuda, zaleznie od tego co bedzie sie znajdowalo na stosie, z ktorego ten ret sciagnie wartosc do powrotu
proponuje napisac jakis fragment kodu, ktory zapetli program i dopiero w tej petli cos wykonywac:
main: ;twoj kod z wywoalenim funkcji
rjmp main ; no i to sie tutaj kreci w kolko
;twoje funkcje z powrotemi rozkazem ret
albo: rcall start rcall nic
main: ; to powyzej sie wykona, a nastepnie kontroler utknie w martwej petli rjmp main
S
skasuj
tak tak wiem tylko chodzi o ten pierwszy podprogram. AVRstudio olewa instrukcję rcall start i idzie dalej (nie wskakuje do podprogramu). Nie wiem czemu się tak dzieje.
S
skasuj
WINA JEST NIE W PROGRAMIE. JAK SYMULUJE SIE ZA POMOCA KLAWISZA F10 TO SYMULACJA OPUSZCZA PODPROGRAMY, A JEŻELI F11 TO WSZYSTKO DOBRZE. TO TAK JAKBY KTOŚ JESZCZE SIĘ NACIĄŁ.
J
Jaroslaw Berezowski
skasuj napisał(a):
Trzeba doczytac roznice miedzy trace into i step over ;)
A
Adam Dybkowski
[...]
Pokaż listing. Może coś nietak wyszło z asemblacją? Zamieść też wynikowy plik hex (przy tak krótkim nikt chyba się nie obrazi, że to binaria).
Join the Discussion
Have something to add? Share your thoughts — no account required.
Didn't find your answer?
Ask the community — no account required
Report Content
You are reporting this content to the moderators. They will look at it
ASAP.