Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОТЧЕТ МИТ.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
674.37 Кб
Скачать

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.