Стек - AVR

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Подскажите пожалуйста зачем использовать стек при написании программ на ассемблере? В файлах прикрепил скрин где программа для avr attiny2313 (при нажатии кнопки загорается светодиод). Читал в интернете , не очень понял зачем он нужен,почему без него нельзя и почему в него записываем RAMEND (максимальный адрес ОЗУ) Буду очень благодарен!!!

Решение задачи: «Стек»

textual
Листинг программы
mov [S], PC+2; Записываем текущий PC в некую ячейку памяти с адресом, который хранится в регистре S
dec S, #2; уменьшаем/увеличиваем значение текущего смещения "верха" стека.
jmp #offset; В итоге, в стеке сохранился адрес, следующий за этой инструкцией, а программа пошла по другому адресу.
 
; и все это одной инструкцией:
call #offset

Объяснение кода листинга программы

  1. Записываем текущий PC в некую ячейку памяти с адресом, который хранится в регистре S - mov [S], PC+2
  2. Уменьшаем/увеличиваем значение текущего смещения верха стека - dec S, #2
  3. В итоге, в стеке сохранился адрес, следующий за этой инструкцией, а программа пошла по другому адресу - jmp #offset

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.8 из 5
Похожие ответы