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

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

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






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

  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; просмотров: 1780. Нарушение авторских прав; Мы поможем в написании вашей работы!



Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

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

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

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

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

Искусство подбора персонала. Как оценить человека за час Искусство подбора персонала. Как оценить человека за час...

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

Вопрос. Отличие деятельности человека от поведения животных главные отличия деятельности человека от активности животных сводятся к следующему: 1...

Расчет концентрации титрованных растворов с помощью поправочного коэффициента При выполнении серийных анализов ГОСТ или ведомственная инструкция обычно предусматривают применение раствора заданной концентрации или заданного титра...

Психолого-педагогическая характеристика студенческой группы   Характеристика группы составляется по 407 группе очного отделения зооинженерного факультета, бакалавриата по направлению «Биология» РГАУ-МСХА имени К...

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