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

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

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






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

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



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

Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...

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

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

Хронометражно-табличная методика определения суточного расхода энергии студента Цель: познакомиться с хронометражно-табличным методом опреде­ления суточного расхода энергии...

ОЧАГОВЫЕ ТЕНИ В ЛЕГКОМ Очаговыми легочными инфильтратами проявляют себя различные по этиологии заболевания, в основе которых лежит бронхо-нодулярный процесс, который при рентгенологическом исследовании дает очагового характера тень, размерами не более 1 см в диаметре...

Примеры решения типовых задач. Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2   Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2. Найдите константу диссоциации кислоты и значение рК. Решение. Подставим данные задачи в уравнение закона разбавления К = a2См/(1 –a) =...

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

ЛЕЧЕБНО-ПРОФИЛАКТИЧЕСКОЙ ПОМОЩИ НАСЕЛЕНИЮ В УСЛОВИЯХ ОМС 001. Основными путями развития поликлинической помощи взрослому населению в новых экономических условиях являются все...

МЕТОДИКА ИЗУЧЕНИЯ МОРФЕМНОГО СОСТАВА СЛОВА В НАЧАЛЬНЫХ КЛАССАХ В практике речевого общения широко известен следующий факт: как взрослые...

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