- •1. Система команд мікроконтролерів сімейства mcs51.
- •1.1. Загальна характеристика команд.
- •1.2. Команди пересилки даних мікроконтролера mcs51.
- •1.3. Команди логічних операцій мікроконтролера mcs51.
- •1.4. Команди операцій над бітовими змінними мікроконтролера mcs51.
- •1.5. Команди передачі керування мікроконтролера mcs51.
1. Система команд мікроконтролерів сімейства mcs51.
1.1. Загальна характеристика команд.
Мікро-ЕОМ даного сімейства є типовими мікропроцесорними пристроями з архітектурою SISC - з стандартним набором команд. Їх система команд включає 111 основних команд довжиною один, два або три байти, причому більшість з них (94%) – одно- або двобайтні. Всі команди виконуються за один або два машинні цикли (відповідно 1 або 2 мкс при тактовій частоті 12 Мгц) за винятком команд множення та ділення, які виконуються за чотири машинні цикли (4 мкс).
Мікро-ЕОМ виконують 13 типів команд, які приведені в табл. 1. З неї випливає, що перший байт команди завжди містить код операції (КОП), а другий та третій (якщо вони є в команді) – адреси операндів або їх безпосередні значення.
Табл.1. Типи команд.
Тип команди |
Перший байт D7...D0 |
Другий байт D7...D0 |
Третій байт D7...D0 |
тип 1 |
КОП |
|
|
тип 2 |
коп |
#d |
|
тип 3 |
коп |
ad |
|
тип 4 |
коп |
bit |
|
тип 5 |
коп |
rel |
|
тип 6 |
коп |
а7...a0 |
|
тип 7 |
коп |
ad |
#d |
тип 8 |
коп |
ad |
rel |
тип 9 |
коп |
ads |
add |
тип 10 |
коп |
#d |
rel |
тип 11 |
коп |
bit |
rel |
тип 12 |
коп |
ad16h |
ad16l |
тип 13 |
коп |
#d16h |
#d16l |
Операнди бувають чотирьох типів: 1-бітні, 4-бітні, 8-бітні, 16-бітні. Мікроконтролер має 128 програмно-керованих прапорців користувача. Існує також можливість адресації окремих бітів блоку регістрів спеціальних функцій та портів. Для адресації бітів використовується прямий 8-ми бітний адрес (bit). Непряма адресація бітів неможлива. 4-бітні операнди використовуються тільки при операціях обміну SWAP та XCHD.
8-бітним операндом може бути комірка пам’яті програм (ПП) або пам’яті даних (резидентної (РПД) або зовнішньої (ЗПД)), константа (безпосередній операнд), регістри спеціальних функцій, а також порти вводу/виводу. Порти та регістри спеціальних функцій адресуються тільки прямим способом. Байти пам’яті можуть адресуватися також і непрямим способом через адресні регістри R0, R1, DPTR та PC.
Двобайтні операнди (16-бітні) – це константи та прямі адреси, для представлення яких використовуються другий та третій байти команди.
Всі команди сімейства MCS51 по функціональним ознакам можна розділити на 5 груп:
-
команди пересилки даних;
-
команди арифметичних операцій;
-
команди логічних операцій;
-
команди операцій над бітами;
-
команди передачі керування.
Набір команд MCS51підтримує такі режими адресації:
-
Пряма адресація (Direct Addressing). Операнд визначається 8-бітним адресом в команді. Ця адресація використовується тільки для ВПД та регістрів SFR.
-
Непряма адресація (Indirect Addressing). В цьому випадку команда адресує регістр, що містить адрес операнда. Дана адресація може використовуватись при звертанні як до внутрішнього, так і до зовнішнього ОЗП. Для адресації 8-бітних адресів можуть використовуватись регістри R0 та R1 вибраного банку регістрів та вказівник стеку SP. Для 16-бітної адресації використовується тільки регістр “вказівник даних” DATA.
-
Регістрова адресація (Register Instruction). Дана адресація використовується для доступу до регістрів R0, …,R7 вибраного банку регістрів. Команди з регістровою адресацією містять в байті КОП 3-бітне поле, що визначає номер регістру. Вибір одного з чотирьох регістрових банків здійснюється програмуванням бітів вибору банку регістрів (RS0,RS1) в регістрі PSW.
-
Безпосередня адресація (Immediate constants). Операнд знаходиться безпосередньо в полі команди за КОП і може займати один або два байти (data8, data16).
-
Індексна адресація (Indexed Addressing). Індексна адресація використовується при звертанні до ПП і тільки при читанні. В цьому режимі здійснюється перегляд таблиць в ПП. 16-бітний регістр (DPTR або PC) вказує базовий адрес певної таблиці, а аккумулятор вказує на точку входу в неї. Адрес елементу таблиці знаходиться додаванням бази з індексом (вмістимим аккумулятора). Інший тип індексної адресації використовується в командах “переходу по вибору” (Case Jump). При цьому адрес переходу обчислюється як сума вказівника бази та аккумулятора.
-
Неявна адресація (Register-Specific Instructions). Деякі команди використовують індивідуальні регістри (наприклад, операції з аккумулятором, DPTR), при цьому дані регістри не мають адресу, що вказує на них (він закладений в КОП).
При описі команд використовуватимуться наступні позначення:
-
Rn (n=0, 1, …,7) – регістр загального призначення для вибраного банку регістрів;
-
@Ri (i=0, 1) – регістр загального призначення для вибраного банку регістрів, що використовується як регістр непрямого адресу;
-
ad – адрес байту при прямій адресації;
-
ads – адрес байту-джерела при прямій адресації;
-
add – адрес байту-приймача при прямій адресації;
-
ad11 – 11-розрядний абсолютний адрес переходу;
-
ad16 – 16-розрядний абсолютний адрес переходу;
-
rel – відносний адрес переходу;
-
#d – безпосередній операнд (дані);
-
#d16 – безпосередній операнд (2 байти);
-
bit – адрес біта, що прямо адресується;
-
/bit – інверсія біта, що прямо адресується;
-
A – аккумулятор;
-
PC – лічильник команд;
-
DPTR – регістр вказівник даних;
-
() – вмістиме комірки пам’яті або регістру.