- •Содержание
- •1 Лабораторная работа №1
- •Листинг программы
- •1.2 Описание работы программы
- •1.3 Блок схема программы
- •2 Лабораторная работа №2
- •2.1 Листинг программы
- •3 Лабораторная работа №3
- •3.1 Листинг программы
- •2.2 Описание работы программы
- •2.3 Блок схема программы
- •3.2 Описание программы
- •3.3 Блок – схема программы
- •4 Лабораторная работа №4
- •4.1 Листинг программы
- •4.2 Описание работы программы
- •4.3 Блок – схема для лабораторной работы №4
- •5.1 Листинг программы
- •5.2 Описание работы программы
- •5.3 Блок – схема для лабораторной работы №5
- •6 Лабораторная работа №6
- •6.1 Листинг программы
- •6.2 Описание работы программы
- •6.3 Блок – схема для лабораторной работы №6
Листинг программы
Прежде чем приступить к написанию программы необходимо перевести числа, указанные в условии задачи, из десятичной системы исчисления в шестнадцатеричную:
- 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 ;Конец программы
