Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мікропроцесорна техніка (Опис машинних команд).doc
Скачиваний:
7
Добавлен:
10.12.2018
Размер:
515.07 Кб
Скачать

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 – регістр вказівник даних;

  • () – вмістиме комірки пам’яті або регістру.