МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ
Державний університет “Львівська політехніка”
Способи адресації операндів і команди
Пересилання даних однокристального
МП КР580
Методичні вказівки
до лабораторної роботи №2
з курсу “Архітектура комп’ютерів”
для студентів базового напрямку 6.08.04 “Комп’ютерні
науки”
ЗАТВЕРДЖЕНО
на засіданні кафедри
Системи автоматизованого проектування
Протокол №9 від 2007 р.
ЛЬВІВ 2007
СПОСОБИ АДРЕСАЦІЇ ОПЕРАНДІВ І КОМАНДИ ПЕРЕСИЛАННЯ ДАНИХ ОДНОКРИСТАЛЬНОГО МП КР580.
Теоретичні відомості до лабораторної роботи №2 з курсу '' Архітектура комп’ютерів" для студентів базового напрямку 6.08.04 "Комп'ютерні науки". Укл. Р.Т.Панчак, В.М. Теслюк, - Львів: НУ "ЛП", 2007р. 12 с.
Навчальне видання
СПОСОБИ АДРЕСАЦІЇ ОПЕРАНДІВ І КОМАНДИ ЕРЕСИЛАННЯ ДАНИХ ОДНОКРИСТАЛЬНОГО МП КР580
Методичні вказівки
до лабораторної роботи N 2
з курсу " Електронно-обчислювальні машини і мкропроцесорні
системи" для студентів базового напрямку 6.08.04
"Комп'ютерні науки"
Укладачі: Панчак Роман Теодорович,
Теслюк Василь Миколайович,
Редактор Грабовська О.О.
МЕТА РОБОТИ
Вивчити способи адресації операндів і команди пересилання даних в однокристальному мікропроцесорі (МП) КР580, набути практичні навики складання і налагодження програм з використанням цих команд.
2. КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ
2.1. Способи адресації в МП КР580
Пам'ять МП КР580 має байтову структуру можлива адресація в пам'яті будь-якого байта. Ширина вибору з пам'яті - 1 байт. При звертанні до пам'яті використовуються 16-розрядні (двобайтові) адреси. Адресний простір МП КР580 становить 64 Кбайти. Нумерація бітів акумулятора, регістрів і байта пам'яті показана на рис. 1.
Система команд МП КР580 містить 244 команди. Команди складаються з одного, двох або трьох байтів і знаходяться в пам'яті (оперативній або постійній). Багатобайтові команди зберігаються в сусідніх комірках пам'яті.
В однобайтових командах байт використовується для задання коду виконуваної операції (рис.2,а). Однобайтові команди це команди обміну з пам'яттю, арифметичні, логічні, зсувів, операції зі стеком, керування системою переривань.
Двобайтові команди - це команди з безпосереднім операндом або команди вводу/виводу (Рис.2,6). Перший байт команди містить код виконуваної операції, а другий - або безпосередній операнд, або операнд адреси порту вводу/виводу.
Трибайтові команди містять у першому байті код виконуваної операції, а в другому або адреси пам'яті, або два байти безпосередніх даних (рис.2,в).
б)
код операції дані або адреси
EMBED Word.Picture.8
До команд, які використовують цей формат, відносяться команди переходів до підпрограм, безумовних і умовних переходів, завантаження регістрів і пам'яті. Необхідно звернути увагу на спосіб написання адреси або безпосереднього операнда в трибайтовій команді. Другий байт команди містить молодшу половину адреси або безпосереднього операнда, а третій байт - старшу.
Спосіб адресації вказує на те, як за адресним кодом, що міститься в команді, визначити виконувану адресу. В одній команді для визначення адрес операндів і результату можуть застосовуватися різні способи адресації. МП КР580 має сім таких способів адресації.
1.Операнд, який розуміється. В команді не задаються явно ні адреса операнда, ні він сам. Операнд розуміється і фактично задається кодом операції команди. найчастіше таким операндом є одиниця, що додається чи віднімається від попереднього значення числа Наприклад :
INR А (Збільшити на 1 вміст акумулятора)
коп
У цій однобайтновій команді не задається явно операнд 1.
2. Неявна адресація. При цьому способі адресації адреса одного або двох операндів неявне задається в йоді операції. Операція може, наприклад, виконуватися вмістом акумулятора , який адресується кодом команди і спеціамно його вказувати не потрібно. У МП КР580 перший операнд завжди знаходиться в акумуляторі, а другий може бути адресований прямо, непрямо або безпосередньо.
Наприклад :
DAA (Виконати десяткове доповнення акумулятора)
КОП
Ця однобайтова команда не містить адреси регістра.
3. Безпосередня адресація. При безпосередній адресації оеранд є частиною виконуваної команди (рис. 3)
LHLD ADDR ; (L)<-((ADDR)); (H)<-((ADDR+1));
PC - лічильник команд. Цей спосіб адресації використовується при необхідності включення в програму фіксованих значень (констант). У МП КР580 допускається безпосередньо адресувати 8-бітні (байт <В2>) і 16-бітні слова (<В2> - молодший байт, <ВЗ> - старший байт). Наприклад :
ADI 80H
КОП 80Н
Вміст другого байта команди додається до вмісту акумулятора. Результат записується в акумулятор.
4.Пряма регістрова адресація. У полі операндів команди задаються адреси регістрів загального призначення (РЗП) A,B,C,D,E,H,L (рис.4). РЗП
У МП КР580 використовується трирозрядне поле для вибору одного з семи РЗП. Наприклад : MOV Е,С
КОП КОДИ РЕГІСТРІВ
Переслати операнд з регістра С в регістр Е. Коди регістрів Е-011, С-001.
5. Пряма адресація. У полі операнда міститься повна 1б-6ітна адреса байта пам'яті (рис.5)
За допомогою прямої адресації можна звертатип до будь-якого байта адресного простору. Наприклад : STA 800Н
КОП ВИКОНУВАНА АДРЕСА
Вміст акумулятора пересилається в комірку пам'яті, адреса якої вказана у другому і третьому байтах команди (0800Н).
6. Непряма регістрова адресація. В адресному полі команди вказується код пари регістрів, в якій міститься адреса комірки пам'яті, де розміщені потрібні дані (рис.6).
Старші біти адреси зберігаються у першому регістрі пари, моЛодші- у другому. Наприклад : STAXB
КОД ПАРИ ВС
Непрямий запис вмісту акумулятора в пам'ять. Вміст акумулятора пересилається в комірку пам'яті, адреса якої задана в парі регістрів ВС.
7. Стекова адресація. При стековій адресації реалізується безпосереднє завдання операнда. Дані заносяться в стек або зчитуються зі стеку, на початок якого вказує вміст вказівника стеку (SP). Наприклад PUSH В
КОД ПАРИ ВC
Пересилання в стек вмісту пари регістрів ВС..
Ряд команд використовує мішану адресацію пам'яті. Наприклад, команда CALL об'єднує пряму адресацію і стекову адресацію. Пряма адресація в команді CALL вказує адресу підпрограми, яка викликається для виконання. Стекова адресація через вказівник стеку визначає адресу комірки пам'яті куди записується значення лічильника
2.2. Команди пересилання даних МП КР580
Ця група команд призначена для простого переміщення даних без будь-якої обробки. Джерелами і приймачами можуть бути регістри мікропроцесора, комірки пам'яті і регістри пристроїв вводу/виводу. При пересиланні дані в джерелі зберігаються, а в приймачі замінюються новими.
Оскільки пересилання даних здійснюється без участі арифметико- логічного пристрою, то прапорці стану не змінються. Розглянемо команди пересилання даних:
1. Пересилання даних з регістра в регістр.
MOV R1, R2; (R1) <- (R2).
Вміст регістра R2 пересилається в регістр Rl. R1,R2 - регістри загального призначення (РЗП) A,B,C,D,E,H,L.
Наприклад: MOV В,С; (В)<- (С).
2. Пересилання даних з пам'яті в регістр.
MOV R,M ; (R)<-((H)(L)); R - A,B,C,D,E,H,L.
Вміст комірки пам'яті, адреса якої знаходиться в регістрах Н і L пересилається в РЗП R. В регістрі Н задається старша половина адреси, в регістрі L - молодша половина.
Наприклад, нехай вміст регістра Н - 08Н, вміст регістра L – СЕН
MOV В,М ; (В)<-((08СЕН)).
3. Пересилання даних у пам'ять.
MOV M,R ; ((Н)(L))<-(R); R - A,B,C,D,E,H,L.
Вміст РЗП R пересилається в комірку пам'яті, адреса якої задається в парі регістрів Н і L.
Наприклад, нехай вміст регістра Н - 08Н, вміст регістра L - EFH.
MOV M,C ; ((08ЕFН))<-(С).
4. Безпосереднє пересилання даних у регістр.
MVI R, D8; (R)<-(байт2); D8 - константа, довжина якої 1 байт; R - A,B,C,D,E,H,L. Вміст другого байта команди пересилається в РЗП R. Наприклад:
MVI A,25H; (А)<-(25Н).
5. Безпосереднє пересилання даних у пам'ять.
MVI M, D8 ; ((H)(L)<-(байт2).
Вміст другого байта пам'яті пересилається у комірку пам'яті, адреса
якої міститься в парі регістрів H i L.
Наприклад, нехай вміст регістра Н - 08Н, вміст регістра L - 3ЕН.
MVI M, 40H ; ((083ЕН))<-(40Н).
6. Безпосереднє завантаження пари регістрів
LXI RP, D16; (rh)<-(байт3); (rl)<-(байт2)
RP: B - BC, D - DE, H - HL. SP : D16 - константа, довжина якої 2 байти. Третій байт команди пересилається в с тарший регістр пари регістрів RP (rh), другий - в молодший регістр (rl).
Наприклад :
LXI B,FFEDH ; (C)<-(FFH); (B)<-(EDH)
LXI SP.BCDH ; (SP)<-(0BCDH).
7. Пряме завантаження акумулятора.
LDA ADDR; (А)<-((байтЗ)(байт2)); ADDR - 16-бітна адреса. Вміст комірки пам'яті, адреса якої вказана в другому і третьому байтах команди, пересилається в акумулятор.
Наприклад:
LDA 0543Н ; (А)<-((0543H)).
8. Прямий запис вмісту акумулятора в пам'ять.
STAADDR ; ((байтЗ)(байт2))<-(А).
SHLD ADDR ; ((ADDR))<-(L); ((ADDR+1))<-(H).
Вміст акумулятора пересилається в комірку пам'яті, адреса якої задана у другому і третьому байтах команди.
Наприклад:
STA 083DH ; ((083DH))<-(A).
9. Пряме завантаження пари регістрів Н і L.
LHLD ADDR; (L)<-((байтЗ)(байт2)); (Н)<-((байт3)(байт2)+1).
У регістр L пересилається вміст комірки пам'яті, адреса якої задається другим і третім байтами команди, а в регістр Н - вміст комірки пам'яті з подальшою адресою.
Наприклад:
LHLD 08BCH ; (L)<-((08ВСН)); (H)<-((08ВОН)).
10. Прямий запис вмісту пари регістрів HL в пам'ять.
SHLD ADDR; ((байтЗ)(байт2))<-(L); ((6айтЗ)(6айт2)+1)<-(H). Вміст регістра L пересилається в комірку пам'яті, адреса якої задається 2-м і 3-м байтами команди, а регістр Н - в комірку з подальшою адресою.
Наприклад :
SHLD 08DDH ; ((08DDH))<-(L); ((08DE))<-(H).
11. Непряме завантаження акумулятора.
LDAX RP ; (A)<-((rh)(rl)); RP: B-BC, D-DE.
В акумулятор пересилається вміст комірки пам'яті, адреса якої задається в парі регістрів RP.
Наприклад, нехай вміст регістра В-08Н, вміст регістра С - D2H
LDAX В ; (A)<-(08D2H).
12. Непрямий запис вмісту акумулятора в пам'ять.
STAX RP ; ((rh)(rl))<-(А); RP: В- ВС, D- DE.
Вміст акумулятора пересилається в комірку пам'яті, адреса якої задається парою регістрів RP.
Наприклад, нехай вміст регістра D-08Н, вміст регістра Е - 01Н
STAX D ; ((0801Н))<-(А).
13. Обмін даними між парами регістрів HL і DE.
XCHG; (Н) <->(D) ; (L) <-> (Е).
Вміст регістрів HL взаємно обмінюється із вмістом регістрів DE. Розглянемо інші операції пересилання, які потребують не однієї, а більшого числа команд.
14. Пряме завантаження будь-якого регістра, відмінного від акумулятора.
LDA ADDR ; (A)<-((ADDR));
MOV REG,A; (REG)<-(A),
або
LXI H,ADDR ; (H)(L)<-(ADDR);
MOV REG,M ; (REG)<-((H)(L)).
15. Непряме завантаження будь-якого регістра з комірки пам'яті, адреса якої міститься в комірках ADDR і ADDR+1.
MOV REG,M ; (REG)«-((H)(L)).
16. Пряме завантаження будь-якої пари регістрів, крім пари HL. завантаження регістрової пари DE :
LHLD ADDR ; (L)<-((ADDR)); (H)<-((ADDR+1))
XCHG , (H)<->(D); (L)<->(E); завантаження регістрової пари ВС :
LHLD ADDR ; (L)<-((ADDR)); (H)<-((ADDR+1))
MOV B,H ; (В)<-(Н)
MOV C,L ; (С)<-(L); завантаження вказівника стека :
LHLD ADDR ; (L)<-((ADDR)); (H)<-((ADDR+1)); SPHL ; (SP)<-(H)(L).
17. Пряме запам'ятовування будь-яких регістрів, відмінних від акумулятора.
MOV A,REG ; (A)<-(REG); STA ADDR ; ((ADDR))<-(A). або
LXI H,ADDR ; (H)(L)<-(ADDR); MOV M, REG; ((H)(L))<-(REG)
18. Непряме запам'ятовування будь-якого регістра в комірці пам'яті,адреса якої міститься в комірках ADDR і ADDR+1.
LHLD ADDR ; (L)<-((ADDR)); (H)<-(ADDR+1)); MOV M,REG ; ((H)(L))<-(REG).
19. Пряме запам'ятовування будь-якої тіари регістрів, крім регістровоїпари HL.
запам'ятовування регістрової пари DE :
XCHG; (H)<->(D); (L)<->(E);
SHLD ADDR; ((ADDR))<-(L); ((ADDR+1))<-(H); запам'ятовування регістрової пари ВС : MOV Н,В ; (Н)<-(В); MOV L,C ; (L)<-(C); SHLD ADDR ; ((ADDR))<-(L); ((ADDR+1))<-(H).
20. Запам'ятати однобайтову константу VAL8 за адресою ADDR.
MVI A,VAL8 ; (А)<-(VAL8); STA ADDR ; ((ADDR))<-(A), або
LXI H, ADDR; (H)<-(ADDR);
MVI M, VAL8; ((H)(L))<-(VAL8);
21. Запам'ятати двобайтову константу VAL16 у комірках пам'яті задресами ADDR і ADDR+1.
LXI H,VAL16 ; (H)(L)<-(VAL16);
22. Запам'ятати однобайтову константу VAL8 у комірці пам'яті з адресою, що міститься в комірках ADDR і ADDR+1
LHLD ADDR; (H)(L)<-(ADDR)
MVI M,VAL8; ((H)(L))<-(VAL8).
2.3. Стек і команди роботи зі стеком в однокристальному МП КР580
Стек - це область оперативної пам'яті, яка адресується за допомогою вказівника стека (SР)(І6-розрядного програмне доступного регістра). На початку роботи зі стеком ініціалізується нижня межа стека (рис.7).
При записуванні інформації в стек він зростає в бік молодших адрес. У МП КР580 стекові операції виконуються з 1б-бітними словами. У стек можна записувати тільки вміст регістрових пар і отримувати інформацію зі стека можна лише у регістрові пари. Розглянемо команди роботи зі стеком.
1. Занесення в стек вмісту пари регістрів :
PUSH RP ; RP: В- ВС, D- DE, Н- HL;
((SP)-1)<-(rh);
((SР)-2)<-(rl);
(SP)<-(SP)-2.
На рис.8,а показано стан стека до виконання команди PUSH H, а на рис.8,б - після виконання команди.
Послідовність дій МП при виконанні команди PUSH Н така :
• вміст вказівника стека зменшується на 1: (SP)<-(SP)-1;
в комірку пам'яті за адресою ((SP)-l) записується вміст регістраН;
вміст вказівника стека зменшується на 1: (SP)<-(SP)-!;
в комірку пам'яті за адресою ((SP)-2) записується вміст регістраL : ((SP)-2)<-(L).
2. Зчитування зі стека вмісту пари регістрів.
POP RP ; .
(rl)<-((SP));
(rh)<-((SP)+l);
(SP)<-((SP)+2).
Вміст комірки пам'яті, адреса якої визначається вмістом вказівника стека SP, пересилається в молодший регістр пари регістрів RP. Вміст наступної за зростанням адреси комірки пересилається в старший регістр пари. Вміст вказівника стека збільшується на 2.
3. Обмін вмісту верхівки стека і вмісту пари HL.
XTHL;(L)<->((SP)); (H)<->((SP)+l);
4. Пересилання вмісту регістрів Н і L у вказівник стека.
SPHL; (SP)<--J-- (H)(L).
Вміст регістрів Н і L (16 біт) пересилається у вказівник стека.
5. PCHL; (H)(L)-> (PC)
3. КОНТРОЛЬНІ ЗАПИТАННЯ
1. Назвіть способи адресації операндів в однокристальному МПКР580 ?
Назвіть формати команд однокристального МП КР580?
Як аадається адреса операнда?
при прямій регістровій адресації?
при непрямій регістровій адресатці'?
при неявній адресайції?
при безпосередній адресації?
при прямій ресації?
при сгековій дресації?
4. Які дії виконують такі команди : STAX D, SHLD OABEH, MVIM 25Н, MOV B,M, LDAX В, LHLD O8BCH, XCHG, STA О8С1H,LDA 09ABH ?
4. ЛАБОРАТОРНЕ ЗАВДАННЯ
4.1. Набрати, скомпілювати та зібрати профаму, задану викладачем.
4.2. Пояснити дії. які виконує програма.
5. ЗМІСТ ЗВІТУ
5.1. Мета роботи.
5.2. Теоретичні відомості.
5.3. Лабораторне завдання.
5.4. Програма у мнемокоді АССЕМБЛЕРА та об’єктному коді до кожного пункту завдання.
5.5. Результати виконання завдання і зроблені за ними висновки.
6. ЛІТЕРАТУРА
6.1. Григорьев В.Л. Программное обеспечение микропроцессорных систем. – М.: Энергоатомиздат, 1983.
6.2. Компьютеры. Справочное руководство. / Пер. с англ. / / Под ред. Г. Хелмса: В 3-х т. Т.3. – М.: Мир, 1986.
6.3. Левенталь Л. Введение в микропроцессоры. – М.: Энергоатомиздат, 1983.
6.4. Учебный микропроцессорный комплект. Альбом РР.817.912, 1988.
6.5. Микро-ЭВМ / Под ред. А. Диркенса. – М.: Энергоатомиздат, 1982.
6.6. Злобин В.К., Григорьев В.Л. Программирование арифметических операций в микропроцессорах. – М.: Высш. Шк., 1991.