Сборка AVR: Какой будет адрес в инструкциях jmp и rjmp? - PullRequest
0 голосов
/ 12 октября 2018

Мне дали код, который выглядит следующим образом:

140 Назад: jmp Forward

142 add

143 добавить

.

.В общей сложности 80 инструкций добавления выполняются следующим образом

.

222 lds

224 lds

226 lds

.

.Существует всего 300 инструкций lds, которые выполняются следующим образом:

.

822 Вперед: rjmp Назад

Какой адрес ячейки памяти будет сохраненв инструкции jmp в 140-й строке и инструкции rjmp в 822-й строке?Будет сохранен адрес памяти в формате 822-140 = 682 или 823-140 = 683 (учитывая, что ПК + 1).

1 Ответ

0 голосов
/ 12 октября 2018

Я думаю, что эти числа в начале каждой строки этой домашней задачи - это не номера строк, а значения счетчиков программ (то есть адреса слов во флэш-памяти, где каждое слово составляет два байта).

The *Инструкция 1003 * хранит абсолютные адреса, поэтому в инструкции jmp Forward будет просто храниться число 822 .

Инструкция rjmp хранит число k и вызывает счетчик программы (ПК) изменить на PC + k + 1.Таким образом, мы должны решить для k, зная, что ПК изначально равен 822, и он должен измениться на 140. Итак, мы знаем 140 = 822 + k + 1, и, следовательно, k = 140 - 822 - 1 = -683 .

...