Мікроконтролери сімейства mcs 51 мають типову архітектуру. Мікроконтролери MCS-51. Структурна схема, АЛУ, пам'ять даних. Режим читання порту

22.04.2021 Цікаве

Фірма Intel є родоначальницею архітектури сімейства MCS-51, яке отримало свою назву від першого представника цього сімейства - мікроконтролера 8051, випущеного в 1980 на базі технології n-МОП. Вдалий набір периферійних пристроїв, можливість гнучкого вибору зовнішньої чи внутрішньої програмної пам'яті та прийнятна ціна забезпечили цьому мікроконтролеру успіх на ринку. З точки зору технології мікроконтролер 8051 був для свого часу дуже складним виробом - у кристалі було використано 128 тис. транзисторів, що в 4 рази перевищувало кількість транзисторів у 16-розрядному мікропроцесорі 8086.

Основними елементами базової архітектури сімейства (архітектури мікроконтролера 8051) є:

8-розрядне АЛУ;

4 банки регістрів, по 8 у кожному;

Внутрішня (резидентна) пам'ять програм 4 Кбайт, що має тип ROM або EPROM (8751);

Внутрішня (резидентна) пам'ять даних 128 байт;

21 регістр спеціальних функцій;

Бульовий процесор;

Два 16-розрядні таймери/лічильники;

Контролер послідовного порту(UART);

Контролер обробки переривань із двома рівнями пріоритетів;

Чотири 8-розрядні порти вводу/виводу, два з яких використовуються як шина адреси/даних для доступу до зовнішньої пам'яті програм і даних;

Вбудований тактовий генератор.

Потім був випущений мікроконтролер 8052, який відрізнявся збільшеним обсягом резидентної пам'яті програм і даних, введеним третім таймером і розширеним контролером переривань.

p align="justify"> Наступним принциповим кроком у розвитку MCS-51 став переклад технології виготовлення на КМОП (модифікація 8xC51). Це дозволило реалізувати режими Idl (холостий хід) та Power Down (знижене споживання), що забезпечують різке зниження енергоспоживання кристала та відкрили дорогу до застосування мікроконтролера в енергозалежних додатках, наприклад, в автономних приладах з батарейним живленням.

І останнім важливим етапом розвитку МК 8051 фірмою Intel став випуск мікроконтролерів 8xC51FA/FB/FC та 8xC51RA/RB/RC, які для стислості часто позначаються як 8xC51Fx та 8xC51Rx. Головною відмінністю цієї групи кристалів є наявність у них спеціалізованого таймера/лічильника (РСА). Крім того, мікроконтролери 8xC51Rx додатково містять сторожовий таймер (WDT). Розглянемо архітектуру та функціональні можливості PCA докладніше.

До складу РСА входять:

16-розрядний таймер/лічильник;

П'ять 16-розрядних модуля вибірки та порівняння, кожен з яких пов'язаний зі своєю лінією порту введення/виведення мікроконтролера.

Таймер/лічильник обслуговує всі п'ять модулів вибірки та порівняння, які можуть бути запрограмовані на виконання однієї з таких функцій:

16-бітова вибірка значення таймера за позитивним фронтом зовнішнього сигналу;

16-бітова вибірка значення таймера за негативним фронтом зовнішнього сигналу;

16-бітова вибірка значення таймера за будь-яким фронтом зовнішнього сигналу;

16-бітовий програмований таймер;

16-бітове пристрій швидкісного виведення;

8-бітовий ШІМ.

Виконання всіх перерахованих функцій відбувається у РСА на апаратному рівні і не завантажує центральний процесор. Зазначене дозволяє підвищити загальну пропускну здатність, підвищити точність вимірювань та обробки сигналів та знизити час реакції мікроконтролера на зовнішні події, що особливо важливо для систем реального часу. Реалізований у 8xC51Fx (8xC51Rx) РСА виявився настільки

Позначення

Макс. частота (МГц)

ROM/EPROM (байт)

лічильники

Вдалим, що архітектура цих мікроконтролерів стала промисловим стандартом, а сам РСА багаторазово відтворювався в різних модифікаціях МК 8051.

Деякі характеристики ряду мікроконтролерів MCS-51, що випускаються фірмою Intel, наведено у табл.1.1.

Спочатку найбільш "вузькими" місцями архітектури MCS-51 були 8-розрядне АЛУ на базі акумулятора і відносно повільне виконання команд (для виконання найшвидших команд потрібно 12 пе-

Таблиця 1.1

введення/виводу

АЦП, входи x розряди

периферія,

особливості

U піт. (В)

Низьковольтний варіант

4 рівні IRQ, clock out

4 рівні IRQ, clock out

Низьковольтний варіант 8xC51Fx

4 рівні IRQ, clock out

4 рівні IRQ, clock out

4 рівні IRQ, clock out

ріодів тактової частоти (частоти синхронізації МК). Це обмежувало застосування мікроконтролерів сімейства у додатках, що вимагають підвищеної швидкодії та складних обчислень (16- та 32-бітових). Нагальним стало питання принципової модернізації архітектури MCS-51. Проблема модернізації ускладнювалася тим, що до початку 90-х років вже було створено масу напрацювань у галузі програмного та апаратного забезпеченнясімейства MCS-51, у зв'язку з чим одним із основних завдань проектування нової архітектури була реалізація апаратної та програмної сумісності з розробками на базі MCS-51.

Для вирішення зазначеного завдання було створено спільну групу з фахівців компаній Intel і Philips, але пізніше шляхи цих двох фірм розійшлися. У результаті в 1995 році з'явилося два істотно відмінні сімейства: MCS-251/151 у Intel і MCS-51XA у Philips (див. підрозділ 1.2).

Основні характеристики архітектури MCS-251:

24-розрядний лінійний адресний простір, що забезпечує адресацію до 16 Мбайт пам'яті;

Реєстрова архітектура, що допускає звернення до регістрів як до байтів, слів та подвійних слів;

Сторінковий режим адресації для прискорення вибірки команд із зовнішньої програмної пам'яті;

Черга інструкцій;

Розширений набір команд, що включає 16-бітові арифметичні та логічні операції;

Розширений адресний простір стеку (до 64 Кбайт);

Виконання самої швидкої командиза 2 такти.

Система команд MCS-251 включає два набори інструкцій – перший набір є копією системи команд MCS-51, а другий складається з розширених інструкцій, що реалізують переваги архітектури MCS-251. Перед використанням мікроконтролера його потрібно налаштувати, тобто. за допомогою програматора "пропалити" конфігураційні біти, що визначають, який із наборів інструкцій стане активним після включення живлення. Якщо встановити перший набір інструкцій, то в цьому випадку МК сімейства MCS-251 буде сумісний з MCS-51 лише на рівні двійкового коду. Такий режим називається Binary Mode. Якщо ж спочатку встановити набір розширених інструкцій (режим Source Mode), тоді програми, написані для MCS-51, вимагатимуть перекомпіляції на крос-засобах для MCS-251. Режим Source Mode дозволяє з максимальною ефективністю використовувати архітектуру MCS-251 та досягти найбільшої швидкодії.

Для користувачів, орієнтованих застосування мікроконтролерів MCS-251 як механічної заміни MCS-51, фірма Intel випускає мікроконтролери MCS-151, вже запрограмовані у стан Binary Mode.

Деякі характеристики ряду мікроконтролерів MCS-251/151 наведено у табл.1.1.

Нині Intel, спрямована ринку Pentium-процесорів, згортає виробництво кристалів MCS-51. В цілому для конкретного розробника це може залишитися і непоміченим, якщо він не використовує мікроконтролери 8xC51GB і 80C152Jx, які не мають своїх точних аналогів серед виробів інших фірм. Що ж до решти мікроконтролерів сімейства MCS-51, то всі вони багаторазово розтиражовані іншими компаніями.

Основою мікроконтролера (див. рис. 1) є 8-ми бітовий Арифметично-Логічний пристрій (АЛУ). Пам'ять МК має Гарвардську архітектуру, тобто. логічно розділена: на пам'ять програм – ПП (внутрішню або зовнішню), адресовану 16-ти бітовим лічильником команд (СК) та пам'ять даних – внутрішню (Резидентна пам'ять даних – РПД) 128 (або 256) байт, а також зовнішню (Зовнішня пам'ять даних) - ВПД) до 64 Кбайт. Фізично пам'ять програм реалізована на ПЗП (доступна лише з читання), а пам'ять даних – на ОЗУ (можливий запис та читання даних).

Прийом та видача зовнішніх сигналівздійснюється через 4 восьмибітові порти Р0..Р3. При зверненні до зовнішньої пам'ятіпрограм (ЗПС) або пам'яті даних (ЗПД) порти Р0 і Р2 використовуються як мультиплексована зовнішня шина Адреса/Дані. Лінії порту Р3 можуть виконувати альтернативні функції (див. табл. 1).

16-бітовий регістр DPTR формує адресу ВПД або базову адресу Пам'яті програм у команді перетворення Акумулятора. Регістр DPTR може також використовуватися як два незалежні 8-мі бітові регістри (DPL і DPH) для зберігання операндів.

8-ми бітовий внутрішній регістр команд (РК) приймає код виконуваної команди; цей код дешифрується схемою управління, яка генерує сигнали, що управляють (див. рис. 1).

Звернення до регістрів спеціальних функцій - РРФ (SFR - на рис. 1 вони обведені пунктирною лінією) можливо тільки з використанням прямої байтової адресації в діапазоні адрес від 128 (80h) і більше.


Резидентна пам'ять даних (РПД) у перших моделях мікроконтролерів сімейства MCS-51 мала обсяг 128 байт. Молодші 32 байти РПД є одночасно і регістрами загального призначення- РОН (4 банки по 8 РОНів). Програма може звернутися до одного з 8-ми РОНів активного банку. Вибір активного банку РОНів здійснюється програмуванням двох біт у регістрі стану процесора – PSW.


Таблиця 1 - Призначення висновків MCS-51

№ вив. Позначення Призначення
1..8 Р1 8-ми бітовий квазідвунаправлений порт вводу/виводу
9 RST

Сигнал скидання (активний рівень – високий);

Сигнал RST обнулює: PC та більшість Реєстрів Спеціальних Функцій (SFR), забороняючи всі переривання та роботу таймерів; вибирає Банк РОНів 0; записує в порти Р0_Р3 "всі одиниці", готуючи їх на введення; записує код 07H в покажчик стека (SP);

10..17

8-ми бітовий квазідвунаправлений порт вводу/виводу; після запису у відповідний розряд "1" – виконує додаткові (альтернативні) функції:

Вхід послідовного порту – RxD;

Вихід послідовного порту – TxD;

Вхід зовнішнього переривання 0 - ~ INT0;

Вхід зовнішнього переривання 1 - INT1;

Вхід таймера/лічильника 0 – Т0;

Вхід таймера/лічильника 1 – Т1;

Вихід строб. сигналу під час запису у ВПД – ~ WR;

Вихід строб. сигналу під час читання з ВПД – ~ RD;

18, 19 X1, X2 Висновки для підключення кварцового резонатора або LC-контуру;
20 GND Загальний висновок;
21..28 P2 8-ми бітовий квазідвунаправлений порт введення/виводу; або вихід адреси A в режимі роботи із зовнішньою пам'яттю (ЗПС або ВПД);
29 PME Строб читання Зовнішньої Пам'яті Програм, видається тільки при зверненні до зовнішнього ПЗУ;
30 ALE Строб адреси Зовнішньої пам'яті (ЗПС або ВПД);
31 ЕА Відключення РПП, рівень "0" на цьому вході перекладає МК на вибірку команд тільки з ВПП ;
39..32 Р0 8-ми бітовий двонаправлений порт введення/виведення; при зверненні до Зовнішньої Пам'яті видає адреси A (які записуються у зовнішній регістр за сигналом ALE), а потім обмінюється байтом синхронно із сигналом ~PME (для команд) або ~WR,~RD (для даних у ВПД), при зверненні до Зовнішньої Пам'яті в регістр порту Р0 записуються всі одиниці, руйнуючи інформацію, що зберігається там;
40 Ucc Виведення напруги живлення

Переключення банків РОНів спрощує виконання підпрограм та обробку переривань, т.к. не потрібно пересилати в стек вміст РОНів основної програми при виклику підпрограми (достатньо у підпрограмі перейти до іншого активного банку РОНів).

Звернення до РПД можливе з використанням непрямої або прямої байтової адресації (пряма байтова адресація дозволяє звернутися тільки до перших 128 байт РПД).

Розширена область РПД (у мікроконтролерів сімейства MCS-52 та наступних сімейств) з адреси 128 (80h) до 255 (FFh) може адресуватися лише з використанням непрямого методу адресації.

Таблиця 2 – Блок Реєстрів Спеціальних Функцій (s f r)

Менімо-код Найменування
0E0h * ACC Акумулятор
0F0h * B Регістр розширювач акумулятора
0D0h * PSW Слово стану процесора
0B0h * P3 Порт 3
0A0h * P2 Порт 2
90h * P1 Порт 1
80h * P0 Порт 0
0B8h * IP Реєстр пріоритетів переривань
0A8h * IE Реєстр маски переривань
99h SBUF Буфер послідовного приймача-передавача
98h * SCON Регістр керування/статусу послідовного порту
89h TMOD Реєстр режимів таймерів/лічильників
88h * TCON Регістр управління/статусу таймерів/лічильників
8Dh TH1 Таймер 1 (старший байт)
8Bh TL1 Таймер 1 (молодший байт)
8Ch TH0 Таймер 0 (старший байт)
8Ah TL0 Таймер 0 (молодший байт)
83h DPH Реєстр-покажчик даних (DPTR) (старший байт)
82h DPL Реєстр-покажчик даних (DPTR) (молодший байт)
81h SP Регістр-покажчик стека
87h PCON Реєстр управління потужністю споживання

2. ПРОГРАМНА МОДЕЛЬ MCS–51


ТИПИ КОМАНД MCS-51

Майже половина команд виконується за один машинний цикл (МЦ). При частоті кварцового генератора 12 МГц час виконання такої команди – 1 мкс. Інші команди виконуються за 2 машинних цикли, тобто. за 2мкс. Тільки команди множення (MUL) та поділу (DIV) виконуються за 4 машинні цикли.

За час одного машинного циклу відбувається два звернення до Пам'яті Програм (внутрішньої чи зовнішньої) для зчитування двох байтів команди або одне звернення до Зовнішньої Пам'яті Даних (ВПД).

3. МЕТОДИ (СПОСОБИ) АДРЕСАЦІЇ MCS–51

1. РЕЄСТРУВА АДРЕСАЦІЯ - 8-ми бітовий операнд знаходиться в РОНЕ обраного (активного) банку регістрів;

2 НЕПОСЕРЕДНЯ АДРЕСАЦІЯ (позначається знаком - #) - операнд знаходиться в другому (а для 16-ти бітового операнда і в третьому) байт команди;

3 НЕДІЛЬНА АДРЕСАЦІЯ (позначається знаком – @) – операнд знаходиться в Пам'яті Даних (РПД або ВПД), а адреса осередку пам'яті міститься в одному з РОНів непрямої адресації (R0 або R1); в командах PUSH і POP адреса міститься в покажчику стека SP; регістр DPTR може містити адресу ВПД обсягом до 64К;

4 ПРЯМА БАЙТОВА АДРЕСАЦІЯ – (dir) – використовується для звернення до осередків РПД (адреси 00h…7Fh) та до регістрів спеціальних функцій SFR (адреси 80h…0FFh);

5 ПРЯМА БИТОВА АДРЕСАЦІЯ - (bit) - використовується для звернення до 128 біт, що окремо адресуються, розташованим в осередках РПД за адресами 20H ... 2FH і до окремо адресованим бітів регістрів спеціальних функцій (див. табл. 3 і програмну модель);

6 НЕДІЛЬНА ІНДЕКСНА АДРЕСАЦІЯ (позначається знаком – @)– спрощує перегляд таблиць у Пам'яті Програм, адреса ПП визначається за сумою базового регістру (PC або DPTR) та індексного регістру (Акумулятора);

7 НЕЯВНА (ВБУДОВА) АДРЕСАЦІЯ – код команди містить неявну (за замовчуванням) вказівку на один з операндів (найчастіше на Акумулятор).

4. ФОРМАТ СЛОВА СТАНУ ПРОЦЕСОРУ (PSW)

C - прапор перенесення (CARY) або позики, виконує також функції "бульового акумулятора" в командах, що оперують з бітами;

AC - прапор допоміжного (додаткового) перенесення - встановлюється в "1", якщо в команді додавання (ADD, ADDC) було перенесення з молодшого зошита в старшу (тобто з 3-го біта в 4-й біт);

F0 – прапор користувача – встановлюється, скидається та перевіряється програмно;

RS1 RS0 Банк Адреса (dir)
0 0 0 00h..07h
0 1 1 08h..0Fh
1 0 2 10h..17h
1 1 3 18h..1Fh

RS1,RS0 - Вибір банку регістрів:

OV – Прапор арифметичного переповнення; його значення визначається операцією "Виключає АБО" сигналів вхідного та вихідного переносів старшого розряду АЛУ; одиничне значення цього прапора вказує на те, що результат арифметичної операції у додатковому коді вийшов за допустимі межі: –128…+127; під час виконання операції розподілу прапор OV скидається, а разі розподілу на нуль – встановлюється; при множенні прапор OV встановлюється якщо результат більше 255 (0FFH);

Розряд PSW - Резервний, містить тригер, доступний за записом або читанням;

P – прапор паритету – є доповненням кількості одиничних бітів в акумуляторі до парного; формується комбінаційною схемою (програмно доступний тільки за читанням).

У мікроконтролерах MCS-51 відсутній прапор "Z". Але в командах умовного переходу (JZ, JNZ) перевіряється комбінаційною схемою поточний (нульовий або ненульовий) вміст акумулятора.

Усі команди пересилок та обміну операнда можуть здійснюватися через Акумулятор (див. рис. 3). Причому пересилання з/в Зовнішньої Пам'яті (Пам'яті Програм або Пам'яті Даних) можуть здійснюватись лише через Акумулятор.

Більшість пересилок можуть здійснюватися також через байт (dir). Існують навіть пересилання dir – dir (див. рис. 3).

Відсутні пересилки з РВН в РОН можуть бути реалізовані як пересилки з РВН в прямоадресований байт dir (з урахуванням того, що РОН розташовані в початковій області Резидентної Пам'яті Даних, комірки якої можуть адресуватися як dir).

Команди обміну XCH дозволяють пересилати байти без руйнування обох операндів.

Арифметичні команди виконуються лише в акумуляторі. Тому перший операнд необхідно попередньо помістити в акумулятор і потім скласти або відняти другий операнд. Результат міститься в акумуляторі.


Команда віднімання SUBB виконується тільки з позикою (тобто від результату віднімається і прапор Сary). Тому для виконання команди віднімання без позики необхідно попередньо виконати команду очищення прапора С (CLRC).

Команда множення однобайтових операндів - MULAB - розміщує двобайтовий (16 біт) результат: молодший байт - в Акумулятор, старший байт - в регістр.

Результат виконання команди поділу однобайтових операндів – DIVAB – міститься: приватне – а Акумулятор, залишок – у регістр.

Арифметична команда INC додає до вибраного операнда одиницю. Арифметична команда DEC віднімає з обраного операнда одиницю. Команда десяткової корекції Акумулятора (DAA) допомагає складати двійково-десяткові числа (BCD-числа) без переведення їх у шістнадцятковий формат (hex-формат). Вихідні операнди мають бути обов'язково в BCD-форматі, тобто. у кожному зошиті одного байта знаходяться лише числа від 0 до 9 (там не можуть бути шістнадцяткові числа: A, B, C, D, E, F). Тому в одному байті можуть бути числа від 00 до 99 для упакованих BCD-чисел або числа від 0 до 9 для невпакованих BCD-чисел.

Команда DA A – десяткова корекція виконує дії над вмістом Акумулятора після складання BCD-чисел у процесорі (числа складалися за законами шістнадцяткової арифметики) наступним чином (див. приклад):

· якщо вміст молодшого зошита акумулятора більше 9 або встановлений прапор допоміжного перенесення (AC = 1), то до вмісту акумулятора додається 6 (тобто відсутні шість цифр в hex-форматі);

· якщо після цього вміст старшого зошита акумулятора більше 9 або встановлено прапор C, то число 6 додається до старшого зошита акумулятора.

Команду десяткової корекції DA A не застосовують після команди інкременту (INC), тому що команда інкременту не впливає (не змінює) на прапори С та АС.

Логічні команди:

Логічне "І" – ANL,

Логічне "АБО" - ORL,

Логічна команда "ВИКЛЮЧНЕ АБО" - XRL- виконуються в Акумуляторі (як і арифметичні), але є можливість виконати логічні команди також і в байті, що прямо адресується (dir). При цьому другий операнд може бути:

В акумуляторі або

Безпосередній операнд у команді.

Команди обертання (RR A, RL A) і команди обертання через прапор CARY (RRC A, RLC A) циклічно зрушують вміст Акумулятора на 1 біт. Посилання бітових операндів здійснюються тільки через прапор С.

Архітектура сімейства MCS-51 значною мірою визначається її призначенням - побудова компактнихі дешевих цифрових пристроїв. Усі функції мікроЕОМ реалізуються з допомогою єдиної мікросхеми. До складу сімейства MCS-51 входить цілий рядмікросхем від найпростіших мікроконтролерів до досить складних. Мікроконтролери сімейства MCS-51 дозволяють виконувати завдання управління різними пристроями, так і реалізовувати окремі вузли аналогової схеми. Усі мікросхеми цього сімейства працюють з однією і тією ж системою команд, більшість з них виконується в однакових корпусах з цоколівкою, що збігається(Нумерація ніжок для корпусу). Це дозволяє використовувати для розробленого пристрою мікросхеми різних фірм- Виробників (таких як Intel, Dallas, Atmel, Philips і т.д.) без переробки принципової схемипристрої та програми.

Малюнок 1. Структурна схема контролера К1830ВЕ751

Структурна схема контролера представлена ​​малюнку 1. і з наступних основних функціональних вузлів: блоку управління, арифметико-логического устрою, блоку таймерів/лічильників, блоку послідовного інтерфейсу і переривань, програмного лічильника, пам'яті даних, і пам'яті програм. Двосторонній обмін здійснюється за допомогою внутрішньої 8-розрядної магістралі даних. Розглянемо докладніше призначення кожного блоку. За такою схемою збудовано практично всі представники сімейства MCS-51. Різні мікросхеми цього сімейства відрізняються лише регістрами спеціального призначення (зокрема і кількістю портів). Система команд всіх контролерівсімейства MCS-51 містить 111 базових командз форматом 1, 2 або 3 байти і не змінюється під час переходу від однієї мікросхеми до іншої. Це забезпечує чудову переносимість програм із однієї мікросхеми на іншу.

Блок управління та синхронізації

Блок управління та синхронізації (Timing and Control) призначений для вироблення синхронізуючих та керуючих сигналів, що забезпечують координацію спільної роботи блоків ОЕОМ у всіх допустимих режимах її роботи. До складу блоку управління входять:

  • пристрій формування часових інтервалів,
  • логіка введення-виведення,
  • регістр команд,
  • регістр управління споживанням електроенергії,
  • дешифратор команд, логіка управління ЕОМ.

Пристрій формування часових інтервалівпризначено для формування та видачі внутрішніх синхросигналів фаз, тактів та циклів. Кількість машинних циклів визначає тривалість виконання команд. Практично всі команди ОЕОМ виконуються за один або два машинні цикли, крім команд множення та поділу, тривалість виконання яких становить чотири машинні цикли. Позначимо частоту генератора, що задає через F р. Тоді тривалість машинного циклу дорівнює 12/F г або становить 12 періодів сигналу генератора, що задає. Логіка введення - виводу призначена для прийому та видачі сигналів, що забезпечують обмін інформації з зовнішніми пристроямичерез порти введення виведення Р0-Р3.

Реєстр командпризначений для запису та зберігання 8-ми розрядного коду операції команди, що виконується. Код операції, за допомогою команд та логіки управління ЕОМ, перетворюється на мікропрограму виконання команди.

Реєстр керування споживанням (PCON) дозволяє зупиняти роботу мікроконтролера для зменшення споживання електроенергії та зменшення рівня перешкод від мікроконтролера. Ще більшого зменшення споживання електроенергії і зменшення перешкод можна досягти, зупинивши генератор мікроконтролера, що задає. Цього можна досягти за допомогою перемикання біт регістру керування споживанням PCON. Для варіанта виготовлення за технологією n-МОП (серія 1816 або іноземних мікросхем, у назві яких у середині відсутня буква "c") регістр управління споживанням PCON містить лише один біт, що управляє швидкістю передачі послідовного порту SMOD, а біти управління споживанням електроенергією відсутні.

Разом із статтею "Архітектура мікроконтролерів MCS-51" читають:


http://сайт/MCS51/tablms.php


http://сайт/MCS51/SysInstr.php


http://сайт/MCS51/port.php

ПЛАН ЛЕКЦІЇ

1. Введення

2. Арифметичні та логічні інструкції

3. Команди передачі даних

4. Булеві операції

5. Інструкції переходів

1. Введення

Система команд MCS-51підтримує єдиний набір інструкцій, призначений до виконання 8-бітових алгоритмів управління виконавчими пристроями. Існує можливість використання швидких методівадресації до внутрішнього ОЗП, здійснення бітових операцій над невеликими структурами даних. Є розгорнута система адресації однобітових змінних як самостійного типу даних, що дозволяє використовувати окремі біти в логічних і керуючих команд булевої алгебри.

Режими адресації : набір команд MCS-51підтримує такі режими адресації. Пряма адресація: операнд визначається 8-бітовою адресою в інструкції Пряма адресація використовується лише для молодшої половини внутрішньої пам'ятіданих та регістрів SFR. Непряма адресація: інструкція адресує регістр, що містить адресу операнда Цей видадресації використовується для зовнішнього та внутрішнього ОЗП. Для вказівки 8-бітових адрес можуть використовуватися регістри R0і R1обраного реєстрового банку або покажчик стека SP. Для 16-бітової адресації використовується лише регістр покажчика даних DPTR.

Реєстрові інструкції : регістри R0-R7поточного регістрового банку можуть бути адресовані через конкретні інструкції, що містять 3-бітове поле, що вказує на номер регістру в самій інструкції. У цьому випадку відповідного поля адреси в команді немає. Операції з використанням спеціальних регістрів: деякі інструкції використовують індивідуальні регістри (наприклад, операції з акумулятором, DPTR, і т.д.). У разі адресу операнда взагалі вказується у команді. Він визначається кодом операції.

Безпосередні константи : константа може бути прямо у команді за кодом операції.

Індексна адресація : індексна адресація може використовуватися лише для доступу до програмної пам'яті та лише в режимі читання. У цьому режимі здійснюється перегляд таблиць у пам'яті програм. 16-бітовий регістр ( DPTRабо програмний лічильник) вказує базову адресу необхідної таблиці, а акумулятор вказує на точку входу до неї.

Набір командмає 42 мнемонічні позначення команд для конкретизації 33 функцій цієї системи. Синтаксис більшості команд асемблерної мови складається з мнемонічного позначення функції, за яким йдуть операнди, що вказують методи адресації та типи даних. Різні типиданих або режими адресації визначаються встановленими операндами, а чи не змінами мнемонических позначень.

Систему команд умовно можна розбити п'ять груп: арифметичні команди; логічні команди; команди передачі; команди бітового процесора; команди розгалуження та передачі управління. Позначення та символи, що використовуються в системі команд, наведені далі.

Таблиця. Позначення та символи, що використовуються в системі команд

Позначення, символ

Призначення

Акумулятор

Реєстри поточного обраного банку регістрів

Номер завантажуваного регістру, вказаного у команді

direct

Прямо адресована 8-бітова внутрішня адреса осередку даних, яка може бути осередком внутрішнього ОЗП даних (0-127) або регістром спеціальних функцій SFR (128-255)

Непрямо адресований 8-бітовий осередок внутрішнього ОЗУ даних

8-бітове безпосереднєце, що входить у код операції (КОП)

dataH

Старші біти (15–8) безпосередніх 16-бітових даних

dataL

Молодші біти (7–0) безпосередніх 16-бітових даних

11-бітова адреса призначення

addrL

Молодші біти адреси призначення

8-бітовий байт зміщення зі знаком

Біт із прямою адресацією, адреса якого містить КОП, що знаходиться у внутрішньому ОЗП даних або регістрі спеціальних функцій SFR

a15, a14...a0

Біти адреси призначення

Вміст елемента Х

Вміст за адресою, що зберігається в елементі Х

Розряд М елемента Х


+

*
AND
OR
XOR
/X

Операції:
додавання
віднімання
множення
поділу
логічного множення (операція І)
логічного складання (операція АБО)
додавання за модулем 2 (що виключає АБО)
інверсія елемента Х

Мнемонічні позначення функцій однозначно пов'язані з конкретними комбінаціями способів адресації та типами даних. Загалом у системі команд можливо 111 таких поєднань.

2. Арифметичні та логічні інструкції

Як п рімер арифметичної команди, Операція додавання може бути виконана однією з нижченаведених команд.

ADDA,7 F 16 - Додати до вмісту регістру А число 7 F 16 та результат зберегти у регістрі А;

ADDA,@ R0 – додати до вмісту регістру А число, адреса якого (@ – commercial at ) зберігається в регістрі R 0 (непряма адресація), та результат зберегти у регістрі А;

ADD A,R7– додати до вмісту регістру А вміст регістру R 7 та результат зберегти в регістрі А;

ADD A, # 127- Додати до вмісту регістру А число, адреса комірки зберігання якого 127 ( # – символ номера), і результат зберегти в регіс т- Ре А.

Усі арифметичні інструкції виконуються за один машинний цикл, за винятком команди INC DPTR(Зміщення покажчика даних DPTRна наступний байт), що вимагає два машинних цикли, а також операцій множення та поділу, що виконуються за 4 машинні цикли. Будь-який байт у внутрішній пам'яті даних може бути інкрементований та декрементований без використання акумулятора.

Інструкція MUL ABздійснює множення (multiplication – множення) даних в акумуляторі на дані, що знаходяться в регістрі B, поміщаючи твір у регістри A (молодша половина) та B (старша половина).

Інструкція DIV ABділить (division – поділ) вміст акумулятора на значення регістрі B, залишаючи залишок в B, а приватне – в акумуляторі.

Інструкція DA Aпризначена для двійково-десяткових арифметичних операцій (арифметичні операції над числами, поданими у двійково-десятковому коді). Вона не робить перетворення двійкового числа в двійково-десяткове, А лише забезпечує правильний результат при додаванні двох двійково-десяткових чисел.

приклад логічної команди: операція логічного І може бути виконана однією з наступних команд:

ANLA,7 F 16 - Логічне множення вмісту регістру А на число 7 F 16 і результат зберігається у регістрі А;

ANLA,@ R1 - Логічне множення вмісту регістру А на число, адреса якого зберігається в регістрі R 1 (непряма адресація), та результат зберегти у регістрі А;

ANL A,R6- Логічне множення вмісту регістру А на вміст регістру R 6, та результат зберегти в регістрі А;

ANL A,#53 – логічне множення вмісту регістру А на число, адреса комірки зберігання якого 53 16 і результат зберегти в регістрі А.

Усі логічні операції над вмістом акумулятора виконуються за машинний цикл, інші – за два. Логічні операції можуть проводитися над будь-яким із нижніх 128 байтів внутрішньої пам'яті даних або над будь-яким регістром SFR (регістрів спеціальних функцій) у режимі прямої адресації без використання акумулятора.

Операції циклічного зсуву RL A, RLC A тощо переміщують вміст акумулятора на один біт вправо або вліво. У разі лівого циклічного зсуву молодший біт переміщається до старшої позиції. У разі правого циклічного зсуву відбувається зворотне.

Операція SWAP Aздійснює обмін молодшої та старшої зошит в акумуляторі.

3. Команди передачі даних

Команда MOV dest, srcдозволяє пересилати дані між осередками внутрішнього ОЗП або областю регістрів спеціальних функцій SFRбез використання акумулятора. При цьому робота з верхньою половиною внутрішнього ОЗП може здійснюватися лише в режимі непрямої адресації, а звернення до регістрів SFR– лише у режимі прямої адресації.

У всіх мікросхемах MCS-51стек розміщується безпосередньо у резидентній пам'яті даних та збільшується вгору. Інструкція PUSHспочатку збільшує значення в регістрі покажчика стека SP, а потім записує в стек байт даних. Команди PUSHі POPвикористовуються тільки в режимі прямої адресації (записуючи або відновлюючи байт), але стек завжди доступний при непрямій адресації через регістр SP. Таким чином, стек може використовувати верхні 128 байт пам'яті даних. Ці міркування виключають можливість використання стічних команд для адресації регістрів SFR.

Інструкції передачі даних включають 16-бітову операцію пересилання MOV DPTR,#data16, яка використовується для ініціалізації регістру покажчика даних DPTRпід час перегляду таблиць у програмній пам'яті або для доступу до зовнішньої пам'яті даних.

Операція XCH A,byteзастосовується для обміну даними між акумулятором і байтом, що адресується. Команда XCHD A, @ Riаналогічна попередньої, але виконується тільки для молодших зошит, що беруть участь в обміні операндів.

Для доступу до зовнішньої пам'яті даних використовується лише непряма адресація. У разі однобайтних адрес використовуються регістри R0або R1поточного регістрового банку, а для 16-розрядних – регістр покажчика даних DPTR. За будь-якого способу доступу до зовнішньої пам'яті даних акумулятор грає роль джерела чи приймача інформації.

Для доступу до таблиць, розміщених у програмній пам'яті, використовуються команди:

MOVC A,@A+ DPTR ;

MOVC A,@A+ PC .

Як базова адреса таблиці використовується вміст відповідно регістру покажчика даних DPTRабо PC(програмного лічильника), а зміщення береться з A. Ці команди використовуються виключно для читання даних із програмної пам'яті, але не для запису до неї.

4. Булеві операції

Мікросхеми MCS-51містять у своєму складі «бульовий» процесор. Внутрішнє ОЗУ має 128 прямо адресованих біт. Простір регістрів спеціальних функцій SFRможе підтримувати до 128 бітових полів. Бітові інструкції здійснюють умовні переходи, пересилання, скидання, інверсії, операції «І» та «АБО».Всі ці біти доступні в режимі прямої адресації.

Біт перенесення CFу регістрі спеціальних функцій «слово стану програми PSW» використовується як однобітний акумулятор бульового процесора.

5. Інструкції переходів

Адреси операцій переходів позначаються мовою асемблера влучною чи справжнім значенням у просторі пам'яті програм. Адреси умовних переходів асемблюються у відносне зміщення – знаковий байт, що додається до програмного лічильника PCу разі виконання умови переходу. Межі таких переходів лежать у межах між мінус 128 і 127 щодо першого байта, наступного за інструкцією. У регістрі спеціальних функцій «слово стану програми PSW» відсутня прапорець нуля, тому інструкції JZі JNZперевіряють умову "рівно нулю" як тестування даних в акумуляторі.

Існує три види команди безумовного переходу: SJMP, LJMPі AJMP- Розрізняються форматом адреси призначення. Інструкція SJMPкодує адресу як відносне усунення, і займає два байти. Дальність переходу обмежена діапазоном від мінус 128 до 127 байт щодо інструкції SJMP.

В інструкції LJMPвикористовується адреса призначення у вигляді 16-бітової константи. Довжина команди складає три байти. Адреса призначення може розташовуватись у будь-якому місці пам'яті програм.

Команда AJMPвикористовує 11-бітну константу адреси. Команда складається із двох байт. При виконанні цієї інструкції молодші 11-біт адресного лічильника заміщаються 11-бітною адресою з команди. П'ять старших біт програмного лічильника PCзалишаються незмінними. Таким чином, перехід може здійснюватися всередині 2К-байтного блоку, в якому розташовується інструкція, яка йде за командою AJMP.

Існує два види команди виклики підпрограми: LCALLі ACALL. Інструкція LCALLвикористовує 16-бітну адресу підпрограми, що викликається. У цьому випадку підпрограма може бути розташована у будь-якому місці пам'яті програм. Інструкція ACALLвикористовує 11-бітну адресу підпрограми. У цьому випадку підпрограма, що викликається, повинна бути розташована в одному 2К-байтному блоці з інструкцією, наступною за ACALL. Обидва варіанти команди кладуть на стек адресу наступної команди та завантажують у програмний лічильник PC відповідне нове значення.

Підпрограма завершується інструкцією RET, що дозволяє повернутися на інструкцію, яка йде за командою CALL. Ця інструкція знімає з стека адресу повернення і завантажує її в програмний лічильник PC . Інструкція RETIвикористовується для повернення з підпрограм обробки переривань. Єдина відмінність RETIвід RETполягає в тому що RETIінформує систему, що обробка переривання завершилася. Якщо в момент виконання RETIнемає інших переривань, то вона ідентична RET.

Інструкція DJNZпризначена для керування циклами. Для виконання циклу N раз треба завантажити в лічильник байт зі значенням N та закрити тіло циклу командою DJNZ, що вказує на початок циклу.

Команда CJNEпорівнює два своїх операнда як беззнакові цілі і здійснює перехід за вказаною в ній адресою, якщо порівнювані операнди не рівні. Якщо перший операнд менше, ніж другий, то біт перенесення CF встановлюється у «1».

Усі команди в асембльованому вигляді займають 1, 2 або 3 байти.

Система команд ОМЕОМ надає великі можливості обробки даних, забезпечує реалізацію логічних, арифметичних операцій, а також управління режимом реаліного часу. Реалізована побітова, потетрадна (4 біта), побайтова (8 біт) та 16-розрядна обробка даних. БІС сімейства MCS-51 - 8-розрядна ОМЕОМ: ПЗУ, ОЗУ, регістри спеціального призначення, АЛУ та зовнішні шинимають байтову організацію. Двобайтові дані використовуються тільки регістром-покажчиком (DPTR) та лічильником команд (РС). Слід зазначити, що регістр-покажчик даних може бути використаний як двобайтовий регістр DPTR або як два однобайтові регістри спеціального призначення DPH і DPL. Лічильник команд завжди використовується як двобайтовий регістр. Набір команд ОМЕОМ має 42 мнемонічні позначення команд для конкретизації 33 функцій цієї системи. Синтаксис більшості команд асемблерної мови складається з мнемонічного позначення функції, завжди за яким йдуть операнди, що вказують методи адресації та типи даних. Різні типи даних чи режими адресації визначаються встановленими операндами, а чи не змінами мнемонических позначень. Систему команд умовно можна розбити на п'ять груп:
  • Арифметичні команди;
  • Логічні команди;
  • Команди передачі;
  • Команди бітового процесора;
  • Команди розгалуження та передачі управління.
Існують такі типи адресації операндів-джерел:
  • Реєстрова адресація
  • Пряма адресація
  • Непрямо-реєстрова адресація
  • Безпосередня адресація
  • Непрямо-реєстрова адресація за сумою базового та індексного регістрів
Арифметичні команди У наборі команд є такі арифметичні операції: додавання, додавання з урахуванням прапора перенесення, віднімання із позикою, інкремінування, декремінування, порівняння, десяткова корекція, множення та розподіл. В АЛУ здійснюються дії над цілими числами без знака. У двооперандних операціях: додавання (ADD), додавання з перенесенням (ADDC) і віднімання із позикою (SUBB) акумулятор є першим операндом і приймає результат операції. Другим операндом може бути робочий регістр обраного банку робочих регістрів, регістр внутрішньої пам'яті даних з опосередковано-реєстровою та прямою адресацією або байт безпосередніх даних. Зазначені операції впливають на прапори: переповнення, перенесення, проміжного перенесення та прапор парності у слові стану процесора (PSW). Використання розряду перенесення дозволяє багаторазово підвищити точність при операціях складання (ADDC) та віднімання (SUBB). Виконання операцій складання та віднімання з урахуванням знака може бути здійснено за допомогою програмного управління прапор переповнення (OV) регістра PSW. Прапор проміжного перенесення (АС) забезпечує виконання арифметичних операцій у двійково-десятковому коді. Операції інкремінування та декременування на прапори не впливають. Операції порівняння не впливають ні на операнд призначення, ні на операнд джерела, але впливають на прапори перенесення. Існують три арифметичні операції, які виконуються лише на акумуляторі: дві команди перевірки вмісту акумулятора А (JZ, JNZ), та команда десяткової корекції при додаванні двійково-десяткових кодів. При операції множення вміст акумулятора А множиться на вміст регістру і результат розміщується наступним чином: молодший байт в регістрі, старший - в регістрі А. У разі виконання операції поділу ціле від поділу поміщається в акумулятор А, залишок від поділу - в регістр В. Логічні команди з байтовими змінними Система команд дозволяє реалізувати логічні операції: "І", "АБО", "ВИКЛЮЧНЕ АБО" на регістрі-акумуляторі (А) і байт-джерела. Другим операндом (байтом-джерелом) у своїй може бути робочий регістр у вибраному банку робочих регістрів; регістр внутрішнього ОЗП, адресований за допомогою опосередковано-реєстрової адресації; прямоадресовані осередки внутрішнього ОЗП та регістри спеціального призначення; безпосередня величина. Зазначені логічні операції можуть бути реалізовані на будь-якому прямоадресованому регістрі внутрішнього ОЗП або регістрі спеціального призначення з використанням другого операнда вмісту акумлятора А або безпосередніх даних. Існують логічні операції, які виконуються лише на акумуляторі: скидання та інвертування всіх восьми розрядів А; циклічний зсув вліво та вправо; циклічний зсув вліво та вправо з урахуванням прапора перенесення; обмін місцями старшого та молодшого зошитів (ніблів) всередині акумулятора. Команди передачі Таблиці символів (кодів), зашиті в ПЗУ програми можуть бути обрані за допомогою команд передачі даних з використанням непрямої адресації. Байт константи може бути переданий в акумулятор із комірки пам'яті програм, що адресується сумою базового регістру (PC або DPTR) та індексного регістру (вміст А). Це забезпечує, наприклад, зручний засіб реалізації алгоритму перетворення коду ASCII семисегментний код. Будь-яка комірка 256-байтового блоку зовнішнього ОЗП даних може бути обрана з використанням опосередковано-реєстрової адресації через регістри покажчики R0 або R1 (вибраного банку робочих регістрів). Осередок всередині адресного простору 64 Кбайт зовнішнього ОЗП також може бути обраний з використанням опосередковано-реєстрової адресації через регістр-покажчик даних DPTR. Команди передачі між прямоадресованих регістрів дозволяють заносити величину з порту в комірку внутрішнього ОЗУ без використання робочих регістрів або акумулятора. У логічному процесорі будь-який прямоадресований біт може бути поміщений у біт перенесення і навпаки. Вміст акумулятора може бути обмінений з вмістом робочих регістрів (вибраного банку) і з вмістом осередків внутрішнього ОЗП, що адресуються за допомогою опосередковано-реєстрової адресації, а також з вмістом прямо-адресованих осередків внутрішнього ОЗП і з вмістом регістрів спеціального призначення. Молодший нібл (розряди 3-0) вмісту акумулятора, може бути обмінений з молодшим ніблом вмісту осередків внутрішнього ОЗП, що вибираються за допомогою опосередковано-реєстрової адресації. Команди бітового процесора Бітовий процесор є частиною архітектури МК сімейства MCS51 і його можна розглядати як незалежний процесор обробки побітів. Бітовий процесор виконує набір команд, має свою побітово-адресовану ОЗУ і своє введення-виведення. Команди, що оперують з бітами, забезпечують пряму адресацію 128 бітів (0-127) у шістнадцяти осередках внутрішнього ОЗП (осередки з адресами 20Н-2FH) та пряму побітову адресацію регістрів спеціального призначення, адреси яких кратні восьми. Кожен з бітів, що окремо адресуються, може бути встановлений в "1", скинутий в "0", інвертований, перевірений. Можуть бути реалізовані переходи: якщо біт встановлено; якщо біт не встановлено; перехід, якщо біт встановлено, зі скиданням цього біта; біт може бути перезаписаний в (з) розряду перенесення. Між будь-яким прямоадресованим бітом і прапором переносу можуть бути зроблені логічні операції "І", "АБО", де результат заноситься в розряд прапора переносу. Команди побітової обробки забезпечують реалізацію складних функцій комбінаторної логіки та оптимізацію програм користувача. Команди розгалуження та передачі керування Адресний простір пам'яті програм не має сторінкової організації, що дозволяє вільно переміщати фрагменти програми всередині адресного простору, при цьому не потрібно пересилати (змінити) номер сторінки. Переміщення окремих фрагментів програми забезпечує можливість використання програмних модулів, що переміщаються, різними програмами. Команди 16-розрядних переходів та викликів підпрограм дозволяють здійснювати перехід у будь-яку точку адресного простору пам'яті програм об'ємом 64 Кбайт. Команди 11-розрядних переходів та викликів підпрограм забезпечують переходи всередині програмного модуля ємністю 2 Кбайт. У системі команд є команди умовних та безумовних переходів щодо початкової адреси наступної програми в межах від (РС)-128 до (ЗС)+127. Команди перевірки окремих розрядів дозволяють здійснювати умовні переходи станом "0" або "1" прямоадресованих бітів. Команди перевірки вмісту акумулятора (на нуль/не нуль) дозволяють здійснювати умовні переходи за вмістом А. Непрямо-реєстрові переходи в системі команд забезпечують розгалуження щодо базового регістру (вмісту DPTR або РС) зі зміщенням, що знаходиться в акумуляторі А. Реєстрова адреса для звернення до восьми робочих регістрів обраного банку робочих регістрів (ці ж регістри можуть бути обрані за допомогою прямої адресації та опосередковано-реєстрової адресації як звичайні осередки внутрішнього ОЗП даних). Реєстрова адресація використовується для звернення до регістрів А, В, АВ (здвоєного регістру), DPTR і до прапора перенесення С. Використання регістрової адресації дозволяє отримувати двобайтовий еквівалент трибайтових команд прямої адресації. Пряма адресація Пряма байтова адресація використовується для звернення до осередків внутрішньої пам'яті (ОЗП) даних (0-127) та до регістрів спеціального призначення. Пряма побітова адресація використовується для звернення до 128 біт, що окремо адресуються, розташованим в осередках з адресами 20H-2FH і до бітів регістрів спеціального призначення, що окремо адресуються. Старший біт байта коду прямого адрема вибирає одну з двох груп бітів, що окремо адремуються, розташованих в ОЗУ або регістрах спеціального призначення. Прямо адресовані біти з адресами 0-127 (00H-7FH) розташовані в блоці з 16 осередків внутрішнього ОЗП, що мають адреси 20H-2FH. Зазначені осередки послідовно пронумеровані від молодшого біта молодшого байта до старшого біта старшого байта. Окремо адресовані біти в регістрах спеціального призначення пронумеровані так: п'ять старших розрядів адреси збігаються з п'ятьма старшими розрядами адреси самого регістру, а три молодших - визначають місце розташування окремого ібта всередині регістра. Непрямо-реєстрова адресація Непрямо-реєстрова адресація використовується для звернення до осередків внутрішнього ОЗП даних. Як регістрів-покажчиків використовується регістри R10, R1 обраного банку регістрів. У командах PUSH та POP використовується вміст покажчика стека (SP). Непрямо-реєстрова адресація використовується для звернення до зовнішньої пам'яті даних. У цьому випадку за допомогою регістрів-покажчиків R0 і R1 (вибраного банку робочих регістрів) вибирається комірка з блоку 256 байт зовнішньої пам'яті даних. Номер блоку попередньо задається вмістом порту Р2. 16-розрядний покажчик даних (DPTR) може бути використаний для звернення до будь-якого осередку адресного простору зовнішньої пам'яті даних обсягом до 64 Кбайт. Безпосередня адресація Безпосередня адресація дозволяє вибрати з адресного простору пам'яті програм константи, які вказані в команді. Непрямо-реєстрова адресація за сумою базового та індексного регістрів Непрямо-реєстрова адресація за сумою: базовий регістр плюс індексний регістр (вміст акумулятора А) полегшує перегляд таблиць, зашитих у пам'яті програм. Будь-який байт з таблиці може бути обраний за адресою, що визначається сумою вмісту DPTR або РС та вмісту А. Таблиця позначень та символів, що використовуються в системі команд
Позначення, символ Призначення
А Акумулятор
Rn Реєстри поточного обраного банку регістрів
r Номер завантажуваного регістру, вказаного в команді
direct Прямо адресована 8-бітова внутрішня адреса осередок даних, який може бути осередком внутрішнього ОЗУ даних (0-127) або SFR (128-255)
@Rr Непрямо адресований 8-бітовий осередок внутрішнього ОЗУ даних
data8 8-бітове безпосереднє і ное, що ходить в КОП
dataH Старші біти (15-8) безпосередніх 16-бітових даних
dataL Молодші біти (7-0) безпосередніх 16-бітових даних
addr11 11-бітова адреса призначення
addrL Молодші біти адреси призначення
disp8 8-бітовий байт зміщення зі знак м
bit Біт із прямою адресацією, адреса якого містить КОП, що знаходиться у внутрішньому ОЗП даних або SFR
a15, a14...a0 Біти адреси призначення
(Х) Вміст елемента Х
((Х)) Вміст за адресою, що зберігається в елементі Х
(Х)[M] Розряд М елемента Х
+ - * / AND OR XOR /X Операції: складання віднімання множення поділу логічного множення (операція І) логічного складання (операція АБО) додавання за модулем 2 (що виключає АБО) інверсія елемента Х

Мнемонічні позначення функцій однозначно пов'язані з конкретними комбінаціями способів адресації та типами даних. Загалом у системі команд можливо 111 таких поєднань. У таблиці наведено перелік команд, упорядкованих за абеткою.

Мнемоніка Функція Прапори
Команда ACALL Абсолютний виклик підпрограми
Команда ADD A,<байт-источник> Додавання AC, C, OV
Команда ADDC A,<байт-источник> Додавання з перенесенням AC, C, OV
Команда AJMP Абсолютний перехід
Команда ANL<байт-назначения>, <байт-источникa> Логічне "І"
Команда ANL C,<байт-источникa> Логічне "І" для змінних-бітів
Команда CJNE<байт-назначения>, <байт-источник>, <смещение> Порівняння та перехід, якщо не одно C
Команда CLR A Скидання акумулятора
Команда CLR Скидання біта C, bit
Команда CPL A Інверсія ак умуля ора
Команда CPL Інверсія біта C, bit
Команда DA A Десяткова корекція акумулятора для кладки AC, C
Команда DEC<байт> Декремент
Команда DIV AB Поділ C, OV
Команда DJNZ<байт>, <смещение> Декремент і перехід, якщо не дорівнює нулю
Команда INC<байт> Інкремент
Команда INC DPTR Інкремент покажчика даних
Команда JB , Перехід, якщо біт встановлено
Команда JBC , Перехід, якщо біт встановлений і скидання цього біта
Команда JC Перехід, якщо перенесення встановлено
Команда JMP @A+DPTR Непрямий перехід
Команда JNB , Перехід, якщо біт не встановлено
Команда JNC Перехід, якщо перенесення не встановлено
Команда JNZ Перехід, якщо вміст акумулятора не дорівнює нулю
Команда JZ Перехід, якщо вміст акумулятора дорівнює 0
Команда LCALL Довгий виклик
Команда LJMP Довгий перехід
Команда MOV<байт-назначения>, <байт-источника> Переслати змінну-байт
Команда MOV<бит-назначения>, <бит-источника> Переслати біт даних C
Команда MOV DPTR, #data16 Завантажити покажчик даних 16-бітовою константою
Команда MOVC A, @ A + ( ) Переслати байт із пам'яті програм
Команда MOVX<байт приемника>, <байт источника> Переслати у зовнішню пам'ять (із зовнішньої пам'яті) даних
Команда MUL AB множення C, OV
Команда NOP Ні операції PC
Команда ORL<байт-назначения>, <байт-источникa> Логічне "АБО" для змінних-байтів
Команда ORL C,<бит источникa> Логічне "АБО" для змінних-бітів C
Команда POP Читання зі стеку
Команда PUSH Запис у стек
Команда RET Повернення з підпрограми
Команда RETI Повернення з переривання
Команда RL A Зсув вмісту акумулятора вліво
Команда RLC A Зсув вмісту акумулятора вліво через прапор переносу
Команда RR A Зсув вмісту акумулятора праворуч
Команда RRC A Зсув вмісту акумулятора праворуч через прапор переносу C
Команда SETB Встановити біт C
Команда SJMP<метка> Короткий перехід
Команда SUBB A,<байт источника> Віднімання із позикою AC, C, OV
Команда SWAP A Обмін зошитами всередині акумулятора
Команда XCH A,<байт> Обмін вмісту акумулятора зі змінною байтом
Команда XCHD A, @ R1 Обмін зошитом
Команда XRL<байт-назначения>, <байт-источникa> Логічне "ВИКЛЮЧНЕ АБО" для змінних-байтів