
- •Содержание
- •1 Лабораторная работа №1
- •Листинг программы
- •1.2 Описание работы программы
- •1.3 Блок схема программы
- •2 Лабораторная работа №2
- •2.1 Листинг программы
- •2.2 Описание работы программы
- •2.3 Блок схема программы
- •3 Лабораторная работа №3
- •3.1 Листинг программы
- •3.2 Описание программы
- •3.3 Блок – схема программы
- •4 Лабораторная работа №4
- •4.1 Листинг программы
- •4.2 Описание работы программы
- •4.3 Блок – схема для лабораторной работы №4
- •5.1 Листинг программы
- •5.2 Описание работы программы
- •5.3 Блок – схема для лабораторной работы №5
- •6 Лабораторная работа №6
- •6.1 Листинг программы
- •6.2 Описание работы программы
- •6.3 Блок – схема для лабораторной работы №6
3.2 Описание программы
Для того чтобы обратиться к ЯП ОЗУ необходимо загрузить ее адрес в любую свободную РП. В данной задаче используется РП Х для хранения адреса ЯП ОЗУ. После чего микроконтроллер копирует данные из ЯП, адрес которой указан в РП Х в РОН r17. Для проверки на четность/нечетность используем флаг С. Для этого необходимо сдвинуть данные вправо на один разряд таким образом, чтобы младший бит данных оказался во флаге С. Если флаг С примет значение равное единице, то данные в регистре r17 нечетные. Если же флаг С будет равен 0, то данные четные.
Далее возможно 2 варианта выполнения команды. Первый вариант, если данные четные, то микроконтроллер после проверки флага С перейдет на следующую строку. Если данные нечетные, то микроконтроллер перейдет по метке nechet. Рассмотрим первый случай, когда данные четные. Следующая команда, которую выполнит микроконтроллер – это сдвинет данные обратно влево, чтобы восстановить их и далее проверит данные на принадлежность к заданному по условию задачи интервалу, то есть сравнит их с числом 14710. После чего во флаге С установится лог. 1, если произошел заем, т.е. данные меньше числа 14710 или лог. 0 если данные равны или больше числа 14710. В зависимости от значения флага С микроконтроллер окажется либо на следующей строчке программы, что будет означать, что данные подходят по условию и следует выполнить над ними требуемые действия, либо данные по условию не подошли, следовательно никаких действий выполнять не следует и перейдет сразу в конец программы.
Во втором случае, если данные нечетные, микроконтроллер окажется на метке nechet. Прежде чем сравнить их на принадлежность к заданному интервалу микроконтроллер восстановит данные с помощью сдвига влево. После чего сравнит с числом 6010. Если данные в регистре r17 больше либо равны числу 7710 (флаг С = 0), следует перейти к их обработке, если данные меньше 7710 (флаг С = 1), то никаких действий над данными не выполнять и сразу перейти в конец программы.
Микроконтроллер окажется на следующей строчке программы только в том случае, если данные подходят по условию. После чего полученный результат следует поместить обратно в ЯП.
3.3 Блок – схема программы
Блок – схема программы находится в приложении В. В приложении В приняты следующие сокращения: ЯП – ячейка памяти, РП – регистровая пара, РОН – регистр общего назначения.
4 Лабораторная работа №4
Написание подпрограммы с организацией цикла и проверкой данных на четность/нечетность на языке ассемблер микроконтроллера Atmega 8515 фирмы Atmel.
Лабораторная работа №4 посвящена организации цикла в программе. Организация цикла связана с необходимостью повтора одинаковых действий над содержимым ЯП расположенных последовательно. При этом используется косвенный режим адресации с постинкрементом или предекрементом. Дополнительно в программу вводится счетчик цикла равный количеству ячеек памяти над которыми выполняются одинаковые действия. В качестве счетчика циклов можно использовать любой свободный РОН. В конце программы необходимо сформировать адрес следующей ячейки памяти и уменьшить счетчик цикла на 1. Если счетчик цикла не равен 0, то вернуться к началу цикла, а если счетчик цикла равен 0, то программу можно закончить, т.к. содержимое всех необходимых ЯП уже обработано соответствующим образом.
Посчитать кол-во нечетных чисел 20910 >x, или 22310<x в массиве из 14 элементов. Ячейка памяти с адресом 41210 содержит первый элемент массива (адрес следующего элемента-больше на 1). Результат поместить в ячейку памяти с адресом 28010.