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

5.3 Блок – схема для лабораторной работы №5

Блок – схема к лабораторной работе №5 находится в приложении Д. В приложении Д приняты следующие сокращения: ЯП – ячейка памяти, РП – регистровая пара, РОН – регистр общего назначения, ЭМ – элемент массива.

6 Лабораторная работа №6

Написание подпрограммы с организацией вложенного или дополнительного цикла на языке ассемблер микроконтроллера ATmega 8515 фирмы Atmel.

В некоторых случаях требуется организация еще и второго цикла либо внутри основного, либо после него. В этом случае понадобится еще один счетчик цикла, который также необходимо уменьшать на 1 и проверять на обнуление.

В массиве из 29 элементов, первый элемент массива (ЭМ) находится в ячейке памяти с адресом 58410 (адрес следующего ЭМ на 1 больше), найти количество бит, равных лог. 0 в младшей тетраде ЭМ, содержащего четные данные, попадающие в интервал 9810 ≤ х ≤ 20410. Результат поместить, начиная с ЯП с адресом 58810.

6.1 Листинг программы

Необходимо перевести числа из десятичной системы исчисления в шестнадцатеричную:

- 2910 → 1D16;

- 58410 → 024816;

- 9810 → 6216;

- 20410 → СC16;

- 58810 → 024C16;

ldi r29,0x02 ;Загрузить старшую часть адреса ЯП в РОН r29

ldi r28,0x48 ;Загрузить младшую часть адреса ЯП в РОН r28

ldi r16,0x1D ;Создать счетчик цикла ЭМ

clr r20 ;Создать счетчик количества бит равных лог. 0

m1: ld r18, Y ;Загрузить текущий ЭМ в РОН r18 из ЯП, адрес

;которой указан в РП Y

ror r18 ;Сдвинуть данные вправо для последующей

;проверки на нечетность

brcs m2 ;Если флаг С = 1 (данные в РОН r20 нечетные),то

;перейти на метку m2

rol r18 ;Сдвинуть данные влево для восстановления

cpi r18,0x62 ;Сравнить данные в текущем ЭМ с нижней

;границей интервала

brcs m2 ;Если данные в РОН меньше 9810 (не подходят по

;условию) то перейти на метку m2

cpi r20,0xCD ;Сравнить данные в текущем ЭМ с числом 20410

brcs m2 ;Если данные < 9810, то перейти на метку m2

cpi r18,0xCD ;Сравнить данные в r18 с верхней границей

brcc m2 ;Если флаг С=0,(данные ≥20510) перейти на m2

ldi r19,0x04 ;Загружаем число 4 для создания счетчика 2-го

;цикла

m3: ror r18 ;Путем сдвига вправо, выясняем значение

;последнего бита

brcs m4 ;Если счетчик не равен 0, вернуться в начало

;второго цикла

inc r20 ;Если бит равен 0, увеличить счетчик бит на 1

m4: dec r19 ;Уменьшить счетчик 2-го цикла на 1

brne m3 ;Если счетчик не равен 0 то вернуться в начало

;второго цикла

m2: ld r18,-Y ;Используем предекремент задаем адрес след.

;элемента массива

dec r16 ;Уменьшить на 1 счетчик первого цикла

brne m1 ;Если счетчик не равен 0, то вернуться в начало

;первого цикла

sts 0x024C,r20 ;Сохранить кол-во бит с лог. 0 в ЯП 58810

nop ;Конец программы

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