
- •Содержание
- •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 Листинг программы
Необходимо перевести числа из десятичной системы исчисления в шестнадцатеричную:
- 20910 → D116;
- 22310 → DF16;
- 41210 → 019C16;
- 28010 → 011816;
- 1410 → 0E16;
clr r18 ;Обнулить регистр r18
ldi r23,0x0E ;Загрузить число 1410 в РОН r23 для создания
;счетчика циклов (количество ЭМ)
ldi r31,0x01 ;Загрузить старшую часть адреса ЯП, в РОН r31
ldi r30,0x9C ;Загрузить младшую часть адреса ЯП, в РОН r30
m3: ld r16, Z ;Скопировать данные в регистр r16 из ЯП с
;адресом, указанным в РП Z
ror r16 ;Сдвинуть данные вправо для проверки на
;четность
brсс m1 ;Если флаг C = 0 (данные четные), то
;перейти на метку fin
rol r16 ;Восстановить данные в r16
cpi r16, 0xD1 ;Сравниваем данные в r16 с 20910 для проверки
;подходимости
brcs m2 ;Если флаг C = 1 (данные меньше 20910),
;то перейти на метку m2 для выполнения
; дальнейших операций над числом
cpi r16,0xE0 ;Сравнить данные в регистре r16 с числом 22410
brсs m1 ;Если флаг С = 0 (данные < 22410) то перейти на
;метку m1
m2: inc r18 ;Увеличить на 1 данные в регистре r18
m1: ld r16, Z+ ;Скопировать данные в r16, а затем увеличить
;значение РП Х для формирования следующей
;ЯП
dec r23 ;Уменьшить счётчик цикла на единицу
brne m3 ;Если счетчик цикла не обнулен, то перейти на
;метку m3, таким образом повторить цикл
sts 0x0118, r18 ;Cкопировать в ЯП ОЗУ с адр 28010 данные
;из регистра r18
nop ;Конец программы
4.2 Описание работы программы
Для создания счетчика цикла необходимо в любой свободный РОН с r16 по r31записать число равное количеству элементов в массиве. Далее начинается цикл программы. Микроконтроллер копирует данные из первого ЭМ в РОН r16. Цикл заключается в последовательной проверке данных находящихся в РОН с заданными в условии задачи числами. При этом используется флаг C. Данные в РОН r16 сравниваются с числом 20910. Если данные в регистре r16 равны 20910, то флаг C будет равен 1, микроконтроллер перейдет по указанной метке m2, после чего текущий ЭМ будет учтен как ЭМ содержащий интересующие нас данные. Далее, чтобы приступить к проверке следующего ЭМ необходимо уменьшить на 1 счетчик цикла, после чего необходимо проверить флаг Z. Если флаг Z = 0, это говорит о том что счетчик цикла не обнулился и следует повторить цикл заново. После этого необходимо использовать команду преинкримента, для формирования адреса следующей ЯП, указанной в РП Z. Цикл будет повторяться до тех пор пока регистр r18 (счетчик цикла) не обнулится. Как только это произойдет микроконтроллер после проверки флага Z перейдет уже не на метку m3, а в конец программы.
4.3 Блок – схема для лабораторной работы №4
Блок – схема к лабораторной работе №4 находится в приложении Г. В приложении Г приняты следующие сокращения: ЯП – ячейка памяти, РП – регистровая пара, РОН – регистр общего назначения, ЭМ – элемент массива.
Лабораторная работа №5
Написание подпрограммы поиска максимума/минимума с организацией цикла на языке ассемблер микроконтроллера ATmega 8515 фирмы Atmel. В данной лабораторной работе для реализации программы поиска максимума/минимума используется эталон. Для поиска минимума в качестве эталона используется максимально возможное число FF16, для поиска максимума – минимально возможное число – 0016. В программе сначала выполняется проверка и только если данные подходят по всем условиям их необходимо сравнить с эталоном. Если данные меньше минимального эталона или больше максимального, то их нужно поместить в качестве нового эталона на месте старого. По окончании работы цикла вместо эталонов будут храниться данные удовлетворяющие всем условиям и являющиеся минимальными или максимальными [1].
В массиве из 12 элементов, первый элемент массива находится в ЯП с адресом 57210 (адрес следующего на 1 меньше), найти элемент массива, содержащий min нечетные данные, попадающие в интервал 18710 < x ≤ 1910. Результат поместить в ЯП с адресом 57510.