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

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

- 8910 → 5916;

- 39210 → 018816.

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

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

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

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

add 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.

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

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

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

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

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

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

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

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

brne finish ;Если флаг Z = 0, то перейти в конец программы

ori r20,0b01010101 ;Записать лог. 1 в четые биты данных, находящихся

;в регистре r18

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

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

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