- •2. Програмне забезпечення
- •2.1. Мови програмування
- •2. 2 Компоненти мови Асемблер
- •3. Створення програми мовою Асемблер
- •3.1. Постановка задачі
- •3.2. Директиви
- •3.4. Алгоритм
- •3.5. Програма обчислення в одній точці
- •3.6. Застосування зсувів і масок
- •3.7. Запис масиву даних до озп і організація циклу
- •3.8. Завантаження масиву даних з озп до рзп
- •3.9. Зупин програми
- •4. Команди нашої програми
- •1) Арифметичні і логічні команди
- •2) Команди переходів (branch instructions)
- •3) Команди передачі даних (data transfer instructions)
- •4) Команди з бітами (bit and bit-test instructions)
- •5) Команди керування мк (mcu control instructions)
- •Лабораторна робота №1 Основи програмного пакету розробника avr Studio
- •3 Підготовка до налагодження проекту.
- •5 Виправлення помилок алгоритму.
- •5 Оформити звіт.
- •6 Завдання на самостійну роботу.
- •Лабораторна робота №2
- •3 Компіляція проекту.
- •4 Налагодження проекту.
- •Лабораторна робота №3
- •Лабораторна робота №4
- •Лабораторна робота №4
- •1 Підготовка проекту в avr Studio 4 для запису програми до пам'яті мікроконтролера.
- •2 Підготовка апаратних засобів стартового набору stk500.
- •3 Підготовка програмного інтерфейсу stk500.
- •4 Програмування мк та дослідження спроектованого виробу на платі стартового набору stk500.
- •5 Завдання на самостійну роботу
- •1 Налаштування основних модулів мікроконтролера.
- •2 Дослідження основних режимів функціонування мікроконтролера.
- •3 Програмування мк та дослідження цпп на платі стартового набору stk500.
- •4 Завдання на самостійну роботу.
4) Команди з бітами (bit and bit-test instructions)
ror msk ; Rotate right through carry - Циклічний зсув (маски msk) праворуч
; через перенесення: Rd(7) <= C, Rd(n) <= Rd(n+1), C <= Rd(0)
clc ; Clear Carry - Очистити прапор перенесення: С <= 0
5) Команди керування мк (mcu control instructions)
nop ; No operation - Порожня команда
Використані мнемокоди команд (витяг з файлу лістинга 10func.lst) ATmega8515 instruction use summary:
add, sub, mul, dec, or, ori, neg, rjmp, brge, brne, brpl, cpi, mov, ldi, ld, st, ror, clc, nop
Instructions used: 19 out of 110 (17.3%)
ЗАВДАННЯ НА СРС: Написати приклади команд з використанням цих мнемокодів. Вказівка: Звернути увагу на припустимі операнди.
КОНТРОЛЬНІ ЗАПИТАННЯ ТА ВПРАВИ
Запис масиву РФ – ОЗП *(з різними адресами та напрямками їх зміни).
Завантаження ОЗП – РФ. *
Перезапис масиву ОЗП – ОЗП. *
Перевантаження масиву РФ – РФ **(з різними операціями над даними).
Запис масиву з наступним завантаження РФ – ОЗП – РФ. **
Завантаження масиву з наступним записом ОЗП – РФ – ОЗП. **
…
НЕВІРНО
Мортон. с. 54
ВІРНО: vprava02. Написати програму з п'яти команд для запису К чисел 0…К-1 до регістрів R0…R(К-1), у прикладі: 15 чисел 0…14 до регістрів R0…R14.
.def tmp = r16 ; Тимчасові дані
.equ K = $F ; Кількість К чисел 0…K-1 і регістрів R0…R(К-1)
LOOP: ; Цикл (петля)
st Z+,tmp ; R0 <= 0, R1 <= 1, R2 <= 2, …, R14 <= 0xE
inc tmp ; tmp = 0 => 1, 1 => 2, …, 14 => 15
cpi tmp,K ; tmp - 15
brne LOOP ; Якщо tmp != 15 (Z = 0), перехід до LOOP, інакше (tmp = 15,
; Z = 1), вихід з циклу LOOP на END
END: ;===== НЕСКІНЧЕННИЙ ЦИКЛ ПО ЗАКІНЧЕННІ ПРОГРАМИ ====
rjmp END ; Relative jump - Відносний перехід (безумовний, до позначки END)
vprava01. Написати програму для завантаження до регістрів Rі кількості К чисел: N = 10і, де і = 5, 6, … (5+К-1) наприклад, до регістрів R5, R6, …, R19 записати 15 чисел 50, 60, …, 190.
.def tmp = r16 ; Тимчасові дані
.equ K = $F ; Кількість К чисел 0…K-1 і регістрів R0…R(К-1)
LOOP: ; Цикл (петля)
st Z+,tmp ; R0 <= 0, R1 <= 1, R2 <= 2, …, R14 <= 0xE
inc tmp ; tmp = 0 => 1, 1 => 2, …, 14 => 15
cpi tmp,K ; tmp - 15
brne LOOP ; Якщо tmp != 15 (Z = 0), перехід до LOOP, інакше (tmp = 15,
; Z = 1), вихід з циклу LOOP на END
END: ;===== НЕСКІНЧЕННИЙ ЦИКЛ ПО ЗАКІНЧЕННІ ПРОГРАМИ ====
rjmp END ; Relative jump - Відносний перехід (безумовний, до позначки END)
vprava01. Написати програму для запису до регістрів R5, R6, …, R(5+К-1) кількість К чисел: 50, 60, …,10(5+К-1) , наприклад, до регістрів R5…R19 записати 15 чисел 50, 60, …, 190 .
.def tmp = r16 ; Тимчасові дані
.equ K = $F ; Кількість К чисел 0…K-1 і регістрів R0…R(К-1)
LOOP: ; Цикл (петля)
st Z+,tmp ; R0 <= 0, R1 <= 1, R2 <= 2, …, R14 <= 0xE
inc tmp ; tmp = 0 => 1, 1 => 2, …, 14 => 15
cpi tmp,K ; tmp - 15
brne LOOP ; Якщо tmp != 15 (Z = 0), перехід до LOOP, інакше (tmp = 15,
; Z = 1), вихід з циклу LOOP на END
END: ;===== НЕСКІНЧЕННИЙ ЦИКЛ ПО ЗАКІНЧЕННІ ПРОГРАМИ ====
rjmp END ; Relative jump - Відносний перехід (безумовний, до позначки END)
Ax3
+ Bx2
+ Cx
+ D
