Стек - AVR
Формулировка задачи:
Здравствуйте. Подскажите пожалуйста зачем использовать стек при написании программ на ассемблере? В файлах прикрепил скрин где программа для avr attiny2313 (при нажатии кнопки загорается светодиод).
Читал в интернете , не очень понял зачем он нужен,почему без него нельзя и почему в него записываем RAMEND (максимальный адрес ОЗУ)
Буду очень благодарен!!!
Решение задачи: «Стек»
textual
Листинг программы
mov [S], PC+2; Записываем текущий PC в некую ячейку памяти с адресом, который хранится в регистре S dec S, #2; уменьшаем/увеличиваем значение текущего смещения "верха" стека. jmp #offset; В итоге, в стеке сохранился адрес, следующий за этой инструкцией, а программа пошла по другому адресу. ; и все это одной инструкцией: call #offset
Объяснение кода листинга программы
- Записываем текущий PC в некую ячейку памяти с адресом, который хранится в регистре S - mov [S], PC+2
- Уменьшаем/увеличиваем значение текущего смещения
верха
стека - dec S, #2 - В итоге, в стеке сохранился адрес, следующий за этой инструкцией, а программа пошла по другому адресу - jmp #offset
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д