Реферати

Реферат: Мікропроцесор Z80 його структура і система команд

Бюджетний пристрій і бюджетна система РФ. Бюджет - це центральний інститут фінансового права, тому що саме у формі бюджетів різних рівнів відбувається акумуляція, розподіл і використання основної маси державних муніципальних коштів.

Проектування автоматичної системи керування температурним режимом печі пиролиза П-101 установки. Зміст Уведення 1. Опис технологічного процесу і технологічної схеми виробництва 1.1 Опис технологічного процесу 1.2 Опис технологічної схеми паро-углекислотного пиролиза углеводородного сировини

Банківська система Німеччини. Банківська система Німеччини У ФРН послу Другої світової війни була створена дворівнева банківська система, де на верхньому рівні знаходиться центральний банк країни - Німецький федеральний банк, а на другому - комерційні, чи кредитні, банки, а також спеціалізовані кредитні установи.

Посібник для програм Word і Exel. ЛАБОРАТОРНА РОБОТА № 1. Створення і редагування найпростіших таблиць у EXEL. Методичні рекомендації. Запуск EXCEL здійснюється подвійним щигликом миші на піктограмі EXCEL. Вид екрана після запуску програми показаний на мал. 1. Розглянемо основні поняття і визначення ЕХСЕ.

Уилсон, Чарльз конгресмен США. План Уведення 1 Біографія 2 Операція Циклон Список літератури Введення Чарльз Несбитт "Чарли" Уилсон (англ. Charles Nesbitt "Charlie" Wilson) - колишній конгресмен США. З 1973 по 1997 представляв у Конгресі 2-й виборчий округ від штату Техас.

Московський Інститут Електроніки і Математики

(технічний університет)

Кафедра ИТАС

РЕФЕРАТ

по курсу: "ЕОМ і периферійні пристрої"

на тему: МікропроцессорZ80его структура і система команд.

Виконав: студент групи АП-41

Завалішин Е. А.

МОСКВА 1998

Архітектура мікропроцесора Z-80

Архітектура мікропроцесора Z-80 фірми ZILOG засновується на архітектурних принципах мікропроцесора 8080 і дозволяє виконувати все 78 команд цього мікропроцесора, а також 80 додаткових команд. Всього мікропроцесор Z-80 має 696 кодів операцій (на відміну від 244 кодів мікропроцесора 8080).

До числа особливостей мікропроцесора Z-80 відносяться: використання для живлення лише одного джерела напруженням "+5В", наявність однофазного зовнішнього синхрогенератора, 17 внутрішніх регістрів і вбудована схема регенерації ОЗУ.

ПРИЗНАЧЕННЯ ВИСНОВКІВ.

Мікропроцесор Z-80 - це мікросхема з 40 висновками, пронумерованими від 1 до 40. Розглянемо функції висновків.

Висновок 11 напруження живлення +5в. Висновок 29- загальний. Висновок 06- тактовий вхід. У SPECTRUMe використовується тактова частота 3.5 Мгц. Висновок 07-10, 12-15- інформаційна шина. Висновок 1-5,30-40- адресна шина.

13 Висновків, що Залишилися приєднані до ліній, які несуть керуючі сигнали. Висновок 21- лінія лічення RD. Ця лінія стає активною, коли байт інформації повинен бути прочитаний з пам'яті або порту. Висновок 22- лінія запису WR. Ця лінія активна, коли байт інформації повинен бути записаний в пам'ять або в порт. Висновок 19- запит пам'яті MREQ. Ця лінія активна в тих випадках, коли потрібно звернення до пам'яті.

Байт інформації прочитується з пам'яті відповідно до адреси, вміщеної на адресній шині. Далі, відповідно до відгуку на сигнали RD і MREQ, байт інформації поступає на інформаційну шину, з якою ця інформація надалі прочитується мікропроцесором. Для запису байта даних в пам'ять мікропроцесор вміщує необхідні адреси на адресну шину і необхідну інформацію на шину даних. Сигнали MREQ і WR активізуються, і байт даних записується в пам'ять.

Висновок 28- лінія регенерації RFSH. Вона використовується для регенерації динамічної пам'яті. Частково використовується для формування TV скануючих сигналів. Висновок 27- активізується при виконанні машинного циклу М1 і показує, що минаючий машинний цикл обробки команди знаходиться в стані "введення коду операції" при виконанні деякої команди. Сигнал М1 при виконанні двобайтовий команди формується при виклику кожного байта коду операції. Сигнал M1 з'являється разом з сигналом IORQ в цикле прийому переривання. Вибірка інструкції вимагає, щоб всі три сигнали MI, MREQ і RD були активізовані. У той же час вибірка байта даних з елемента пам'яті вимагає, щоб тільки MREQ і RD були активізовані. Час необхідний для вибірки інструкції - 1.14 мкс, що становить 4 такти. Висновок 20- лінія вихід lORQ. Ця лінія активна при виконанні команд IN або OUT. Висновок 18- останов HALT. Лінія активізується при виконанні команди HALT. Висновок 25- лінія запиту BUSRQ. Z-80 дозволяє зовнішнім пристроям використати адресну і інформаційну шину в режимі пропуску циклу. Запит мікропроцесору пропустити наступний цикл виконується зовнішніми пристроями шляхом активізації цієї лінії. Висновок 23- лінія підтвердження, BUSAK. Мікропроцесор підтверджує запит зупинки після виконання команди і активізує цю лінію.

4 Висновку, що Залишилися знаходяться під контролем користувача. Висновок 26- лінія скидання, RESET. Використовується для ініціалізації мікропроцесора. Вона активізується при включенні живлення. Скидання може бути здійснене в SPECTRUMe з'єднанням ліній RESET і GND. Висновок 24- лінія очікування WAIT. "Повільна" пам'ять може вимагати більшого часу для циклу лічення або запису і про це повідомляє мікропроцесору шляхом активізації лінії WAIT. Висновок 17- переривання", що "немаскується NMI. Активізація цієї лінії приводить до зупинки виконання мікропроцесором поточної програми, і замість неї мікропроцесор виконує програму переривання, записану спеціально для цієї мети. У SPECTRUMe переривання, що немаскується вимагає системного скидання, яке виконується записуванням 0 за адресою 23728. Висновок 16- переривання", що "маскується, INT. У SPECTRUMe сканування клавіатури і обмін в режимі реального часу називається "керованим перериванням". Це означає, що електроніка системи кожні 1/50 секунди активізує INT, викликаючи зупинку виконання мікропроцесором основної програми і, замість цього, виконання програми сканування клавіатури. Здатність Z80 реагувати на INT може керуватися програмістом спеціальними машинними командами.

ЛОГІЧНА ОРГАНІЗАЦІЯ Z80

У склад Z80 входять: пристрій управління, регістр команд, програмний лічильник, 24 регістри користувача і арифметико-логічний пристрій.

Пристрій управління.

У Z80 керуючий пристрій видає величезне число внутрішніх керуючих сигналів, а також забезпечує формування зовнішніх керуючих сигналів.

Регістр команд.

Термін "регістр" використовується для опису простого елемента пам'яті всередині Z80. Регістр містить 8 біт (1 байт). У Z80 є великий блок регістрів, і пересилка байтів даних до регістрів і від них є найпростішою і найбільш важливою межею програмування в машинних кодах.

Регістр команд - спеціальний регістр, де мікропроцесор містить копію поточної команди, що виконується. Однією з рис набору команд Z80 є те, що певні інструкції містяться в двох байтах даних. У цих випадках регістр команд містить кожну команду по черзі.

Програмний лічильник.

Програмний лічильник - це пара регістрів, які використовуються спільно, тому програмний лічильник містить 16-ти битние значення.

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

Дія програмного лічильника дуже схожа на змінну РРС інтерпретатора бейсик, яка містить номер поточного рядка бейсик і також нарощується.

Регістри користувача (основні регістри).

Є 24 регістри користувача. Всі регістри однобайтовие, хоч звичайно використовуються парами. Регістр А називається акумулятором. Акумулятор - основний регістр мікропроцесора при різних операціях з даними. Більшість арифметичних і логічних операцій здійснюється шляхом використання АЛУ і акумулятора. Будь-яка така операція над двома словами даних передбачає розміщення одного з них в акумуляторі, а іншого - в пам'яті або ще в якому-небудь регістрі. Так при складанні двох слів, умовно званих А і В і розташованих в акумуляторі і пам'яті відповідно, результуюча сума завантажується в акумулятор, заміняючи слово Він часто розглядається як набір восьми флагових бітів, пов'язаних разом, а не як окремий регістр. Встановлення прапора відповідає 1, скидання -0. Програміст звичайно має справу з 4-мя основними прапорами. Це прапор нуля, прапор знака, прапор перенесення і прапор парності-переповнення. Додаткові прапори використовуються керуючим пристроєм і не можуть бути використані програмістом безпосередньо.

Регістрова пара HL.

При зверненні до регістрової пари HL спочатку вказується молодша частина (LOW), а потім старша (HIGH). Пам'ять 64К може бути розглянута як 256 сторінок по 256 адрес в кожній. У цьому випадку значення старшого байта вказує на сторінку, що використовується.

У мікропроцесорі регістрова пара HL є однією з трьох регістрових пар, які використовується як адресні регістри. У цій якості регістрова пара HL є найбільш важливою. Регістрова пара HL також може бути використана для зберігання 16-ти розрядного числа, і існує певний ряд арифметичних операцій, які можуть бути виконані з цими числами. Н-регістр і L-регістр також можуть бути використані і як окремі регістри, хоч з ними може бути виконане обмежене число операцій.

Регістрова пара ВР і DE. Ці пари використовуються головним чином як адресні регістри. Регістри можуть бути використані як одинарні. Регістр В рекомендується використати як лічильники циклів.

Набір альтернативних регістрів.

Z80 має альтернативний набір регістрів для А, Р, Н, 1ДС, D, E. Оні означаються A', F, і т. д. Існують дві спеціальні команди, які дозволяють обмінювати основний і альтернативний набір регістрів. Після обміну для Z80 альтернативний набір стає основним, а основний - альтернативним.

Альтернативні набори регістрів часто використовуються для збереження середа, коли запускається незалежна задача.

Регістрові пари IX і IY використовуються для виконання операції, яка включає індексацію. Це дає можливість працювати зі списком або таблицею. Початкова адреса списку або таблиці повинна бути спочатку занесена у відповідну пару регістрів IX йди IY. У програмі монітора SPECTRUMa lY пара містить адресу 23610 (5C3Ah), що є початковою адресою таблиці системних змінних. IX пари широко використовується як покажчик в програмах обробки команд LOAD, SAVE, VERIFY, MERGE.

Покажчик стека - це адресний регістр. Він використовується для вказівки в пам'яті області машинного стека і завжди розглядається як одинарний двобайтовий регістр. Z80 використовує стек, заповнений в пам'яті зверху вниз. Аналогією є магазин автомата - за принципом останній прийшов, першим пішов. Покажчик стека використовується для вказівки різних розміщень в області стека в кожному випадку. Покажчик стека завжди містить адресу, куди останній раз був зроблений запис. Тому керуючий пристрій спочатку зменшує значення покажчика стека, а потім вміщує туди значення. Пересилка в стек двобайтовий, і тому покажчик стека повинен бути двічі зменшений при приміщенні в стек і двічі збільшений при вибірці з стека. Машинний стек звичайно використовується як місце збереження адрес повернення, але можна використати його як робочу область.

Регістр 1 - регістр вектора переривань, використовується для розміщення адрес пристроїв введення-висновку. Однак BSPECTRUMe ця можливість не використовується і 1- регістр використовується для генерації TV - сигналу.

Регістр R- регенерації пам'яті. Він є простим лічильником, який збільшується кожний раз при виконанні циклу регенерації. 3начение в регістрі циклічно змінюється від 0 до 255.

Арифметико-логічний пристрій (АЛУ).

У АЛУ виконуються арифметичні і логічні операції. Можливе виконання складання і віднімання, а також АЛУ здібно виконувати велику кількість бітових операцій і встановлювати прапори, щоб показати результат.

СИСТЕМА КОМАНД МІКРОПРОЦЕСОРА Z-80.

Команди і дані.

Команди поділені на 18 груп, кожна з яких складається з тих команд, які сильно схожі один на одну. Існує шість класів даних, які можуть слідувати за командою.

1.0 днобайтовая константа (+DD).

Це число А в діапазоні 00-FFh, (0-65535d). Ті команди, які вимагають за собою однобайтовую константу, мають мнемонічний префікс +DD. Наприклад: LD HL, +DDDD.

2. Двобайтовий константа (+DDDD).

Це число А в діапазоні 0000-FFFFh (0-65535d). Ті команди, які вимагають за собою двобайтовий константу, мають мнемонічний префікс +DDDD. Наприклад: LD HL, +DEDD.

3. Двобайтовий адреса (ADDV).

Це число А в діапазоні 0000-FFFFh (0-65535d), тобто число, яке використовується як адреса пам'яті. Ті команди, які вимагають за собою двобайтовий адресу, мають префікс ADDV, наприклад: JP ADDV.

4. Однобайтовая константа зміщення (е).

Це число А в діапазоні 00-FFh(-128+127d). Число вегда представлене в додатковому коді. Ті команди, які вимагають за собою однобайтовую константу, мають мнемонічний префікс е. Напріме:JP е.

5. Однобайтовая индуксирующая константа зміщення (+D).

Це число А в діапазоні 00-FFh, (-128 +127d) представлено додатковій арифметиці. Ті команди, які вимагають за собою однобайтовую індексуючу константу зміщення, мають мнемонічний префікс +D. Напрімер: LD А, (JX+D)

6 Однобайтовая індексуюча константа зміщення і однобайтовая константа (+D,+DD).

Це два числа в діапазоні 00-FFh, перше з яких розглядається як десятеричне -128+127, а друге - як десятеричне 0-255. Команди, що вимагають два байти даних, супроводяться мнемоніками D і +DD. Наприклад:LD (JX+D),+DD.

ГРУПА КОМАНД.

Існує багато шляхів для розділення на групи сотень різних команд. Метод, вибраний, тут, розділяє команди на 18 функціональних груп.

Група 1. Команда "немає операції"

Мнемоника16-ний код

NOP 00

Виконання команди вимагає 1,14 мкс. Жоден з регістрів або прапорів не змінюється. Команда NOP використовується програмістом для організації затримок, але чаші для видалення непотрібних команд з програми.

Група 2. Команди завантаження регістра константами.

Мнемоника16-ний код

LD А,+DD 3EDD

LD Н, +DD 26DD

LD L, +DD 2EDD

LD В,+DD 06DD

LD З,+DD 0EDD

LD D, +DD 16DD

LD Е, +DD lEDD

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

Досвідчені команди виконують завантаження пари регістрів двобайтовий константами.

Мнемоника16-ний код

LD HL, +DDDD 21 DD DD

LD BC, +DDDD 01 DD DD

LD DE, +DDDD 11 DD DD

LD IX, +DDDD DD 21 DD DD

LD IY, +DDDD FD 21 DD DD

LD SP, +DDDD 31 DD DD

Рядок команди вимагає 3 або 4 байти в пам'яті. Код операції займає 1 або 2 байти, і 2 байти займає константа. Перший байт константи завантажується в молодший регістрової пари т. е. L, З, Е, X, Y, Р, а другий байт в старший регістр, т. е. Н, В, D, l, S. Еті команди записують в регістрові пари дані, які часто розглядаються програмістом як двобайтовий адреса, але можуть бути також і двобайтовий числовим значенням і двома окремими однобайтовими числовими значеннями.

Команди цієї групи не змінюють прапорів.

Група 3. Команди копіювання регістрів і обміну. Існує 59 команд, які виконують копіювання регістрів і регістрових пар. Ці команди можна розділити на 4 підгрупи.

Підгрупа А. Команди копіювання типу регістр-регістр. Наступна таблиця дає коди операцій команд, що виконують копіювання одного регістра, що міститься в іншій.

LD LD LD LD LD LD LD

регистрA, RH, RL, RB, RC, RD, RE, R

А 7F 67 6F 47 4F 57 5F

Н 7C 64 6C 44 4C 54 5C

L 7D 65 6D 45 4D 55 5D

В 78 60 68 40 48 50 58

З 79 61 69 41 49 51 59

D 7A 62 6А 42 4A 52 5A

Е 7B 63 6B 43 4B 53 5B

жодна з команд, приведених в таблиці, не змінює прапори. Існує крім того 4 команди для I і R регістрів.

Мнемоника16-ний код

LD А, I ED57

LD А, R ED5F

LD I, А ED47

LD R, А ED4F

Ці останні команди впливають на прапор переповнення парності.

Підгрупа В. Команди копіювання типу регістрова пара- регістрова пара

Існує тільки 3 команди цієї підгрупи. Вони копіюють значення в покажчик стека.

Мнемоника16-ний код

LD SP, HL F9

LD SP, IX DD F9

LD SP, IY FDF9

Ці команди не змінюють вміст прапорів. Помітимо, якщо вміст регістрової пари треба копіювати в іншу регістрову пару і ці команди не підходять, необхідно виконати дві команди копіювання регістр-регістр. Наприклад, немає команди LD HL, DE, і її замінюють, використовуючи LD Н, D і LD L, E. Ілі вміст першої регістрової пари може бути збережений в стеку і потім переписаний у другу регістрову пару.

Підгрупа С. Команди DE, NL.

Існує тільки одна команда, яка дозволяє обмінювати вміст регістрових пар в межах основного набору регістрів.

Мнемоника16-ний код

EXX DE, HL EB

Це дуже корисна команда дозволяє обмінювати вміст пари DE з вмістом пари HL. Значення прапорів не змінюється. Команда використовується, коли необхідна, щоб адреса або двобайтовий числова константа з пари DE була записана в пару HK, але вміст останньої не був потеряно.

Підгрупа D. Команди альтернативного набору регістрів.

У цій групі 2 команди.

Мнемоника16-ний код

EXX D9

EX AF, A'F 08

Команда EXX спричиняє перемикання регістрів Н, L, В, З, D, Е на регістри H', L', B', C', D', Е'. Команди EXAF, A'F, як випливає з мнемоніки, перемикають рег. А і F на A' F. Альтернатівние регістри часто використовуються для зберігання адрес і даних. Вміщені в альтернативні регістри ці значення зберігаються від спотворення і можуть бути легко і просто відновлені.

Група 4. Команди завантаження регістрів з пам'яті.

У систему Z80 входить багато команд, що дозволяють знаходити дані в пам'яті і потім завантажувати їх в регістри. Всі ці команди вимагають, щоб програміст указав адресу або пару адрес в пам'яті, звідки дані повинні бути скопійовані в регістр-одержувач даних.

Команди цієї групи краще розглядати як команди трьох підгруп відповідно до методу адресації. Види адресації:

· непряма- двобайтовий адреса вже розміщений в адресній регістровій парі;

· непосредственная-дійсна адреса вказана в двох байтах услід за кодом операції;

· індексна- адреса даних повинен бути обчислений шляхом складання значення зміщення D з основною адресою, що вже містилася в регістровій парі IX або IY.

Підгрупа А. Команди, що використовують безпосередню адресацію.

Мнемоника16-ний код

LD А, (ADDR) 3A ADDR

LD HL, (ADDR) 2AADDR

LD BC, (ADDR) ED 4B ADDR

LD DE, (ADDR) ED 5B ADDR

LD D, (IX+D) DD 5D D

LD Е, (IX+D) DD 5E D

Для команд, що використовують пару IY, треба змінити IX на IY і DD на FD. Жодна з команд цієї групи не міняє прапори.

Група 5. Команди запису в пам'ять регістра, що міститься або константи.

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

Підгрупа A. Команди безпосередньої адресації.

Мнемоника16-ний код

LD(ADDR), А 32 ADDR

LD(ADDR), HL 22 ADDR (звичайна форма)

ED 63 ADDR (незвичайна форма)

LD(ADDR), BC ED 43 ADDR

LD(ADDR), DE ED 53 ADDR

LD(ADDR), IX ЕD 22 ADDR

LD(ADDR), IY ЕD 22 ADDR

LD(ADDR), SP ЕD 73 ADDR

Приведені команди приводять тільки безпосередню адресацію і важливо помітити, що немає команд для запису в пам'ять констант. Якщо це необхідне, константа заздалегідь повинна бути завантажена в регістр A. Затем виконується LD(ADDR), A. Команди типу LD(ADDR), HL-фактично двійчасті команди: LD(ADDR), L і LD(ADDR+1), H. Команди підгрупи часто використовуються для збереження адрес і значень в пам'яті, коли ці значення використовуються як змінні. Наприклад, часто використовується LD(RAMTOP), HL, де RAMTOP - мітка пари адрес пам'яті, що використовуються для зберігання поточного значення верхньої межі пам'яті. Вибірка поточного значення верхньої межі може бути пізніше виконана команда 4 групи, наприклад:

LD HL, (RAMTOP).

Підгрупа B. Команди непрямої адресації.

Команди цієї підгрупи дозволяють копіювати вміст регістрів в пам'ять, адреса якої міститься в регістровій парі HL, BC або DE.

існує також команда запису однобайтовой константи за адресою, вказаній в парі HL.

Мнемоника16-ний код

LD(HL), А 77

LD(BC), А 02

LD(DE), А 12

LD(HL), X 74

LD(HL), L 75

LD(HL), В 70

LD(HL), З 71

LD(HL), D 72

LD(HL), Е 73

LD(HL),+DD 36DD

Підгрупа C. Команди індексної адресації.

Мнемоника16-ний код

LD(IX+D), А DD 77 D

LD(IX+D), Н DD 74 D

LD(IX+D), L DD 75 D

LD(IX+D), В DD 70 D

LD(IX+D), З DD 71 D

LD(IX+D), Е DD 73 D

LD(IX+D),+DD DD 36 DDD

Для команд, що використовують IY-регістрову пару, треба змінити IX на IY і DD на DF.

Група 6. Команди складання.

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

Команди цієї групи можуть бути побілені на 3 підгрупи:

· команди ADD;

· команди INC. Спеціальні випадки складання, коли до числа додається 1;

· команда ADC. Значення прапора перенесення додається до результату. Прапор перенесення - це один з бітів регістрів прапорів, який використовується для сигналізації про те, чи було при виконанні останньої арифметичної операції переповнення регістра або байта пам'яті.

Команди ADD і ADC міняють прапор перенесення, а INC-не міняє.

Підгрупа A. Команди ADD.

Мнемоника16-ний код

ADD А,+DD C6 DD

ADD А, А 87

ADD А, Н 84

ADD А, L 85

ADD А, В 80

ADD А, З 81

ADD А, D 82

ADD HL, HL 29

ADD HL, BC 09

ADD HL, DE 19

ADD HL, SP 39

ADD IX, IX DD 29

ADD IX, BC DD 09

ADD IX, DE DD 19

ADD А, Е 83

ADD А, (HL) 86

ADD А, (IX +D) DD 86 D

Для команд використовуючих IY регістр, треба поміняти IX на IY і DD на FD.

Підгрупа В. Команди INC.

Команди цієї групи дозволяють додати 1 до регістра, елемента пам'яті або пари регістрів. У всіх випадках прапор перенесення не змінюється.

Мнемоника16-ний код

INC А 3C

INC Н 24

INC L 2C

INC В 04

INC З 0C

INC D 14

INC Е 1C

INC (HL) 34

INC (IX+D) DD 34 D

INC HL 23

INC BC 03

INC DE 13

INC SP 33

INC IX DD 23

INC IY FD 23

Підгрупа С. Команди ADC.

Мнемоника16-ний код

ADC А,+DD CE DD

ADC А, А 8F

ADC А, Н 8C

ADC А, L 8D

ADC А, В 88

ADC А, З 89

ADC А, D 8A

ADC А, Е 8B

ADC А, (HL) 8E

ADC А, (IX+D) DD 8E

ADC А, (IY+D) FD 8E

ADC HL, HL ED 6A

ADC HL, BC ED 4A

ADC HL, DE ED 5A

ADC HL, SP ED 7A

Команди цієї групи дозволяють скласти два числа разом з поточним значенням прапора перенесення. Всі команди цієї групи міняють прапор перенесення. Він скидається, якщо операція ADC не дає переповнення, і встановлюється якщо дає.

Група 7. Команди віднімання.

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

· команда SUB;

· команда DEC. Спеціальний випадок віднімання, коли з числа віднімається 1;

· команда SBC. Значення прапора перенесення віднімається з результату. Всі команди SUB і SBC змінюють прапор перенесення в залежності від того, чи був потрібен двійкова позика. Команда DEC залишає прапор перенесення без зміни.

Група 8. Команди порівняння.

Команди цієї групи используюточень часто у всіх програмах. Вони дозволяють програмісту порівняти значення, що знаходиться в регістрі А, з константою, значенням в регістрах і області пам'яті. Команди виконують операцію віднімання без перенесення, без запам'ятовування результату віднімання і тільки встановлюють прапори в регістрі прапорів. Первинне значення в регістрі А не змінюється. Прапор перенесення встановлюється, як при операціях віднімання. Порівняння, яке > =, скидає прапор перенесення, а < встановлює. Команди цієї групи - команда одинарного порівняння.

Мнемоника16-ний код

CP +DD FE DD

CP А BF

CP Н BC

CP L BD

CP В B8

CP З B9

CP D BA

CP Е BB

CP (HL) BE

CP (IX) +D DD BED

CP (IY) +D FD BED

Група 9. Команди логіки.

Це команди AND, OR, XOR. Вони змінюються до регістра А і іншої заданої змінної. Операція виконується побитно, і 8-бітовий результат повертається в регістр

Логічна операція виконується над двома двійковими цифрами і результат рівний 1, тільки якщо обидва що тестуються біти встановлені. У іншому випадку результуючий біт рівний 0. Командою AND зручно скидати біти 0-7 регістри А. Етот процес називається демаскуванням і дозволяє перевіряти певні біти байта даних.

Мнемоника16-ний код

AND +DD E6

Підгрупа B. Команда OR.

Логічна операція "або" виконується над двома двійковими цифрами, і результат рівний 1, якщо одна або обидві цифри встановлені. У іншому випадку біт результату скинений.

Мнемоника16-ний код

OR +DD E6 DD

Підгрупа C. Команда XOR.

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

Група 10. Команда DJNZ.

Єдина команда в цій групі є однією з самих корисних і що самих широко використовуються в Z80. Робота цієї команди може бути уподібнена циклу FOR-NEXT програми бейсик наступного вигляду: FOR В=Х TO 0 STEP-1:NEXT В

в цьому циклі змінної "B" привласнюється значення X. Затем з кожним проходом циклу вона меншає доти, поки не досягне значення 0. Команда DJNZ використовується подібним же образом.

Група 12. Команда стека.

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

Підгрупа А.PUSH і POP

Ці команди дозволяють програмісту по PUSH зберегти 2 байти даних в машинному стеку, а по РОР-копіювати 2 байти з машинного стека. Ці 2 байти даних повинні копіюватися в суворо певну пару регістрів, але важливо знати, що не проводиться ніякого запису, який вказував би, до якого з двох регістрів який байт даних належить.

Коли виконується команда PUSH, покажчик стека заздалегідь меншає, щоб указати на вільну адресу, і в стек копіюється вміст старшого регістра. Потім покажчик стека меншає повторно, і величина з молодшого регістра копіюється в стек. Протилежні дії має місце під час виконання команди POP.

Підгрупа B. Команди CALL.

Дія команд CALL наступні:

1. Поточне значення лічильника команд, т. е. адреса першого осередку після ADDR, зберігається в стеку. Покажчик стека змінюється як у разі команди PUSH. Старший байт лічильника команд зберігається в стеку над молодшим байтом.

2. Адреса ADDR потім записується в лічильник команд, і виконується програма.

3. По команді RET здійснюється повернення з програми.

Підгрупа C. Команди RET.

По команді RET адреса повернення з машинного стека побайтно відновлюється в лічильнику команд. При цьому покажчик стека двічі модифікується у бік збільшення. Важливо розуміти, що відновлена адреса повернення з машинного стека не обов'язково той, що був на початку вміщений туди командою CALL.

Підгрупа D. Команди RST.

Остання підгрупа команд в цій групі містить спеціальну команду RST або команду "повторний пуск". Ці команди є аналогічні командам CALL, але не вимагають, що адреса визначалася.

Група 13. Команди зсуву.

Набір команд Z80 має велике число команд для зсувів бітів певного байта. Ці команди дуже корисні. Тим більше, що всі вони зсувають біти через прапор перенесення. Зсув байтів вліво подвоює величину, записану в цьому байті (регістрі), старші біти при цьому не втрачаються. Під час зсуву вправо величина ділиться пополам.

Група 14. Команди обробки бітів.

Набір команд Z80 має команди, які дозволяють визначати, встановлювати і скидати певні біти в межах байта, вміщеного в регістр або що знаходиться в пам'яті.

Підгрупа А. Команди BIT.

Вони дозволяють визначати стан певного біта. Команди BIT встановлюють прапор нуль, якщо біт, що використовується скинений, і навпаки.

Підгрупа B. Команда SET.

Ці команди дозволяють встановлювати певний біт, при цьому не один з прапорів не змінюється.

Підгрупа C. Команда RES.

Дана команда скидає певний біт. Прапори не міняються.

Команди підгрупи AUTOMATIC(NON-AUTOMATIC).

LDIR

Це сама поширена команда з цієї групи. Команда буде переміщувати дані, адреса джерела яких міститься в регістровій парі HL, в область пам'яті з адреси, що знаходиться в регістровій парі DE. Число переміщуваних байтів визначається в пара BC. При роботі одиночний байт переміщається з (HL) в (DE). Величина в регістровій парі BC потім меншає, а величина в HL і DE збільшується.

LDDR

Ця команда є такою ж як команда LDIR, за винятком того, що після пересилки кожного байта значення в HL і DE меншають. Тому команда вимагає, що б базова адреса блоку відповідала останній адресі блоку. Місце призначення інформації також повинно відноситься до останньої адреси області пам'яті.

CPIR

Ця команда переглядає певну область пам'яті для пошуку першої наявності еталонної величини. Регістрова пара HL повинна містити базову адресу, ВР-число байтів для дослідження, а регістр А еталонну величину. При роботі байт за адресою HL порівнюється з байтом, що знаходиться в А. Еслі вони не співпали, то BC меншає, а HL збільшується, і порівнюються наступні байти. Так продовжується доти, поки не співпадають байти, або BC не стане рівним 0.

Неавтоматичні команди.

LDI

Виконання цієї команди дасть переміщення одиночного байта даних з адреси записаної в регістровій парі HL, за адресою записаного в регістровій парі DE. Величина в BC меншає.

LDD

Як LDI за винятком того, що величина в HL і DE меншають.

CPI

Виконання цієї команди полягає в порівнянні байта за адресою, визначеній в парі HL, з байтом в регістрі А. Флаг 0 встановлюється, якщо вони співпали, в іншому випадку скидається.

Група 16. Команди введення \ висновку.

У Z80 є вичерпний набір команд, що дозволяють программиступолучать дані від зовнішнього джерела (IN) або видавати дані на периферію (OUT). Є прості, неавтоматичні і автоматичні команди в цій групі. У всіх випадках дані, які передаються через IN і OUT визначають форму 8-мі бітових даних. По команді IN Z80 приймає байти даних з шини даних і копіює їх в заданий регістр. Під час виконання команди IN лінія IORQ активна, так само як і RD. По команді OUT Z80 передає дані із заданого регістра на шину даних, звідти вони поступають на периферійний пристрій. Під час роботи команди OUT лінія IORQ і WR будуть активні. У доповнення до стану RD, WR і IORQ периферійний пристрій буде активізуватися з використанням адреси, вміщеної на адресній шині під час виконання або IN, або OUT команди. Ця адреса вказує конкретний порт і в Z80 являє собою 16- битний адресу.

Група 17. Команди переривання.

EI

При включенні Z80 система маскованого переривання не може перервати виконання команд. Ця ситуація існує доти, поки переривання не будуть дозволені програмістом по команді EI.

DI

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

IM0

Є три типи переривання. Режим 0 вибирається автоматично при включенні або по команді IM0. Цей режим дозволяє периферійним пристроям обмінюватися інформацією з микропроцессорм, програма перезапуску якого повинна слідувати за прийомом маскованого переривання на лінії INT.

IM1

Режим переривання 1 виконується по команді IM1 при виконанні програми ROM монітора. У інших випадках необхідно включити IM1 в початок програми. У цьому режимі перезапуск буде завжди вибиратися з адреси 0038h при прийомі сигналу на лінії INT, тривалість якого відповідає можливості обробки системи маскованого переривання.

RETI

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

RETN

Це команда подібна RETI, але вона застосовна в кінці програми немаскованого переривання.

Група 18. Додаткові команди.

CPL

Являє собою просту команду, яка інвертує вміст регістра А, т. е. вона встановлює скинений біт і скидає встановлений. Основні прапори не змінюються.

NEG

Це команда доповнення до двох регістра, що міститься А, т. е. виконується перетворення А=-А. Ця команда впливає на основні прапори. Прапори знака і 0 залежать від результату. Прапор перенесення буде встановлений, якщо регістр А спочатку був 0.

SCF

Установка прапора перенесення.

CCF

Інверсія прапора перенесення.

HALT

Це спеціальна команда, що примушує мп зупиняти виконання команд, поки не виникає переривання. Отже, при надходженні переривань, команда HALT закінчується. Команда "PAUSE" використовує це, щоб підрахувати кількість 1/50 часткою секунди.

Список Літератури:

МАШИННІ КОДИ видавництво "СОЛОН" 1993 р.