Способи адресації даних
Мнемонічна форма запису команд
8-ми і 16-бітові команди складно запам‘ятати і ототожнювати їх з фактичним призначенням.
Тому застосовується скорочений запис назви команди шляхом мнемонічного позначення. Для цього зазвичай використовується три букви назви операції, виконуваної командою, наприклад:
AND – логічне і;
DEC – декремент (накопичення від’ємне);
CLA (clear) – команда очищення;
NOP – nooperation (нема операції);
MOV (move) – пересилання;
HLT (halt) – зупинка;
INC – інкремент (накопичення додатнє);
ADD – сумування;
CLAA – очищення акумулятора А (у випадку двох акумуляторів в МП);
CLAB – очищення акумулятора B (у випадку двох акумуляторів в МП).
Тут А і В – адреси місцезнаходження оброблених даних.
Якщо команда оперує числовими даними або адресами областей пам‘яті, то доцільно використання чисел в адресній частині команди.
Наприклад, код операції з мнемонічною назвою JMP (jump) – перехід вимагає вказання адреси переходу. Так JMP 177756, де адреса виражена 6-ти розрядним вісімковим числом, двійковий еквівалент якого 1111 1111 1110 11102 є адресою області пам’яті. Мнемонічне позначення коду операції JMP легше запам’ятати ніж його вісімковий еквівалент 3038.
Суміщенням скороченого буквенного позначення коду операції з числовою формою запису адреси є одною з найзручніших форм запису команди. Ця форма запису є складовою частиною команди при використанні мови ассемблера. Програма ассемблера перетворює мнемонічне позначення кодів операції у відповідні двійкові еквіваленти.
1. Неявна адресація
Однобайтова команда 8-ми розрядного МП – це одна з 256 можливих комбінацій 8 біт, які утворюють машинне слово (байт). Якщо МП має пам’ять 64 кБайт, то необхідний доступ до 65536 областей пам’яті. Тому адресна частина команди повинна бути більшою тої, яка може надати 1-байтова команда. Окрім того, в команді завжди повинен бути вказаний код операції.
Яким тоді чином можна використати 1-байтову команду для адресації до даних? Відповідь: 1-байтові команди не адресуються до даних, розташованих в пам’яті; вони керують даними, завантаженими в регістр, регістрову пару, або даними, що зберігаються в області пам’яті, адреса якої знаходиться в регістровій парі.
Наприклад, 1-байтова команда пересилання даних з регістру А в регістр В складається з коду операції; адреси джерела даних (регістр А) і адреси приймача (отримувача) даних (регістр В).
07 | 16 | 05 | 04 | 03 | 12 | 11 | 10 |
Код операції | Адреса PrB | Адреса PrA |
Команди з неявною адресацією найбільш швидкодіючі, бо МП витрачає на їх виконання лише 2 мікроцикли: операцію вибору і операцію виконання.
2. Безпосередня адресація
Код операції розташовується в першому байті. За кодом операції йдуть дані, які займають 1 або 2 байти. Ці дані беруться не з пам’яті, їх надає машині програміст при запису команди. Таким чином, при цьому не є необхідним вказання адреси пам’яті, необхідним є лише код операції, після якого записуються дані
Наприклад, необхідно завантажити акумулятор 8-ми розрядним двійковим числом. Таке завантаження здійснюється при кожному виконанні програми. Вказану програму можна реалізувати командою, код операції якої вказує мікропроцесору завантажити в акумулятор дані довжиною 1 байт, які йдуть безпосередньо за кодом операції.
3. Пряма адресація
Тут команди можуть мати довжину, яка дорівнює 2 або 3 байти.
1-й байт – код операції
2-й байт і якщо є 3-й – для адреси.
Адреса вказує область пам’яті, в якій знаходяться дані, що піддаються обробці. Використання 2-го і 3-го байтів команди дозволяє адресуватися до будь якої з 65536 областей пам’яті.
Тільки при прямій адресації явним чином задається адреса необхідних даних.
Приклад. Записати вміст акумулятора в пам’ять по адресі 000Е16.
Завантаження акумулятора пряме |
0016 |
0Е16 |
1 байт |
2 байт |
3 байт |
4. Опосередкована регістрова адресація
Реалізується командами довжиною в одне слово. Містить код операції і номер регістру, вміст якого – адреса місцезнаходження даних в пам’яті.
Ця адресація зручна при звертанні до часто використовуваних областей пам’яті і особливо в тих випадках, коли дані організовані у вигляді деякого списку або файлу (набору).
Інакше кажучи, використання опосередкованої адресації дає найбільший ефект при запису і читанні слідуючих одна за одною областей пам’яті.