- •Содержание
- •1 Лабораторная работа №1
- •Листинг программы
- •1.2 Описание работы программы
- •1.3 Блок схема программы
- •2 Лабораторная работа №2
- •2.1 Листинг программы
- •3 Лабораторная работа №3
- •3.1 Листинг программы
- •2.2 Описание работы программы
- •2.3 Блок схема программы
- •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 Описание программы
Для того чтобы обратиться к ЯП ОЗУ необходимо загрузить ее адрес в любую свободную РП. В данной задаче используется РП Х для хранения адреса ЯП ОЗУ. После чего микроконтроллер копирует данные из ЯП, адрес которой указан в РП Z в РОН r16. Для проверки на четность/нечетность используем флаг С. Для этого необходимо сдвинуть данные вправо на один разряд таким образом, чтобы младший бит данных оказался во флаге С. Если флаг С примет значение равное единице, то данные в регистре r16 нечетные. Если же флаг С будет равен 0, то данные четные.
Далее возможно 2 варианта выполнения команды. Первый вариант, если данные нечетные, то микроконтроллер после проверки флага С перейдет на следующую строку. Если данные четные, то микроконтроллер перейдет по метке chet. Рассмотрим первый случай, когда данные нечетные. Следующая команда, которую выполнит микроконтроллер – это сдвинет данные обратно влево, чтобы восстановить их и далее проверит данные на принадлежность к заданному по условию задачи интервалу, то есть сравнит их с числом 10210. После чего во флаге С установится лог. 1, если произошел заем, т.е. данные меньше числа 10210 или лог. 0 если данные равны или больше числа 10210. В зависимости от значения флага С микроконтроллер окажется либо на следующей строчке программы, что будет означать, что данные подходят по условию и следует выполнить над ними требуемые действия, либо данные по условию не подошли, следовательно никаких действий выполнять не следует и перейдет сразу в конец программы.
Во втором случае, если данные четные, микроконтроллер окажется на метке chet. Прежде чем сравнить их на принадлежность к заданному интервалу микроконтроллер восстановит данные с помощью сдвига влево. После чего сравнит с числом 17110. Если данные в регистре r16 больше либо равны числу 17110 (флаг С = 0), следует перейти к их обработке, если данные меньше 17110 (флаг С = 1), то никаких действий над данными не выполнять и сразу перейти в конец программы.
Микроконтроллер окажется на следующей строчке программы только в том случае, если данные подходят по условию. После чего полученный результат следует поместить обратно в ЯП.
3.3 Блок – схема программы
Блок – схема программы находится в приложении В. В приложении В приняты следующие сокращения: ЯП – ячейка памяти, РП – регистровая пара, РОН – регистр общего назначения.
4 Лабораторная работа №4
Написание подпрограммы с организацией цикла и проверкой данных на четность/нечетность на языке ассемблер микроконтроллера Atmega 8515 фирмы Atmel.
Лабораторная работа №4 посвящена организации цикла в программе. Организация цикла связана с необходимостью повтора одинаковых действий над содержимым ЯП расположенных последовательно. При этом используется косвенный режим адресации с постинкрементом или предекрементом. Дополнительно в программу вводится счетчик цикла равный количеству ячеек памяти над которыми выполняются одинаковые действия. В качестве счетчика циклов можно использовать любой свободный РОН. В конце программы необходимо сформировать адрес следующей ячейки памяти и увеличить счетчик цикла на 1. Если счетчик цикла не равен 0, то вернуться к началу цикла, а если счетчик цикла равен 0, то программу можно закончить, т.к. содержимое всех необходимых ЯП уже обработано соответствующим образом.
Записать лог. 1 в четные биты элементов массива, содержащие нечетные данные 15910> x ≥ 7510.. Ячейка памяти 51510 содержит 1 элемент массива. В массиве 14 элементов (адрес следующего элемента массива больше на 1).
