Читайте также:
|
|
Вивчення різних методів адресації команд МП Intel-8080.
Загальні відомості
Формати будь-якої з команд мікропроцесора Intel-8080 в загальному випадку складаються з коду операції, ознаки адресації та адреса операнда.
Код операції (КОП) визначає, яка операція МП повинна виконуватися (складання, пересилки і таке іншне). Ознаку адресації вказує правило, відповідно до якого, здійснюється перетворення числа, записаного в адресному полі команди, з метою знаходження дійсної адреси операнда. Таким чином, ознаку адресації визначає спосіб інтерпретації адреси.
Кожна чергова команда, номер якої визначається станом лічильника команд, пересилається з пам'яті в регістр команд, старші розряди якого використовуються для зберігання КОП і ознаки адресації, молодші, - для зберігання операнда.
Слід зазначити, що в одній і тій же МПС формат різних команд може бути різний. У МП Intel-8080 використовуються одно-, дво-, і трибайтові команди, формат показаний на рисунку 2.1.
Рисунок 2.1- Типові формати одно-, дво- і трибайтових команд.
Застосування команд різної довжини з різними способами адресації дозволяє гнучкіше організувати обчислювальний процес, підвищити його швидкодію і при обмеженій довжині командного слова забезпечити звернення до необхідної кількості елементів пам'яті.
У МП Intel-8080 використовується п'ять методів адресації: пряма, регістрова, безпосередня, посередньо-регістрова і неявна.
Пряма адресація
При цьому способі адресації виконавська адреса операнда записується безпосередньо в адресному полі команди. Цією адресою може бути або адреса елементу пам'яті, або номер порту введення/введення.
Наприклад: команда JMP 1000Н здійснює перехід за адресою 1000Н, задаючи значення адреси пам'яті. Команда OUT 06Н виводить вміст акумулятора в порт виведення з номером 06. В останньому випадку команда включає пряму адресу номера порту виведення.
Регістрова адресація
Ця адресація використовується для прискорення обчислення, коли проміжні результати не пересилаються в основну пам'ять, а зберігаються в одному з робочих регістрів центрального процесора (ЦП). Оскільки число цих регістрів зазвичай невелике (для МП Intel-8080 регістрів 7: А, В, C, D, Е, H, L), то для їх адресації потрібне невелике адресне поле. Зазвичай команди регістрової адресації коротші за інші (однобайтні) і час виконання їх менше. Проте деякі команди використовують 16-бітові значення пар регістрів, наприклад, команд РСНL (обмін вмісту лічильника команд з вмістом пари регістрів HL).
Безпосередня адресація
При безпосередній адресації операнд є частиною команди що виконується. Коли прочитується ця команда, МП вилучає байт команди з ОЗП (або ПЗП), а потім, визначає, чи потрібно читати другий (і третій байт). У разі потреби безпосередній операнд прочитується на внутрішні регістри МП і тому на етапі виконання команди звернення до пам'яті не відбувається. Всі команди з безпосередньою адресацією, окрім команд MVI і LXI, припускають використання другого операнда, у якості якого використовується байт даних, що розташований в акумуляторі і адресується неявно. При необхідності завантаження початкового значення покажчика стека за допомогою команди LXI SP це може бути виконано, наприклад, таким чином:
LXI SP, 2500Н
В цьому випадку покажчик стека SP завантажується значенням 2500Н. Код 2500Н є операндом, що безпосередньо адресується.
Посередньо-регістрова адресація
У цьому методі адресації використовуються дві адреси. Перша адреса включена в команду і зазвичай є адресою пари регістрів. Пара регістрів містить не операнд, як при прямій адресації, а другу адресу, яка є адресою байта пам'яті. Операнд знаходиться в цьому байті пам'яті.
Наприклад, команда MOV M,C пересилає вміст регістра С в байт пам'яті, адреса якого розташована в парі регістрів HL. Команда LDAX B завантажує акумулятор байтом даних з пам'яті, адреса якого міститься в парі регістрів ВС.
Неявна адресація
При цьому методі адресації адреса одного або обох операндів неявно задається в коді операції. Операція може, наприклад, виконуватись тільки з вмістом акумулятора, який адресується КОП і немає сенсу його згадувати спеціально.
У МП Intel-8080 перший операнд завжди знаходиться в акумуляторі, а другою може бути адресований прямо, посередньо або безпосередньо спосіб адресації визначає формат команди. Наприклад, команда DAA неявно задає акумулятор як операнд.
Команди арифметичних операцій з регістровим і посередньо-регістровим методом адресації
Основними арифметичними операціями є операції складання і віднімання двійкових чисел. Окрім основних є ряд команд, що дозволяють виконувати обчислення з підвищеною точністю. При цьому, виконуючи складання, треба враховувати біт перенесення (С), отриманий в молодших розрядах, а при виконанні віднімання – позику, виконану у старших розрядах.
Команди складання з перенесенням ADC і віднімання з позикою SBB застосовуються в тих випадках, коли базової довжини слова мікропроцесора недостатньо і доводиться вводити багаторозрядні числа з послідовною обробкою окремих байтів. У пам'яті такі числа зберігаються в суміжних комірках і адресуються за молодшим байтом.
До групи арифметичних команд з регістровим методом адресації відносяться також команди збільшення і зменшення вмісту регістра на одиницю.
Наприклад: INR R – збільшує вміст регістра на одиницю;
DCR R – зменшує вміст регістра на одиницю.
Усі арифметичні команди з регістровим методом адресації, включаючи ADC і SBB, виконуються між даними в акумуляторі і вмістом регістра або елементу пам'яті, вказаними в певній зоні команди.
Наприклад: ADD R означає (А)+(R)→(A);
SBB M означає (А) – M(HL) – (БітС)→(A).
Система команд Intel-8080 дає можливість проводити арифметичні операції з 16-бітовими операндами. Дві команди інкремента пари INX RP і декремента пари DCX RP дозволяють збільшити або зменшити вміст регістрів BC, DE, HL і покажчика стека SP на одиницю.
Команда складання з подвоєною точністю DAD підсумовує вміст регістрової пари (HL) і 16-бітового регістра, що адресується: (HL)+(RP)→(HL).
При цьому модифікується відповідно до результату операції трігер перенесення С.
Команди арифметичних операцій з безпосереднім методом адресації
Арифметичні команди можуть бути з безпосереднім представленням операнда, всі вони мають двобайтовий формат: другим байтом є сам операнд. У мнемоніці команд додається буква I.
Наприклад: ADI B2 - до (А) додати число записане другим байтом;
SUI B2 - від (А) відняти число записане другим байтом.
Виконання арифметичних операцій при використанні спеціальних команд
У системі команд мікропроцесора Intel-8080 є команди зсування двох видів: арифметичного і циклічного.
При циклічному зсуванні акумулятор замикається через регістр зв'язки (біт перенесення С). Зсування можливе як вліво, так і вправо.
RRC RLC
При арифметичному зсуванні ліворуч самий молодший біт акумулятора заповнюється значенням, отриманим з регістра зв'язку С. Виконується послідовне зрушення всіх розрядів, і значення самого старшого біта прямує в біт С, що звільнився (операція множення на 2). При арифметичному зсуванні праворуч також використовується регістр зв'язку, але напрям зсування міняється на протилежний (операція ділення на 2).
RAR RAL
Однобайтна команда десяткової корекції акумулятора DAA в два прийоми коректує 8-бітове значення в акумуляторі на дві бінарно-кодовані десяткові цифри з правильною установкою тригера перенесення С, коли молодша тетрада містить число більше 9 або біт AС=1, тобто встановлений тригер напівперенесення (переповнювання 3- бита), вміст акумулятора збільшується на 6. Якщо після цього старша тетрада містить число більше 9 або встановлена 1 в тригері перенесення С, то в старшу тетраду додається 60Н.
Наприклад, проміжний результат двійкового складання в схемі десяткової корекції чисел 79 і 39 має вигляд:
10110010 (С=0; АС=1), а після обчислення команди отримуємо:
00011000 (С=1; АС=0), тобто правильний результат 118.
Дата добавления: 2015-07-08; просмотров: 194 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
ТеоретичнА частина | | | Порядок виконання роботи |