- •Содержание
- •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
4.1 Листинг программы
Необходимо перевести числа из десятичной системы исчисления в шестнадцатеричную:
- 51510 → 020316;
- 15910 → 9F16;
- 1410 →0E16;
- 7510 → 4B16;
ldi r18,0x0E ;Загрузить число 1410 в РОН r18 для создания
;счетчика циклов (количество ЭМ)
ldi r31,0x02 ;Загрузить старшую часть адреса ЯП, в РОН r31
ldi r30,0x03 ;Загрузить младшую часть адреса ЯП, в РОН r30
begin: ld r17, Z ;Скопировать данные в регистр r17 из ЯП с
;адресом, указанным в РП Z
ror r17 ;Сдвинуть данные вправо для проверки на
;четность
brсс fin ;Если флаг C = 0 (данные четные), то
;перейти на метку fin
rol r17 ;Восстановить данные в r17
cpi r17, 0x9Е ;Сравниваем данные в r17 с 15810 для проверки
;подходимости
brcc schet ;Если флаг C = 1 (данные меньше либо равны
;15810), то перейти на метку schet для
;выполнения дальнейших операций над числом
cpi r17,0x4B ;Сравнить данные в регистре r16 с числом 7510
brсс fin ;Если флаг С = 1 (данные >7510) то перейти на
;метку fin
schet: ori r17, 0b10101010 ;Записать лог. 1 в нечетные биты в РОН r17
st z, r17 ;Скопировать данные в ЯП, адрес которой указан
;в РП Z из r17
fin: ld r17, Z+ ;Скопировать данные в r17, а затем увеличить
;значение РП Z для формирования следующей
;ЯП
dec r18 ;Уменьшить счётчик цикла на единицу
brne begin ;Если счетчик цикла не обнулен, то перейти на
;метку begin, таким образом повторить цикл
nop ;Конец программы
4.2 Описание работы программы
Для создания счетчика цикла необходимо в любой свободный РОН с r16 по r31записать число равное количеству элементов в массиве. Далее начинается цикл программы. Микроконтроллер копирует данные из первого ЭМ в РОН r17. Цикл заключается в последовательной проверке данных находящихся в РОН с заданными в условии задачи числами. При этом используется флаг C. Данные в РОН r17 сравниваются с числом 15810. Если данные в регистре r17 равны 15810, то флаг C будет равен 1, микроконтроллер перейдет по указанной метке schet, после чего текущий ЭМ будет учтен как ЭМ содержащий интересующие нас данные. Затем микроконтроллер записывает лог.1 в четные биты ЭМ. Далее, чтобы приступить к проверке следующего ЭМ необходимо уменьшить на 1 счетчик цикла, после чего необходимо проверить флаг Z. Если флаг Z = 0, это говорит о том что счетчик цикла не обнулился и следует повторить цикл заново. После этого необходимо использовать команду преинкримента, для формирования адреса следующей ЯП, указанной в РП Z. Цикл будет повторяться до тех пор пока регистр r18 (счетчик цикла) не обнулится. Как только это произойдет микроконтроллер после проверки флага Z перейдет уже не на метку begin, а в конец программы.
4.3 Блок – схема для лабораторной работы №4
Блок – схема к лабораторной работе №4 находится в приложении Г. В приложении Г приняты следующие сокращения: ЯП – ячейка памяти, РП – регистровая пара, РОН – регистр общего назначения, ЭМ – элемент массива.
Лабораторная работа №5
Написание подпрограммы поиска максимума/минимума с организацией цикла на языке ассемблер микроконтроллера ATmega 8515 фирмы Atmel. В данной лабораторной работе для реализации программы поиска максимума/минимума используется эталон. Для поиска минимума в качестве эталона используется максимально возможное число FF16, для поиска максимума – минимально возможное число – 0016. В программе сначала выполняется проверка и только если данные подходят по всем условиям их необходимо сравнить с эталоном. Если данные меньше минимального эталона или больше максимального, то их нужно поместить в качестве нового эталона на месте старого. По окончании работы цикла вместо эталонов будут храниться данные удовлетворяющие всем условиям и являющиеся минимальными или максимальными [1].
В массиве из 12 элементов, первый элемент массива находится в ЯП с адресом 57210 (адрес следующего на 1 меньше), найти элемент массива, содержащий min нечетные данные, попадающие в интервал 18710 < x ≤ 1910. Результат поместить в ЯП с адресом 57510.
