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

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

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






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

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



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

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

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

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

Методика исследования периферических лимфатических узлов. Исследование периферических лимфатических узлов производится с помощью осмотра и пальпации...

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

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

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

Именные части речи, их общие и отличительные признаки Именные части речи в русском языке — это имя существительное, имя прилагательное, имя числительное, местоимение...

Интуитивное мышление Мышление — это пси­хический процесс, обеспечивающий познание сущности предме­тов и явлений и самого субъекта...

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