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

Прежде чем приступить к написанию программы необходимо перевести числа, указанные в условии задачи, из десятичной системы исчисления в шестнадцатеричную:

- 19510 → С316;

- 50010 → 014016.

ldi r31,0x01 ;Загрузить в регистр общего назначения (РОН) r31 ;старшую часть адреса ячейки памяти (ЯП)

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

ldi r16,0xC3 ;Загрузить число 12410 в РОН r16

ld r5,Z ;Скопировать данные в РОН r5 из ЯП, адрес которой ;указан в регистровой паре Z

sub r5,r16 ;Вычесть из содержимого РОН r5 содержимое ;регистра r16 и поместить результат в РОН r5

st Z,r5 ;Скопировать данные из РОН r5 в ЯП, адрес ;которой указан в регистровой паре (РП) Z

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

1.2 Описание работы программы

Прежде чем выполнить требуемое действие над заданными числами необходимо обратиться к ЯП оперативного запоминающего устройства (ОЗУ) микроконтроллера, а для этого требуется загрузить адрес интересующей нас ЯП в свободную регистровую пару (РП), в данном случае используется РП Z. Далее загружаем константу в любой свободный РОН с r16 по r31. Следующее действие, которое выполнит микроконтроллер – это скопирует данные из ЯП, адрес которой указан в РП Z и поместит их в требуемый регистр – в данном случае регистр r5. После чего микроконтроллер вычитает данные, хранящиеся в регистре r16 из регистра r5 и результат выполненной операции помещает в регистр r5. Остается только записать полученный результат из регистра r5 в ЯП, адрес которой указан в РП Z.

1.3 Блок схема программы

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

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

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

Если в ячейке памяти с адресом 56410 находятся нечетные данные, то записать в них лог. 1 в младшие 4 бита. Если данные – четные, то оставить их без изменений.

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

В условии задачи адрес ЯП, в которой находятся интересующие нас данные, записан в десятичной системе исчисления. Переведём число - 56410 в шестнадцатеричную систему исчисления. Это будет 023416 .

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

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

ld r17,X ;Скопировать в РОН r17 данные из ЯП, адрес ;которой указан в РП Х

mov r16,r17 ;Скопировать данные из регистра r17 в регистр r16 для ;последующей проверки на четность/нечетность

andi r16, 0b00000001 ;Проверяем на четность, выполняя логическое ;умножение r16 с числом 0b00000001

breq finish ;Если флаг Z = 1 (т.е. в регистре r16 находились ;четные данные), то перейти в конец программы

ori r17,0b11110000 ;Записать лог. 1 в старшие 4 бита данных, находящихся ;в регистре r18

st X,r17 ;Скопировать данные из регистра r18 в ЯП, адрес ;которой указан в РП Х

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