ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

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

     

    Комп'ютерні науки
    Архітектура мікропроцесора 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 регістра користувача. Всі регістри однобайтові, хоча зазвичай використовуються парами. Регістр А називається акумулятором. Акумулятор - основний регістр мікропроцесора при різних операціях з даними. Більшість арифметичних і логічних операцій здійснюється шляхом використання АЛУ і акумулятора. Будь-яка така операція над двома словами даних передбачає розміщення одного з них в акумуляторі, а іншого - в пам'яті або ще в якому-небудь регістрі. Так при складання двох слів, умовно званих А і В і розташованих в акумуляторі і пам'яті відповідно, результуюча сума завантажується в акумулятор, заміщаючи слово А.
    Регістр F - це флагової регістр. Він часто розглядається як набір восьми прапоровим бітів, пов'язаних разом, а не як окремий реєстр. Встановлення прапора відповідає 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. Однобайтових константа зміщення (e).
    Це число А в діапазоні 00-FFh (-128 +127 d). Число вегда представлено в додатковому коде.Те команди, які вимагають за собою однобайтових константу, мають мнемонічний приставку e.Напріме: JP e.
    5. Однобайтових індуксірующая константа зміщення (+ D).
    Це число А в діапазоні 00-FFh, (-128 +127 d) представлено додаткової арифметики. Ті команди, які вимагають за собою однобайтових індексує константу зсуву, мають мнемонічний приставку + D. Наприклад: LD A, (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 A, + DD 3EDD
    LD H, + DD 26DD
    LD L, + DD 2EDD
    LD B, + DD 06DD
    LD C, + DD 0EDD
    LD D, + DD 16DD
    LD E, + DD lEDD
    Кожна з цих команд вимагає два байти пам'яті: один для коду операції, другий для константи. Команди записують у регістр Відповідаю значення, старі значення регістра пропадають.
    Обізнані команди виконують завантаження пари регістрів багатобайтових константами.
    Мнемоніка 16-ний код
    LD HL, + 21 DDDD DD DD
    LD BC, + 01 DDDD DD DD
    LD DE, + 11 DDDD DD DD
    LD IX, + DDDD DD 21 DD DD
    LD IY, + DDDD FD 21 DD DD
    LD SP, + 31 DDDD DD DD
    Рядок команди вимагає 3 або 4 байти в пам'яті. Код операції займає 1 або 2 байти, і 2 байти займає константа. Перший байт константи завантажується в молодший регістровий пари тобто L, C, E, X, Y, P, а другий байт в старший регістр, тобто H, B, D, l, S. Ці команди записують у регістрові пари дані, які часто розглядаються програмістом як багатобайтових адресу, але можуть бути також і багатобайтових числовим значенням і двома окремими однобайтових числовими значеннями.
    Команди цієї групи не змінюють прапорів.
    Група 3. Команди копіювання регістрів і обміну. Існує 59 команд, які виконують копіювання регістрів і реєстрових пар.Еті команди можна розділити на 4 підгрупи.
    Підгрупа А. Команди копіювання типу регістр-регістр. Наступна таблиця дає коди операцій команд, що виконують копіювання вмісту одного регістру в іншій.
    LD LD LD LD LD LD LD
    регістр A, R H, R L, R B, R C, R D, R E, R
    A 7F 67 6F 47 4F 57 5F
    H 7C 64 6C 44 4C 54 5C
    L 7D 65 6D 45 4D 55 5D
    B 78 60 68 40 48 50 58
    C 79 61 69 41 49 51 59
    D 7A 62 6А 42 4A 52 5A
    E 7B 63 6B 43 4B 53 5B
    Жодна з команд, наведених у таблиці, не змінює прапори. Існує крім того 4 команди для I і R регістрів.
    Мнемоніка 16-ний код
    LD A, I ED57
    LD A, R ED5F
    LD I, A ED47
    LD R, A ED4F
    Ці останні команди впливають на прапор переповнення парності.
    Підгрупа В. Команди копіювання типу регістрова пара-регістрова пара
    Існує тільки 3 команди цієї підгрупи. Вони копіюють значення в покажчик стека.
    Мнемоніка 16-ний код
    LD SP, HL F9
    LD SP, IX DD F9
    LD SP, IY FDF9
    Ці команди не змінюють вміст прапорів. Зауважимо, якщо вміст регістровий пари треба копіювати в іншу реєстрову пару і ці команди не підходять, необхідно виконати дві команди копіювання регістр-регістр. Наприклад, немає команди LD HL, DE, і її замінюють, використовуючи LD H, 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 викликає переключення регістрів H, L, B, C, D, E на регістри H ', L', B ', C', D ', E'. Команди EXAF, A'F, як випливає з мнемоніки, перемикають рег. A і F на A 'F. Альтернативні регістри часто використовуються для зберігання адрес і даних. Вміщені в альтернативні регістри ці значення зберігаються від спотворення і можуть бути легко і просто перетворилися.
    Група 4.Команди завантаження регістрів з пам'яті.
    У систему Z80 входить багато команд, що дозволяють знаходити дані в пам'яті і потім завантажувати їх у регістри. Усі ці команди вимагають, щоб програміст вказав адресу або кілька адрес у пам'яті, звідки дані повинні бути скопійовані в регістр-одержувач даних.
    Команди цієї групи краще розглядати як команди трьох підгруп відповідно до методу адресації. Види адресації:
    * Непряма-багатобайтових адреса вже розміщений в адресній регістровий парі;
    * Безпосередня-дійсний адреса вказана в двох байтах слідом за кодом операції;
    * Індексний-адреса даних повинен бути обчислений шляхом складання значення зміщення D з основною адресою, вже сприяння зЕржан в регістровий парі IX або IY.
    Підгрупа A. Команди, що використовують безпосередню адресацію.
    Мнемоніка 16-ний код
    LD A, (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 E, (IX + D) DD 5E D
    Для команд, що використовують пару IY, треба змінити IX на IY і DD на FD. Жодна з команд цієї групи не міняє прапори.
    Група 5.Команди запису в пам'ять вмісту регістра або константи.
    Зазвичай команди цієї групи виконують операції, протилежні тим, які роблять команди групи 4.Команди дозволяють вміст регістрів переписувати в пам'ять або записувати туди константи. Ці команди краще розглянути на три групи.
    Підгрупа A. Команди безпосередньої адресації.
    Мнемоніка 16-ний код
    LD (ADDR), A 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), A 77
    LD (BC), A 02
    LD (DE), A 12
    LD (HL), X 74
    LD (HL), L 75
    LD (HL), B 70
    LD (HL), C 71
    LD (HL), D 72
    LD (HL), E 73
    LD (HL), + DD 36DD
    Підгрупа C. Команди індексної адресації.
    Мнемоніка 16-ний код
    LD (IX + D), A DD 77 D
    LD (IX + D), H DD 74 D
    LD (IX + D), L DD 75 D
    LD (IX + D), B DD 70 D
    LD (IX + D), C DD 71 D
    LD (IX + D), E 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 A, + DD C6 DD
    ADD A, A 87
    ADD A, H 84
    ADD A, L 85
    ADD A, B 80
    ADD A, C 81
    ADD A, 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 A, E 83
    ADD A, (HL) 86
    ADD A, (IX + D) DD 86 D
    Для команд використовують IY регістр, треба поміняти IX на IY і DD на FD.
    Підгрупа В. Команди INC.
    Команди цієї групи дозволяють додати 1 до регістру, комірці пам'яті або парі регістрів. У всіх випадках прапор переносу не змінюється.
    Мнемоніка 16-ний код
    INC A 3C
    INC H 24
    INC L 2C
    INC B 04
    INC C 0C
    INC D 14
    INC E 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 A, + DD CE DD
    ADC A, A 8F
    ADC A, H 8C
    ADC A, L 8D
    ADC A, B 88
    ADC A, C 89
    ADC A, D 8A
    ADC A, E 8B
    ADC A, (HL) 8E
    ADC A, (IX + D) DD 8E
    ADC A, (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.Команди порівняння.
    Команди цієї групи використовують дуже часто у всіх програмах. Вони дозволяють програмісту порівняти значення, що знаходиться в регістрі A, з константою, значенням в регістрах і області пам'яті. Команди виконують операцію віднімання без переносу, без запам'ятовування результату віднімання і тільки встановлюють прапори в регістрі прапорів. Первинне значення в регістрі А не змінюється. Прапор переносу встановлюється, як при операціях віднімання. Порівняння, яке> =, скидає прапор переносу, а <встановлює. Команди цієї групи-команда одинарного порівняння. >
    Мнемоніка 16-ний код
    CP + DD FE DD
    CP A BF
    CP H BC
    CP L BD
    CP B B8
    CP C B9
    CP D BA
    CP E BB
    CP (HL) BE
    CP (IX) + D DD BED
    CP (IY) + D FD BED
    Група 9.Команди логіки.
    Це команди AND, OR, XOR.Оні переміняють до регістру А та іншої заданої змінної. Операція виконується побітне, і 8-бітовий результат повертається в регістр А.
    Підгрупа А. Команда AND.
    Логічна операція виконується над двома двійковими цифрами і результат дорівнює 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 B = X TO 0 STEP-1: NEXT B
    в цьому циклі змінної "B" присвоюється значення X. Потім з кожним проходом циклу вона зменшується до тих пір, поки не досягне значення 0.Команда DJNZ використовується подібним же чином.
    Група 12. Команда стека.
    У більшості програм машинних кодів здійснюється активне використання машинного стека: програмістом як місце де можна зберігати дані, мікропроцесором-для збереження адрес повернення. Команда, що утворюють цю групу, можна розділити на дві підгрупи для користувача і три підгрупи для мікропроцесора.
    Підгрупа А. PUSH і POP
    Ці команди дозволяють програмісту по PUSH зберегти 2 байти даних в машинному стеку, а по POP-копіювати 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 повинна містити базова адреса, BC-число байтів для дослідження, а регістр А еталонну величину. При роботі байт за адресою 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 р.
    12
    Мікропроцесор Z80 його структура і система команд.


         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status