даже когда вызываю через rcall, все ровно кидает в начало.
Если выход из подпрограммы по RET, то вход в оную по RCALL (CALL), при этом внутри п/п, как Вам уже писали, не должно быть смещения указателя стека. Если, ни жить ни быть, хотите сохранить в стеке, что-то сделать и вспомнить прежнее содержимое, не нужно оформлять п/п. В крайнем случае, при многократном обращении, оформить макросами.
Спойлер
Код: Выделить всё
main:
; rjmp staskSave
staskSave:
push r16
push r17
push r18
push r19
push r20
push r21
push r22
push r23
push r24
push r25
push r26
push r27
push r28
push r29
push r30
push r31
; ret
;число в оперативку
ldi YL, low(1234)
ldi YH, high(1234)
ld r16, Y+
ld r17, Y+
ldi XL, byte1(596)
ldi XH, byte2(596)
st Y+, XH
st Y+, XL
;разложение на разряды
;rjmp todigit
; rjmp staskLoad
; rjmp main
staskLoad:
pop r31
pop r30
pop r29
pop r28
pop r27
pop r26
pop r25
pop r24
pop r23
pop r22
pop r21
pop r20
pop r19
pop r18
pop r17
pop r16
rjmp main
Присвоение ячейкам ОЗУ символьных имен предполагает их использование. Сейчас в программе почему-то используется абсолютные адреса, к тому же находящиеся вне области адресов имеющегося ОЗУ.
