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

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

Команды перехода.






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

rjmp address - безусловный переход по указанному адресу.

breq address - переход по указанному адресу, если флаг Z=1

brne address - переход по указанному адресу, если флаг Z=0

brcc address - переход по указанному адресу, если флаг С=0

brcs address - переход по указанному адресу, если флаг С=1

brbc s,address - переход по указанному адресу, если разряд регистра SREG =0

brbs s,address - переход по указанному адресу, если разряд регистра SREG =1.

и т.д.

Обычно команды переходов находятся после команд, изменяющих содержимое регистра флагов SREG. Команды условного перехода (при условии равенства флагов), выполняются в два этапа. Сначала проверяется значение флага, а затем осуществляется переход или к указанной в команде метке (если флаг равен заданному значению), или к следующей команде программы (если флаг не равен заданному значению).

Если выполнялась команда сравнения, например, cpi r16,0x09 (сравнить содержимое регистра r16 с числом 9), то происходит вычитание числа 910 из содержимого регистра r16, при этом содержимое регистра r16 не изменяется, однако флаги Z и C устанавливаются соответствующим образом:

флаги r16 < 910 r16 = 910 r16 > 910
Z      
C      

По полученному значению флагов можно определить, если флаг С стал равен 1, то содержимое регистра r16 оказалось меньше числа 910. если флаг Z стал равен 1, то содержимое регистра r16 оказалось равно числу 910. Если оба флага равны нулю, то содержимое регистра r16 оказалось больше числа 910.

Допустим, что по условию задания подходит только тот случай, когда содержимое регистра r16 строго больше числа 910. В этом случае все неподходящие условия должны спровоцировать переход в другое место программы, называемое met1.

Также с помощью флага Z можно осуществлять проверку 8-и битовых данных на четность/нечетность. Для этого сначала проанализируем, чем четные данные в двоичном коде отличаются от нечетных. Если перевести числа в двоичный код, то видно, что все четные данные будут заканчиваться на логический 0, а все нечетные – на логическую 1. В этом случае нас интересует только один бит данных – самый младший (имеет вес 20). Для проверки этого бита, используем команду логического умножения на константу, в которой лог.1 находится только в интересующем нас разряде: andi r16,0b00000001. После логического умножения четного числа в регистре r16 получится число 010 (=> флаг Z=1). После логического умножения нечетного числа в регистре r16 получится число 110 (=> флаг Z=0). Значит достаточно просто проверить, чему стал равен флаг Z, и можно определить, четные данные были в регистре r16 или нечетные. Правда, сами данные в регистре r16 уже будут испорчены. Поэтому прежде чем проводить логическое умножение данных в регистре r16 для выяснения их четности/нечетности, следует скопировать их в какой-либо регистр.







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



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

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

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

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

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

Ведение учета результатов боевой подготовки в роте и во взводе Содержание журнала учета боевой подготовки во взводе. Учет результатов боевой подготовки - есть отражение количественных и качественных показателей выполнения планов подготовки соединений...

Сравнительно-исторический метод в языкознании сравнительно-исторический метод в языкознании является одним из основных и представляет собой совокупность приёмов...

Типы конфликтных личностей (Дж. Скотт) Дж. Г. Скотт опирается на типологию Р. М. Брансом, но дополняет её. Они убеждены в своей абсолютной правоте и хотят, чтобы...

Гносеологический оптимизм, скептицизм, агностицизм.разновидности агностицизма Позицию Агностицизм защищает и критический реализм. Один из главных представителей этого направления...

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

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