Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MIT.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
620.15 Кб
Скачать

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.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]