
- •1 Загальні відомості
- •6 Відладка програми
- •7 Налаштування параметрів імітатора
- •ATmega128, aTmega128l 8-розрядний avr-мікроконтролер з внутрішньосистемною програмованою флеш-пам'яттю ємністю 128 кбайт Особливості:
- •Короткий огляд
- •Завдання:
- •Лабораторна робота №2 «Вивчення математичних і логічних операцій і їх вплив на біти-стану мікроконтролера» Ціль роботи
- •Програма виконання роботи
- •Додатковий теоретичний матеріал необхідний для виконання лабораторної роботи
- •Завдання:
- •Лабораторна робота №3 «Вивчення методів додавання і віднімання чотирьохбайтних чисел» Ціль роботи
- •Програма виконання роботи
- •Додатковий теоретичний матеріал необхідний для виконання лабораторної роботи
- •Завдання:
- •Завдання:
- •Лабораторна робота №5 «Вивчення роботи з пам’яттю даних» Ціль роботи
- •Програма виконання роботи
- •Додатковий теоретичний матеріал необхідний для виконання лабораторної роботи
- •Завдання:
- •Лабораторна робота №6 «Вивчення операцій порівняння і реалізація циклічних операцій» Ціль роботи
- •Програма виконання роботи
- •Додатковий теоретичний матеріал необхідний для виконання лабораторної роботи
- •Завдання:
- •Завдання:
- •Завдання:
- •Часові діаграми таймера-лічильника 0
- •Опис регістрів 8-розрядного таймера-лічильника 0
- •Асинхронна робота таймера-лічильника 0
- •Дільник частоти таймера-лічильника 0 Дільник частоти таймер-лічильника 0
- •Завдання:
- •Завдання:
- •Набір інструкцій
Завдання:
Здійснити додавання двох констант, які індивідуально задаються викладачу студенту перед початком виконання лабораторної роботи. Від результату додавання відняти одну з констант і переконатися, що результатом віднімання справді буде друга константа.
Перевірити додавання і віднімання з допомогою вбудованого калькулятора операційної системи Windows (або іншими засобами, не AVR Studio).
Продемонструвати викладачеві проміжні результати додавання і віднімання. Прокоментувати хід виконання програми.
Лабораторна робота №4 «Програмування з допомогою підпрограм. Стек»
Ціль роботи
вивчити методику використанні підпрограм
ознайомитися з роботою стеку
вивчити методику порівняння двох двобайтинх чисел
Програма виконання роботи
- Об’явити три константи A0, DELTA і LIMIT, розмір яких не перевищує двохбайтне число
- Написати підпрограму додавання попереднього результату значення DELTA
- Припинити додавання у тому випадку. коли результатом останнього числа буде трибайтне число, або значення буде більше-рівним значення LIMIT
Додатковий теоретичний матеріал необхідний для виконання лабораторної роботи
Стек
Стек (англ. stack — стопка) — різновид лінійного списку, структура даних, яка працює за принципом «останнім прийшов — першим пішов» (LIFO, англ. last in, first out). Всі операції (наприклад, видалення елементу) в стеку можна проводити тільки з одним елементом, який знаходиться на верхівці стеку та був введений в стек останнім.
Стек можна розглядати як певну аналогію до стопки тарілок, з якої можна взяти верхню, і на яку можна покласти верхню тарілку (інша назва стеку — «магазин», за аналогією з принципом роботи магазину в автоматичній зброї)
Додавання елемента, яке називається також проштовхуванням (push), можливо тільки в вершину стека (доданий елемент стає першим зверху). Видалення елемента, яке називається також виштовхуванням (pop), теж можливо тільки з вершини стека, при цьому другий зверху елемент стає верхнім.
Стеки широко застосовуються в обчислювальній техніці. Наприклад, для відстеження точок повернення з підпрограм використовується стек викликів, який є невід'ємною частиною архітектури більшості сучасних процесорів. Мови програмування високого рівня також використовують стек викликів для передачі параметрів при виклику процедур.
Операції зі стеком
push ("заштовхнути елемент"): елемент додається в стек та розміщується в його верхівці. Розмір стеку збільшується на одиницю. При перевищенні розміру стека граничної величини, відбувається переповнення стека (англ. stack overflow)
pop ("виштовхнути елемент"): отримує елемент з верхівки стеку. При цьому він видаляється зі стеку і його місце в верхівці стеку займає наступний за ним відповідно до правила LIFO, а розмір стеку зменшується на одиницю. При намаганні "виштовхнути" елемент з вже пустого стеку, відбувається ситуація "незаповнення" стеку (англ. stack underflow)
Організація в пам'яті процесора
Стек може бути організований як масив або множина комірок в пам’яті процесора з додатковим зберіганням ще й вказівника на верхівку стека. Заштовхування першого елемента в стек збільшує адресу вказівника, виштовхування елементу зменшує її. Таким чином, адреса вказівника завжди відповідає комірці масиву, в якій зараз знаходиться верхівка стеку.
Багато процесорів ЕОМ мають спеціалізовані регістри, які використовуються як вказівники на верхівку стеку, або використовують деякі з регістрів загального призначення для цієї спеціальної функції в певних режимах адресації пам'яті.
Приклади застосування
- Стек може використовуватися для тимчасового збереження регістрів, якщо на деякий час є необхідність їх використання у інших цілях, а по завершенні певної операції треба продовжити обчислення із того значення, яке було до моменту виклику підпрограми
- Компілятори мов програмування використовують стек для передавання параметрів в процесі виклику підпрограм, процедур та функцій. Спеціалізований стек використовується також для збереження адрес повернення з підпрограм.
- Калькулятори, які використовують зворотній польський запис, використовують стек для збереження даних обчислень.
- Існують «стеко-орієнтовані» мови програмування (Forth, PostScript), які використовують стек як базову структуру даних при виконанні багатьох операцій (арифметичних, логічних, вводу-виводу тощо).
- Стеко-орієнтованими є деякі з віртуальних машин, наприклад віртуальна машина Java.
Стек у мікроконтролерах лінійки AVR
Стек використовується в основному для зберігання тимчасових даних, для зберігання локальних змінних і для зберігання адрес повернення після переривання і виклики підпрограм. Регістром вказівника стека (SP) завжди вказує на вершину стека. Слід зазначити, що стек реалізований у вигляді заповнення з вищих комірок пам'яті до нижніх комірок пам'яті. Це означає, що команда стека PUSH зменшує по абсолютній величині значення, яке зберігається у регістрі SP.
SP вказує на стек у SRAM області. Ця область стеку повинна бути визначеною з допомогою програми до того у SRAM7, перед тим, як підпрограми будуть викликатися або будуть дозволені переривання. Покажчик стека зменшується на одиницю, коли дані в стек «заштовхуються» PUSH інструкцією, і зменшується на два, коли адреса повернення «заштовхується» в стек з викликом підпрограми або переривання. Покажчик стека збільшується на одиницю, коли дані «виштовхуються» з стека інструкцією POP, і збільшується на два, коли дані «виштовхуються» з стеку з поверненням з підпрограми RET інструкцією або виходом з переривання RETI інструкцією.
Покажчик AVR стек реалізований як два 8-розрядних регістрів вводу/виводу. Зверніть увагу, що SRAM в деяких AVR-мікроконтролдерах8 настільки мала, що тільки SPL необхідно. В цьому випадку, E wmjve dbgflre SPH не буде присутнім.
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
|
SP15 |
SP14 |
SP13 |
SP12 |
SP11 |
SP10 |
SP9 |
SP8 |
SPH |
SP7 |
SP6 |
SP5 |
SP4 |
SP3 |
SP2 |
SP1 |
SP0 |
SPL |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
Запис/Читання |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
Запис/Читання |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
По замовчуванню |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
По замовчуванню |
Пам’ять AVR мікроконтролера ATMEGA128
Архітектура AVR мікроконтролерів має два області пам’яті, Пам’ять Даних (Data Memory – англ.; надалі DM) і Пам’ять Програм (Program Memory – англ.; надалі PM). Додатково ATMEGA128 має EEPROM пам’ять
Пам’ять даних
-
32 регістри
$0000 - $001F
64 регістри вводу/виводу
$0020 - $005F
160 розширені регістри вводу/виводу
$0060 - $00FF
Внутрішня SRAM
$0100 - $10FF
Зовнішня SRAM
$1100 -
- $FFFF
Перші 32 комірки DM займає Регістровий файл (32 регістри загального призначення R0 – R31), Регістри вводу/виводу (доступ до них можна здійснювати як інструкціями IN і OUT так і інструкціями непрямої адресації ST/STS/STD LD/LDS/LDD), Розширені регістри вводу/виводу (доступ до них можна тільки інструкціями непрямої адресації ST/STS/STD LD/LDS/LDD), 4096 комірки внутрішньої SRAM, до 64 Кбайт зовнішньої SRAM
Способи адресації DM
Існує п’ять способів адресації DM:
- пряма адресація
- непряма адресація з зсувом
- непряма адресація
- непряма адресація з pre9-декрементацією10
- непряма адресація з post11-інкрементацією12
З регістрового файлу регістри R26 – R31 використовуються як регістри-вказівники.
Пряма адресація адресує весь адресний простір.
Непряма адресація з зсувом адресує 63 комірки адресного простору відносно базової адреси, яка визначається Y- чи Z-регістри.
Коли використовується непряма адресація з автоматичною pre-декрементацією і post-інкрементацією, адресні регістри X, Y і Z декрементуються чи інкрементуються.
Регістри вводу/виводу (які треба знати при виконанні цієї лабораторної роботи)
Адреса |
Номер регістру вводу/виводу13 |
Назва |
Біт 7 |
Біт 6 |
Біт 5 |
Біт 4 |
Біт 3 |
Біт 2 |
Біт 1 |
Біт 0 |
Буде описано пізніше або можна ознайомитися з опису до мікроконтролера ATMEGA128 |
||||||||||
$5F |
$3F |
SREG |
I |
T |
H |
S |
V |
N |
Z |
C |
$5E |
$3E |
SPH |
SP15 |
SP14 |
SP13 |
SP12 |
SP11 |
SP10 |
SP9 |
SP8 |
$5D |
$3D |
SPL |
SP7 |
SP6 |
SP5 |
SP4 |
SP3 |
SP2 |
SP1 |
SP0 |
Буде описано пізніше або можна ознайомитися з опису до мікроконтролера ATMEGA128 |
Директива INCLUDE – «Включити інший файл»
Ця директива вказує AVR Studio-асемблеру почати читати з вказаного файлу. Тоді AVR Studio-асемблер асемблює визначений файл поки не буде зафіксовано кінець файлу (EOF) чи EXIT14-директива. Визначений файл, у свою чергу також може містити директиви INCLUDE
Синтаксис:
.INCLUDE “ім’я файлу”
Наприклад:
.INCLUDE "m128def.inc"
Це корисно!
Для зручності використання AVR Studio при написанні програм для різних мікроконтролерів, у яких регістри вводу/виводу чи розширених регістрів вводу/виводу, а також деяких пере позначень регістрів регістрового файлу (зокрема X, Y і Z), абсолютні адреси яких у різних мікроконтролерах можуть бути різні, але назва і функціональне призначення є однакове – розробниками AVR Studio у папці \Program Files\Atmel\AVRTools\AVRAssembler\Аppnotes\ знаходяться *.inc файли у яких директивами EQU і DEF15 описані визначені всі регістри і відповідні біти регістрів, а також здійснено деякі визначення.
Серед визначених констант є константа RAMEND, значення якої є номер останньої комірки SRAM. Цю константу зручно використовувати для ініціалізації стеку.
Для того, щоб включити у проект визначення регістрів мікроконтролера ATMEGA128 треба в проект включити m128def.inc файл.
Опис деяких мнемонік інструкцій, які використовуються у цій лабораторній роботі і не були описані у описах до попередніх лабораторних робіт
IN – «Загрузити вмістиме регістрів вводу/виводу у регістр загального призначення»
Інструкція загружає вмістиме з регістрів вводу/виводу у регістр загального призначення
Rd ← I/O (A)
Синтаксис |
Операнди |
Лічильник команд |
IN Rd, A |
0 d ≤ 31, 0 ≤ A ≤63 |
PC ← PC + 1 |
Вплив на регістри статусу:
I |
T |
H |
S |
V |
N |
Z |
C |
- |
- |
- |
- |
- |
- |
- |
- |
Наприклад:
in r25, $16
OUT – «Записали вмістиме регістру загального призначення у регістр вводу/виводу»
Інструкція записує вмістиме з регістру загального призначення у регістр вводу/виводу
I/O (A) ← Rr
Синтаксис |
Операнди |
Лічильник команд |
OUT A, Rr |
0 r ≤ 31, 0 ≤ A ≤63 |
PC ← PC + 1 |
Вплив на регістри статусу:
I |
T |
H |
S |
V |
N |
Z |
C |
- |
- |
- |
- |
- |
- |
- |
- |
Наприклад:
out $16, r25
RCALL16 – «Відносний перехід до підпрограми»
Інструкція здійснює відносний перехід до підпрограми у адресному у інтервалі PC – 2K + 1 і PC +2K (слів). Адреса повернення записується у стек (тому вказівник на стек SP має бути визначеним) У асемблері мітка використовується для визначення імені підпрограми, куди треба перейти Для AVR мікроконтролерів з пам’яттю програм не більшою 4К слів (8К байт) ця інструкція може адресувати пам’ять з будь-якого місця програми (будь-якої комірки пам’яті програм). Вказівник на стек при виконанні цієї інструкції здійснює post-декрементацію.
PC ← PC + k + 1
Синтаксис |
Операнди |
Лічильник команд |
Стек |
RCALL k |
-2K ≤ k ≤ 2K |
PC ← PC + k + 1 |
STACK ← PC + 1 SP ← SP - 2 |
Вплив на регістри статусу:
I |
T |
H |
S |
V |
N |
Z |
C |
- |
- |
- |
- |
- |
- |
- |
- |
Наприклад:
rcall routine
routine: push r14
pop r14
ret
RET – «Вихід з підпрограми»
Інструкція здійснює вихід з підпрограми. Адреса повернення вигружається зі стеку. Вказівник на стек при виконанні цієї інструкції здійснює pre-інкрементацію
PC(15:0) ← STACK
Синтаксис |
Операнди |
Лічильник команд |
Стек |
RET |
Нема |
PC(15:0) ← STACK |
SP ← SP + 2 |
Вплив на регістри статусу:
I |
T |
H |
S |
V |
N |
Z |
C |
- |
- |
- |
- |
- |
- |
- |
- |
Наприклад:
rcall routine
routine: push r14
pop r14
ret
PUSH – «“Заштовхати” регістр у стек»
Інструкція записує вмістиме регістра Rr у стек. Вказівник на стек при виконанні цієї інструкції здійснює post-декрементацію на 1 після виконання цієї інструкції.
STACK ← Rr
Синтаксис |
Операнди |
Лічильник команд |
Стек |
PUSH Rr |
0 ≤ r ≤ 31 |
PC ← PC + 1 |
SP ← SP - 1 |
Вплив на регістри статусу:
I |
T |
H |
S |
V |
N |
Z |
C |
- |
- |
- |
- |
- |
- |
- |
- |
Наприклад:
rcall routine
routine: push r14
pop r14
ret
POP – «“Виштовхати” регістр зі стеку»
Інструкція записує у регістр Rd байт із вершини стек. Вказівник на стек при виконанні цієї інструкції здійснює pre-інкрементацію на 1 перед виконання цієї інструкції.
Rd ← STACK
Синтаксис |
Операнди |
Лічильник команд |
Стек |
POP Rd |
0 ≤ d ≤ 31 |
PC ← PC + 1 |
SP ← SP + 1 |
Вплив на регістри статусу:
I |
T |
H |
S |
V |
N |
Z |
C |
- |
- |
- |
- |
- |
- |
- |
- |
Наприклад:
rcall routine
routine: push r14
pop r14
ret
TST – «Тестування на НУЛЬ або МІНУС»
Інструкція записує перевірку чи є вмістиме регістру нуль чи від’ємне число. Ця інструкція здійснює логічне І між регістром і ним самим. При цьому вмістиме регістру не змінюється
Rd ← Rd & Rd
Синтаксис |
Операнди |
Лічильник команд |
TST Rd |
0 ≤ d ≤ 31 |
PC ← PC + 1 |
Вплив на регістри статусу:
I |
T |
H |
S |
V |
N |
Z |
C |
- |
- |
- |
<> |
0 |
<> |
<> |
- |
Біт S:
S = N ^ V. Використовується для тестування знаку результату.
Біт V:0
Очищується.
Біт N:
Встановлюється, якщо MSB встановлений, у іншому випадку – скидається.
Біт Z:
Встановлюється, якщо результатом є число $00, у іншому випадку – скидається.
Наприклад:
tst r0 ; Тестування r0
BRSH – «Перейти, якщо рівне більше чи рівне (беззнакове)»
Інструкція умовного відносного переходу. Вона перевіряє біт (C) і здійснює перехід відносно вмістимого регістру лічильника команд (PC), якщо біт C очищений. Якщо ця інструкція виконується зразу після будь-яких цих інструкцій CP, CPI, SUB чи SUBI – перехід відбудеться, якщо беззнакове ціле число представлене у Rd було більше чи рівне беззнаковому цілому числу представленому у Rr. Ця інструкція здійснює відносний перехід відносно регістра PC у будь-якому напрямку (PC – 63 ≤ PC +64). Параметр k є зміщенням відносно PC і представляється у додатковому коді. (Ця інструкція є еквівалентною інструкції BRBС 0,k)
якщо Rd ≥ Rr (С = 0) тоді PC ← PC + k + 1 інакше PC ← PC + 1
Синтаксис |
Операнди |
Лічильник команд |
BRSH k |
-64 ≤ k ≤ +63 |
PC ← PC + k + 1 PC ← PC + 1, якщо умова не справджується |
Вплив на регістри статусу:
I |
T |
H |
S |
V |
N |
Z |
C |
- |
- |
- |
- |
- |
- |
- |
- |
Наприклад:
loop: ldi r1, r0
cpi r19, $10
brsh loop
nop
BRLO – «Перейти, якщо менше (беззнакове)»
Інструкція умовного відносного переходу. Вона перевіряє біт (C) і здійснює перехід відносно вмістимого регістру лічильника команд (PC), якщо біт C встановлений. Якщо ця інструкція виконується зразу після будь-яких цих інструкцій CP, CPI, SUB чи SUBI – перехід відбудеться, якщо беззнакове ціле число представлене у Rd було менше беззнаковому цілому числу представленому у Rr. Ця інструкція здійснює відносний перехід відносно регістра PC у будь-якому напрямку (PC – 63 ≤ PC +64). Параметр k є зміщенням відносно PC і представляється у додатковому коді. (Ця інструкція є еквівалентною інструкції BRBS 0,k)
якщо Rd < Rr (С = 1) тоді PC ← PC + k + 1 інакше PC ← PC + 1
Синтаксис |
Операнди |
Лічильник команд |
BRLO k |
-64 ≤ k ≤ +63 |
PC ← PC + k + 1 PC ← PC + 1, якщо умова не справджується |
Вплив на регістри статусу:
I |
T |
H |
S |
V |
N |
Z |
C |
- |
- |
- |
- |
- |
- |
- |
- |
Наприклад:
loop: ldi r1, r0
cpi r19, $10
brlo loop
nop
BRMI – «Перейти, якщо від’ємне»
Інструкція умовного відносного переходу. Вона перевіряє біт (N) і здійснює перехід відносно вмістимого регістру лічильника команд (PC), якщо біт N встановлений. Ця інструкція здійснює відносний перехід відносно регістра PC у будь-якому напрямку (PC – 63 ≤ PC +64). Параметр k є зміщенням відносно PC і представляється у додатковому коді. (Ця інструкція є еквівалентною інструкції BRBS 2,k)
якщо N = 1 тоді PC ← PC + k + 1 інакше PC ← PC + 1
Синтаксис |
Операнди |
Лічильник команд |
BRMI k |
-64 ≤ k ≤ +63 |
PC ← PC + k + 1 PC ← PC + 1, якщо умова не справджується |
Вплив на регістри статусу:
I |
T |
H |
S |
V |
N |
Z |
C |
- |
- |
- |
- |
- |
- |
- |
- |
Наприклад:
loop: ldi r1, r0
cpi r19, $10
brmi loop
nop
BRPL – «Перейти, якщо додатнє»
Інструкція умовного відносного переходу. Вона перевіряє біт (N) і здійснює перехід відносно вмістимого регістру лічильника команд (PC), якщо біт N очищений. Ця інструкція здійснює відносний перехід відносно регістра PC у будь-якому напрямку (PC – 63 ≤ PC +64). Параметр k є зміщенням відносно PC і представляється у додатковому коді. (Ця інструкція є еквівалентною інструкції BRBC 2,k)
якщо N = 0 тоді PC ← PC + k + 1 інакше PC ← PC + 1
Синтаксис |
Операнди |
Лічильник команд |
BRPL k |
-64 ≤ k ≤ +63 |
PC ← PC + k + 1 PC ← PC + 1, якщо умова не справджується |
Вплив на регістри статусу:
I |
T |
H |
S |
V |
N |
Z |
C |
- |
- |
- |
- |
- |
- |
- |
- |
Наприклад:
loop: ldi r1, r0
cpi r19, $10
brpl loop
nop
BRGE – «Перейти, якщо рівне більше чи рівне (знакове)»
Інструкція умовного відносного переходу. Вона перевіряє біт (S) і здійснює перехід відносно вмістимого регістру лічильника команд (PC), якщо біт S очищений. Якщо ця інструкція виконується зразу після будь-яких цих інструкцій CP, CPI, SUB чи SUBI – перехід відбудеться, якщо знакове ціле число представлене у Rd було більше чи рівне знаковому цілому числу представленому у Rr. Ця інструкція здійснює відносний перехід відносно регістра PC у будь-якому напрямку (PC – 63 ≤ PC +64). Параметр k є зміщенням відносно PC і представляється у додатковому коді. (Ця інструкція є еквівалентною інструкції BRBС 4,k)
якщо Rd ≥ Rr ((N^V) = 0) тоді PC ← PC + k + 1 інакше PC ← PC + 1
Синтаксис |
Операнди |
Лічильник команд |
BRGE k |
-64 ≤ k ≤ +63 |
PC ← PC + k + 1 PC ← PC + 1, якщо умова не справджується |
Вплив на регістри статусу:
I |
T |
H |
S |
V |
N |
Z |
C |
- |
- |
- |
- |
- |
- |
- |
- |
Наприклад:
loop: ldi r1, r0
cpi r19, $10
brge loop
nop
BRLT – «Перейти, якщо менше (знакове)»
Інструкція умовного відносного переходу. Вона перевіряє біт (S) і здійснює перехід відносно вмістимого регістру лічильника команд (PC), якщо біт S встановлений. Якщо ця інструкція виконується зразу після будь-яких цих інструкцій CP, CPI, SUB чи SUBI – перехід відбудеться, якщо знакове ціле число представлене у Rd було менше знаковому цілому числу представленому у Rr. Ця інструкція здійснює відносний перехід відносно регістра PC у будь-якому напрямку (PC – 63 ≤ PC +64). Параметр k є зміщенням відносно PC і представляється у додатковому коді. (Ця інструкція є еквівалентною інструкції BRBS 4,k)
якщо Rd < Rr ((N^V) = 1) тоді PC ← PC + k + 1 інакше PC ← PC + 1
Синтаксис |
Операнди |
Лічильник команд |
BRLT k |
-64 ≤ k ≤ +63 |
PC ← PC + k + 1 PC ← PC + 1, якщо умова не справджується |
Вплив на регістри статусу:
I |
T |
H |
S |
V |
N |
Z |
C |
- |
- |
- |
- |
- |
- |
- |
- |
Наприклад:
loop: ldi r1, r0
cpi r19, $10
brlt loop
nop
CPI – «Порівняння регістра зі константою»
Ця інструкція здійснює порівняння двох регістра Rd і константи. Регістр при цьому не змінюється. Всі інструкції переходу з умовою можуть бути використані після цієї інструкції
Rd - K
Синтаксис |
Операнди |
Лічильник команд |
CPI Rd,K |
16 ≤ d ≤ 31, 0 ≤ K ≤ 255 |
PC ← PC + 1 |
Вплив на регістри статусу:
I |
T |
H |
S |
V |
N |
Z |
C |
- |
- |
<> |
<> |
<> |
<> |
<> |
<> |
Наприклад:
cpi r16, $17
CPC – «Порівняння регістрів із врахуванням біту переносу»
Ця інструкція здійснює порівняння двох регістрів Rd і Rr і також враховується попередній перенос старшого розряду. Ні один регістр при цьому не змінюється. Всі інструкції переходу з умовою можуть бути використані після цієї інструкції
Rd – Rr - C
Синтаксис |
Операнди |
Лічильник команд |
CPC Rd,Rr |
0 ≤ d ≤ 31, 0 ≤ r ≤ 31 |
PC ← PC + 1 |
Вплив на регістри статусу:
I |
T |
H |
S |
V |
N |
Z |
C |
- |
- |
<> |
<> |
<> |
<> |
<> |
<> |
Наприклад:
cpc r4, r19