Микропроцессоры и микроконтроллеры

 
 
 
«Если вы считаете, что C++ труден, попытайтесь выучить английский.»
Bjarne Stroustrup
Русский | Українська


Микропроцессоры и микроконтроллеры :: Принципи роботи мікропроцесорів :: Характеристика системи команд процесора

Характеристика системи команд процесора

Система команд - це набір допустимих для даного процесора керуючих кодів і способів адресації даних. Система команд жорстко пов'язана з конкретним типом процесора, оскільки визначається апаратною структурою блоку дешіфраціі команд, і звичайно не має переносимість на інші типи процесорів (хоча може мати місце сумісність "знизу-вгору" в рамках серії процесорів, як, наприклад, в серії < strong> i80x86 ).

rn

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

rn

З логічної точки зору в двійковому коді команди існують групи розрядів - поля - з різним функціональним призначенням (мал. 3.3).

rn

Тіповая структура формату команди

rn

Рис. 3.3 Типова структура формату команди:

rn

1 - поле коду операції (КОП) об'ємом 1 або 2 байтів;
2 - поле адресній частині команди (Ач) обсягом від 1 до 4 байт.

rn

На ріс.3.3 показані два основних поля в форматі команди:

rn

КОП - код операції - двійкові код, однозначно вказує процесору на виконання конкретних дій (пересилання, складання і т.п.), і визначає при цьому форму завдання адрес операндів;

rn

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

rn

Мова програмування, максимально наближений до системи команд конкретного мікропроцесора - це Асемблер. У цій мові коду кожної команди МП поставлена у відповідність певна мнемоніка - короткий буквене назва команди, наприклад:

rn

Пересилання даних - MOV (від англ. move )

rn

Додавання - ADD

rn

Перехід по програмі - JMP (від англ. jump ) і т.д.

rn

(!) Вспомнить приклади команд з лабораторних робіт

rn

Для програміста система команд представляється як мінімально необхідний набір команд для реалізації обчислень і управління ходом обчислювального процесу. У систему команд традиційно входять такі групи:

rn

пересилання даних (регістр-регістр, регістр-пам'ять, пам'ять-регістр , специфічні команди типу пам'ять - пам'ять); всі команди пересилання виконують, по суті, копіювання даних з комірки-джерела в комірку-приймач;

rn

арифметичні операції (+, -, *,:);

rn

логічні операції ( and, or, xor, not ) та операції зсуву;

rn

введення-виведення - специфічні команди для передачі даних між процесором і пристроями вводу-виводу, розміщеними в адресний простір вводу-виводу; < /p> rn

передача управління - при виконанні такої команди процесор записує в лічильник команд PC адреса наступної команди, взятий з адресної частини поточної команди;

rn

спеціальні - останов, скидання, управління переривання, управління режимом зниженого енергоспоживання і т.п.

rn

Спосіб адресації - це спосіб отримання процесором адреси операндів або переходу на підставі інформації з адресної частини команди . Розрізняють наступні основні способи адресації:

rn

пряма - адреса операндів або переходу міститься в Ач команди;

rn

безпосередня - в Ач команди міститься значення операндів;

rn

Реєстрова - в коді команди міститься вказівка на один або два регістра процесора, що є джерелами операндів або приймачем результату;

rn

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

rn

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

rn

Регістри, які можна використовувати для реалізації непрямої адресації, часто називають вказівними регістр: в самом деле, вони як би "вказують" на ту комірку пам'яті, в якій міститься операндів. Використання непрямої адресації більш переважно, оскільки такий підхід дозволяє створювати універсальні, легко перенастраіваемие (використовується термін «перенесення»), і позиційне незалежні програми. Застосування прямої адресації "прив'язує" програму до конкретних комірок пам'яті, і при цьому різко знижується можливість її використання в різних проектах. Найважливіша особливість непрямої адресації полягає в тому, що адреса операндів повинен формуватися в процесі виконання програми (у той час, як у випадку використання прямої адресації адреси всіх операндів повинні бути визначені і зазначені при написання тексту програми). < /p> rn

Реалізація основних способів адресації схематично показано на мал. 3.4.

rn

(!) Вспомнить приклади команд для різних способів адресації
з лабораторних робіт

rn

Різновидом непрямої адресації є стековая адресація з використанням вмісту регістра SP . При цьому в процесі доступу до даних виконується автоуменьшеніе або автоувеліченіе вмісту регістра SP . Докладніше стековая адресація буде розглянута далі.

rn

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

rn

Схеми реалізації основних способів адресації данних

rn

Рис. 3.4. Схеми реалізації основних способів адресації даних