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

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

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





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

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




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


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


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


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

Дезинфекция предметов ухода, инструментов однократного и многократного использования   Дезинфекция изделий медицинского назначения проводится с целью уничтожения патогенных и условно-патогенных микроорганизмов - вирусов (в т...

Машины и механизмы для нарезки овощей В зависимости от назначения овощерезательные машины подразделяются на две группы: машины для нарезки сырых и вареных овощей...

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

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

Медицинская документация родильного дома Учетные формы родильного дома № 111/у Индивидуальная карта беременной и родильницы № 113/у Обменная карта родильного дома...

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

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