Студопедия — Команды условных и безусловных переходов
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Команды условных и безусловных переходов






Безусловный переход – указание микроконтроллеру продолжить выполнение программы по указанному адресу. Существует видов безусловных переходов, различающихся по способу указания данного адреса:

  1. Непосредственный (абсолютный) – JMP – адрес перехода указан непосредственно в теле команды, при выполнении счетчику команд присваивается этот адрес.
  2. Относительный – RJMP – в теле команды указывается смещение адреса перехода относительно адреса команды, к счетчику команд прибавляется или вычитается значение смещения, а микроконтроллерах семейства AVR данное смещение
  3. Косвенный – IJMP – адрес перехода задается в регистре Z, при выполнении счетчику команд присваивается этот адрес.
  4. Расширенный косвенный – EIJMP – старший байт адреса перехода содержится в регистре специального назначения EIND (команда и регистр присутствует не во всех микроконтроллерах)

Условный переход — команда микроконтроллеру на изменение порядка выполнения программы в соответствии с результатом проверки некоторого условия.

Наиболее часто условный переход имеет две стадии: на первой происходит сравнение между собой некоторых величин, определяющих условие перехода, на второй выполняется сам переход.

Условные переходы могут быть реализованы двумя способами. Переход меняет значение счётчика команд процессора на вычисленное значение адреса перехода. Пропуск дополнительно увеличивает значение счётчика команд на число, равное длине следующей команды, для пропуска команды.

В микроконтроллерах архитектуры AVR применяется две команды условного перехода BRBC, BRBS, пять команд пропуска по условию CPSE, SBRC, SBRS, SBIC, SBIS и четыре вспомогательных команды расчета условия CP, CPC, CPI, TST. При написании программ, команды безусловного, условного переходов и вызова подпрограмм могут ссылаться на метки, вместо которых компилятор подставляет соответствующее рассчитанное значение адреса перехода или смещения. Ограничения команд на расстояние переходов указаны в документации.

Стек

Стек (англ. stack — стопка) — структура данных с методом доступа к элементам LIFO (англ. Last In — First Out, «последним пришёл — первым вышел»).

Добавление элемента, называемое также проталкиванием (push), возможно только в вершину стека (добавленный элемент становится первым сверху). Удаление элемента, называемое также выталкивание (pop), возможно также только из вершины стека, при этом, второй сверху элемент становится верхним.

Стеки широко применяются в вычислительной технике — в частности, для отслеживания точек возврата из подпрограмм используется стек вызовов, который является неотъемлемой частью архитектуры большинства современных процессоров.

В микропроцессорах AVR стек располагается в области оперативной памяти, адрес стека содержится в паре регистров ввода-вывода SPL и SPH (младший и старший байты соответственно). Старший байт SPH (разряды SP8...SP15) находится в памяти по адресу $ЗЕ ($5Е), а младший байт SPL (разряды SP0...SP7) - по адресу $3D ($5D). Число фактически используемых разрядов зависит от типа микроконтроллера. У некоторых AVR-микроконтроллеров область памяти данных настолько мала, что достаточно только регистра SPL. В этом случае регистр SPH отсутствует.

Указатель стека после подачи сигнала сброса устанавливается в "0". Он доступен для чтения и записи. Регистры указателя стека указывает на вершину стека. Обратите внимание на организацию стека, который направляется от старших в более младшие позиции статического ОЗУ. Это означает, что команда помещения в стек PUSH уменьшает значение указателя стека.

Указатель стека указывает на область стека в статическом ОЗУ данных, где размещены стеки прерываний и подпрограммы. Данная область стека в статическом ОЗУ памяти данных должна быть определена программно до вызова любой процедуры или разрешения прерываний. Устанавливаемое значение указателя стека должно быть более 0x60. Указатель стека однократно декрементируется при помещении данных в стек инструкцией PUSH и дважды декрементируется при помещении в стек адреса возврата при вызове подпрограмм или прерываниях. Указатель стека однократно инкрементируется при извлечении данных из стека инструкцией POP и дважды инкрементируется при извлечении адреса возврата при выполнении инструкции выхода из подпрограммы RET или выхода из процедуры обработки прерываний RETI.

В подключаемых файлах описаний регистров микроконтроллеров, размер SRAM определен как RAMEND. Поэтому для установки указателя стека в конец SRAM используется следующая последовательность команд:

 

ldi r16,low(RAMEND) out spl,r16 ldi r16,high(RAMEND) out sph,r16

Когда байт помещается в стек, то он записывается по адресу, на который сейчас ссылается указатель стека, после чего указатель стека декрементируется на 1. Когда байт с извлекается из стека, то сначала указатель стека инкрементируется на 1, а затем байт, извлеченный по соответствующему адресу, копируется в регистр назначения.

В случае вызова подпрограммы в стек заносится только адрес возврата, поэтому при необходимости сохранения значений регистров общего назначения и флагов состояния, их следует занести в стек в начале выполнения подпрограммы и вернуть в конце.







Дата добавления: 2015-08-27; просмотров: 1776. Нарушение авторских прав; Мы поможем в написании вашей работы!



Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

Типовые примеры и методы их решения. Пример 2.5.1. На вклад начисляются сложные проценты: а) ежегодно; б) ежеквартально; в) ежемесячно Пример 2.5.1. На вклад начисляются сложные проценты: а) ежегодно; б) ежеквартально; в) ежемесячно. Какова должна быть годовая номинальная процентная ставка...

Выработка навыка зеркального письма (динамический стереотип) Цель работы: Проследить особенности образования любого навыка (динамического стереотипа) на примере выработки навыка зеркального письма...

Словарная работа в детском саду Словарная работа в детском саду — это планомерное расширение активного словаря детей за счет незнакомых или трудных слов, которое идет одновременно с ознакомлением с окружающей действительностью, воспитанием правильного отношения к окружающему...

Этапы и алгоритм решения педагогической задачи Технология решения педагогической задачи, так же как и любая другая педагогическая технология должна соответствовать критериям концептуальности, системности, эффективности и воспроизводимости...

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

Репродуктивное здоровье, как составляющая часть здоровья человека и общества   Репродуктивное здоровье – это состояние полного физического, умственного и социального благополучия при отсутствии заболеваний репродуктивной системы на всех этапах жизни человека...

Studopedia.info - Студопедия - 2014-2024 год . (0.012 сек.) русская версия | украинская версия