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

Структура регістру станів

№ біта

7

6

5

4

3

2

1

0

3Fh (5Fh)

I

T

H

S

V

N

Z

C

Призначення окремих бітів регістру стану приведене нижче:

  • C – прапор переносу, встановлюється в 1 за наявністю переносу в арифметичних операціях;

  • Z – прапор нуля, встановлюється в 1, якщо результат операції дорівнює 0;

  • N – прапор від’ємного результату, встановлюється в 1 при отриманні від’ємного результату;

  • V – прапор переповнення, фіксує вихід результату за межу можливого діапазону значень;

  • S – прапор знака, S = N xor V;

  • H – прапор додаткового переносу (із молодшої тетради в старшу);

  • T – прапор для тимчасового зберігання біта з регістрів загального призначення;

  • I – керуючий прапор дозволу переривання, дозволяє (1) чи забороняє (0) процесору реагувати на апаратні переривання.[i]

Система команд мікроконтролера avr aTmega2561.

Базовий набір команд мови Assembler для мікроконтролерів AVR містить 120 інструкцій, які можна розділити на 4 групи: команди пересилки даних; арифметичні та логічні команди; інструкції для роботи з бітами; команди керування перебігом виконання програми.

Команди пересилки даних. Група команд пересилки даних містить інструкції по завантаженню значень констант, пересилки даних типу регістр-регістр, регістр – пам’ять, регістр – порт введення/виведення. Треба пам’ятати, що першим операндом є отримувач даних, а другим – джерело даних.

Команда загрузки констант ldi R, K використовується для запису безпосереднього значення К до регістру – приймача R. В якості регістру – приймача можуть використовуватись регістри загального призначення R16 - R31. Якщо константа представлена в двійковій чи шістнадцятирічній системах , то перед значенням константи К необхідно вказати специфікатор системи 0b – для двійкової, 0х – для шістнадцятирічної відповідно. Приклади:

ldi R16, 125 завантаження до R16 десяткового числа 125;

ldi R20, 0xFF завантаження до R20 шістнадцятирічної константи FFh;

ldi R23, 0b11011001 завантаження до R23 двійкової константи 11011001.

Команди пересилки даних між регістрами mov Rd, Rs використовується для пересилки значення із регістру – джерела Rs до регістру – отримувача Rd. Операнди в команді є виключно регістрами загального призначення R16 - R31.

Приклади:

mov R16, R0 завантаження до R16 значення із регістру R0;

mov R17, R20 завантаження до R17 значення із регістру R20.

В командах пересилки даних між регістром та коміркою пам’яті використовується механізм косвенної адресації, при котрому адреса комірки пам’яті заноситься до одного із 16-разрядних регістрів Х,Y,Z. Формати команд:

ld R8, (R16) – завантаження даних із комірки пам’яті, адреса якої знаходиться в 16-разрядному регістрі R16, до регістру загального призначення R8

st (R16), R8 – завантаження даних із регістру загального призначення R8 до комірки пам’яті, адреса якої знаходиться в 16-разрядному регістрі R16 ,

ldd R8, (R16+Q) – завантаження даних до регістру загального призначення R8 із комірки пам’яті, адреса якої знаходиться як сума значення, яке знаходиться в 16-разрядному регістрі R16 , та зсуву Q,.

std (R16+Q), R8 – завантаження даних з регістра загального призначення R8 до комірки пам’яті, адреса якої знаходиться як додаток значення 16-разрядного регістру R16 та зсуву Q,.

ld R8, (R16) – завантаження даних до регістру загального призначення R8 даних із комірки пам’яті, якої знаходиться в 16-разрядному регістрі R16;

Приклади:

ld R2, X завантаження до R2 значення з пам’яті за адресою, вказаною в Х;

st Y, R5 завантаження значення з регістру R5 до пам’яті за адресою, вказаною у Y.

ldd R5, Z+1 завантаження в R5 байта з пам’яті за адресою Z+1;

std Y+4, R7 завантаження байта з регістру R7 до пам’яті за адресою Y+4.

Для звернення до портів введення/виведення у мікропроцесорі передбачені спеціальні команди in та out:

in R, P введення даних із порту з адресою Р до регістру загального призначення R;

out P, R виведення даних із регістру загального призначення R до порту з адресою Р;

Приклади:

in R10, 0x15 введення даних із порту з адресою 15h до регістру загального призначення R10;

out 0x2F, R8 виведення даних із регістру загального призначення R8 до порту з адресою 2Fh.

Арифметичні та логічні команди. Для роботи з цілими двійковими числами АЛП мікроконтролеру AVR MEGA2561 підтримує більше десятку арифметичних та логічних команд.

Основними арифметичними командами є інструкції додавання, віднімання та множення. Операндами в командах цієї групи можуть бути тільки регістри загального призначення. Результат операції (крім множення) заноситься за адресою першого операнда.

Основні команди для виконання операцій додавання, віднімання та множення (для чисел без знаку):

add Rd, Rs команда додавання (addition), дія: Rd=Rd+Rs;

sub Rd, Rs команда віднімання (subtraction), дія: Rd=Rd–Rs.

mul Rd, Rs команда множення (multipl.), дія: R1, R0=Rd*Rs.

Команди змінюють прапори переносу С, переповнення V, знаку N, S, та нуля Z. При виконанні операцій множення n-значних чисел місцезнаходження результату розрядністю 2n фіксоване та не вказується у команді: при множенні двох байтів результат розміром в слово заноситься до регістрової пари (R1, R0), до R0 – молодше слово, до R1 – старше слово.

Приклади:

add R10, R15 R10 = R10 + R15;

sub R2, R7 R2 = R2 – R7;

mul R5, R16 R1,R0 = R5 * R16.

Команди додатнього та від’ємного приросту (інкремента та декремента):

inc R інкремент (increment), дія R=R + 1;

dec R декремент (decrement), дія R=R – 1.

У якості операнду у цих командах дозволяється використовувати лише регістр загального призначення.

Приклади:

inc R20 дія R20 = R20 + 1;

dec R16 дія R16 = R16 – 1.

Основними логічними командами мікроконтролеру AVR MEGA25618 є:

or Rd, Rs логічне “або”; дія: Rd = Rd or Rs;

and Rd, Rs логічне “та”; дія: Rd = Rd and Rs;

eor Rd, Rs “виключне або”; дія: Rd = Rd eor Rs.

Вказані команди виконують операції порозрядного логічного «або», логічного «та», «виключного або» над операндами, що знаходяться у регістрах загального призначення, а результат заноситься за адресою першого операнду. Приклади:

or R7, R11 дія: R7 = R7 or R11;

and R10, R11 дія: R10 = R10 and R11;

eor R25, R30 дія: R25 = R25 eor R30.

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