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

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

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






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

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



Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

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

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

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

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

Случайной величины Плотностью распределения вероятностей непрерывной случайной величины Х называют функцию f(x) – первую производную от функции распределения F(x): Понятие плотность распределения вероятностей случайной величины Х для дискретной величины неприменима...

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

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

Тема: Кинематика поступательного и вращательного движения. 1. Твердое тело начинает вращаться вокруг оси Z с угловой скоростью, проекция которой изменяется со временем 1. Твердое тело начинает вращаться вокруг оси Z с угловой скоростью...

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