Інформація про навчальний заклад

ВУЗ:
Інші
Інститут:
Не вказано
Факультет:
Електроніка
Кафедра:
Не вказано

Інформація про роботу

Рік:
2011
Тип роботи:
Лабораторна робота
Предмет:
Мікропроцесори

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки, молоді та спорту України Прикарпатський національний університет імені Василя Стефаника Кафедра радіофізики і електроніки Лабораторна робота №4 Логічні команди восьмирозрядного мікропроцесора КР580ВМ80 (Intel 8080). Івано-Франківськ – 2011 1. Мета роботи Вивчити основні типи логічних команд та послідовність їх виконання восьмирозрядним мікропроцесором, навчитися створювати програми з їх використанням. 2. Обладнання Програма - емулятор мікропроцесорної системи на базі одно-кристального КР580ВМ80. 3. Короткі відомості з теорії Слово "Комп'ютер" в перекладі означає "Обчислювач". Однак більшість операцій над числами, які він виконує, відносяться до логічних, а не до математичних. Тому крім широкого набору математичних команд, за допомогою яких здійснюються математичні операції додавання та віднімання, в мікропроцесорі КР580ВМ80 також передбачено і ряд логічних команд. До них відносяться команди "І", "АБО", "ВИКЛЮЧНЕ АБО" та "ЗАПЕРЕЧЕННЯ" ("ІНВЕРСІЯ"), а також команда "ПОРІВНЯННЯ", за допомогою якої здійснюються різноманітні перевірки. Окремо слід виділити команди простого та циклічного зсуву, які використовуються для реалізації операцій "МНОЖЕННЯ" і "ДІЛЕННЯ" та деяких інших цілей. 3.1. Власне логічні команди. Оскільки логічні функції завжди виконуються над однобітними числами, які можуть набувати значення 0 та 1 (хиба та істина), тому логічні команди оперують не безпосередньо з числами, записаними в регістри чи пам'ять, а з окремими бітами цих чисел. Всі логічні команди мікропроцесора КР580ВМ80 оперують з 8-ми розрядними числами побітно. Це означає, що кожна з логічних команд насправді реалізує 8 окремих незалежних між собою логічних функцій над однаковими розрядами операндів. До різних розрядів операндів ніякі логічні команди не застосовуються. Один із операндів логічних команд завжди міститься в акумуляторі А. Другий із операндів може міститися в другому байті команди (безпосередня адресація) або в одному із регістрів загального призначення (регістрова адресація) або в комірці пам'яті (непряма адресація). Адреса комірки пам'яті повинна бути записана в регістровій парі HL. Команда інверсії оперує тільки з вмістом акумулятора. Результат виконання команд завжди записується в акумулятор, тому значення першого операнда буде втрачене, якщо не передбачити попереднього його збереження. Результат виконання логічних команд впливає тільки на прапорці нуля, знаку та парності і не впливають на прапорці простого та додаткового перенесення, оскільки перенесення між розрядами відноситься тільки до арифметичних команд. 3.1.1. Команди порозрядного "І". Виконання команди "І" продемонстровано на прикладах 1 і 2. Приклад 1.  В даному випадку команда "І" реалізує такі функції: X7 & Y7 = 1; X6 & Y6 = 0; X5 & Y5 = 1; X4 & Y4 = 1; X3 & Y3 = 0; X2 & Y2 = 0; X1 & Y1 = 0; X0 & Y0 = 0. Цей приклад демонструє одне із типових застосувань команди "І", яке називається порозрядним маскуванням. Сутність його полягає в виділенні окремих бітів багаторозрядного числа для їхнього наступного аналізу. Це позволяє використовувати результат такого виділення для виконання певних арифметичних чи логічних команд, а також для організації умовних переходів. В даному прикладі із числа Х відповідно до маски - числа Y виділено значення перших чотирьох бітів. В якості маски може бути використаний будь-який набір бітів. На прикладі 2 показано виділення наймолодшого нульового та найстаршого сьомого біта числа. Якщо необхідно здійснити перехід на підпрограму додаткової обробки даних в випадку рівності цих бітів числа нулю, то достатньо перевірити результат X & Y на нуль. Найчастіше маскування здійснюється за допомогою команди ANI, B2, де другий байт команди B2 - маска. Приклад 2.  Операція порозрядного "І" реалізована за допомогою таких 9-ти команд: 1 Порозрядне "І" числа та акумулятора  2 безпосередня  3 ANI, B2  4 А & B2 → А  5 E6h 346q  6 Команда займає 2 байти пам'яті, виконується за 2 цикли, 7 тактів.  7 Під час виконання команди над кожним із розрядів двійкових чисел в акумуляторі А та другому байті команди здійснюється логічне "І". Результат записується у відповідний розряд акумулятора А.  8 Прапорці стану С та АС встановлюються в нуль, решта у відповідності з результатом операції.   1 Порозрядне "І" регістра та акумулятора  2 регістрова  3 ANA r  4 А & r → А  5 A0h-A5h, A7h 24Sq (S ≠ 6)  6 Команда займає 1 байт пам'яті, виконується за 1 цикл, 4 такти.  7 Під час виконання команди над кожним із розрядів двійкових чисел в акумуляторі А та регістрі за номером S здійснюється логічне "І". Результат записується у відповідний розряд акумулятора А.  8 Прапорці стану С та АС встановлюються в нуль, решта у відповідності з результатом операції.  Номер S береться з Табл.1. Лабораторна робота 2. 1 Порозрядне "І" комірки пам'яті та акумулятора  2 непряма  3 ANA М  4 А & М(H, L) → А  5 A6h 246q  6 Команда займає 1 байт пам'яті, виконується за 2 цикли, 7 тактів.  7 Під час виконання команди над кожним із розрядів двійкових чисел в акумуляторі А та комірці пам'яті, адреса якої міститься в регістровій парі HL, здійснюється логічне "І". Результат записується у відповідний розряд акумулятора А.  8 Прапорці стану С та АС встановлюються в нуль, решта у відповідності з результатом операції.  Перед виконанням команди ANA, М необхідно завантажити пару HL адресою комірки. 3.1.2. Команди порозрядного "АБО". Виконання команди "АБО" продемонстровано на прикладі 3. Біт певного розряду результату дорівнює 1, якщо таке значення має хоча б один із операндів у відповідному розряді. Я видно з прикладу 3, команда порозрядного "АБО" також може використовуватись для порозрядного маскування. Якщо біт маски рівний нулю, то відповідний біт акумулятора залишається без змін. В випадку, якщо біти маски рівні 1, значення відповідних бітів початкового значення акумулятора блокуються, тобто приймають одиничні значення. В залежності від результату, який необхідно досягнути, використовують маскування по "І" чи маскування по "АБО". Приклад 3.  Операція порозрядного "І" реалізована за допомогою таких 9-ти команд: 1 Порозрядне "АБО" числа та акумулятора  2 безпосередня  3 ORI, B2  4 А  B2 → А  5 F6h 366q  6 Команда займає 2 байти пам'яті, виконується за 2 цикли, 7 тактів.  7 Під час виконання команди над кожним із розрядів двійкових чисел в акумуляторі А та другому байті команди здійснюється логічне "АБО". Результат записується у відповідний розряд акумулятора А.  8 Прапорці стану С та АС встановлюються в нуль, решта у відповідності з результатом операції.   1 Порозрядне "АБО" регістра та акумулятора  2 регістрова  3 ORA r  4 А  r → А  5 B0h-B5h, B7h 26Sq (S ≠ 6)  6 Команда займає 1 байт пам'яті, виконується за 1 цикл, 4 такти.  7 Під час виконання команди над кожним із розрядів двійкових чисел в акумуляторі А та регістрі за номером S здійснюється логічне "АБО". Результат записується у відповідний розряд акумулятора А.  8 Прапорці стану С та АС встановлюються в нуль, решта у відповідності з результатом операції.  Номер S береться з Табл.1. Лабораторна робота 2. 1 Порозрядне "АБО" комірки пам'яті та акумулятора  2 непряма  3 ORA М  4 А  М(H, L) → А  5 B6h 266q  6 Команда займає 1 байт пам'яті, виконується за 2 цикли, 7 тактів.  7 Під час виконання команди над кожним із розрядів двійкових чисел в акумуляторі А та комірці пам'яті, адреса якої міститься в регістровій парі HL, здійснюється логічне "АБО". Результат записується у відповідний розряд акумулятора А.  8 Прапорці стану С та АС встановлюються в нуль, решта у відповідності з результатом операції.  Перед виконанням команди ORA, М необхідно завантажити пару HL адресою комірки. 3.1.3. Команди порозрядного "Виключне АБО". Функція "Виключне АБО" задається у відповідності з таблицею істинності: А В А  В  0 0 0  0 1 1  1 0 1  1 1 0  Іншими словами функція "Виключне АБО" реалізує операцію додавання по модулю однорозрядних чисел А та В (1+1=2; 2 mod 2 = 0). Команда "Виключне АБО" здійснює порозрядне виконання функції "Виключне АБО" над відповідними розрядами операндів. Виконання команди "Виключне АБО" продемонстровано на прикладах 4 та 5. Приклад 4.  Приклад 5.  Наведені приклади ілюструють один із широко використовуваних способів застосування команди "Виключне АБО" - використання її для здійснення перевірок на співпадіння окремих бітів операндів. Якщо відповідні розряди акумулятора та маски співпадають, то в такому ж розряді результату встановлюється значення 0, в випадку неспівпадіння встановлюється 1. Як частковий випадок можна використовувати команду "Виключне АБО" для перевірки співпадіння двох чисел (приклад 5). Нульове значення результату буде свідчити про таке співпадіння. Ще один спосіб використання команди "Виключне АБО" - для обнулення акумулятора А (приклад 5). Мікропроцесор КР580ВМ86 не має команд очищення чи скидання акумулятора. Для цього достатньо виконати команду XRA А, тобто здійснити порозрядне "Виключне АБО" над акумулятором, та другим операндом, яким також є акумулятор. Оскільки ці числа однакові, в акумулятор буде записано число 0 в усі розряди. Звісно, можна завантажити акумулятор числом 00h, за допомогою команди MVI A, 00h, однак ця команда займає в пам'яті 2 байти, виконується за 2 цикли та 7 тактів в той час як команда XRA А займає 1 байт та виконується за 1 цикл та 4 такти. Операція порозрядного "Виключне АБО" реалізована за допомогою таких 9-ти команд: 1 Порозрядне "Виключне АБО" числа та акумулятора  2 безпосередня  3 XRI, B2  4 А  B2 → А  5 EEh 356q  6 Команда займає 2 байти пам'яті, виконується за 2 цикли, 7 тактів.  7 Під час виконання команди над кожним із розрядів двійкових чисел в акумуляторі А та другому байті команди здійснюється логічне "Виключне АБО". Результат записується у відповідний розряд акумулятора А.  8 Прапорці стану С та АС встановлюються в нуль, решта у відповідності з результатом операції.   1 Порозрядне "Виключне АБО" регістра та акумулятора  2 регістрова  3 XRA r  4 А  r → А  5 A8h-ADh, AFh 25Sq (S ≠ 6)  6 Команда займає 1 байт пам'яті, виконується за 1 цикл, 4 такти.  7 Під час виконання команди над кожним із розрядів двійкових чисел в акумуляторі А та регістрі за номером S здійснюється логічне "Виключне АБО". Результат записується у відповідний розряд акумулятора А.  8 Прапорці стану С та АС встановлюються в нуль, решта у відповідності з результатом операції.  Номер S береться з Табл.1. Лабораторна робота 2. 1 Порозрядне "Виключне АБО" комірки пам'яті та акумулятора  2 непряма  3 XRA М  4 А  М(H, L) → А  5 AEh 256q  6 Команда займає 1 байт пам'яті, виконується за 2 цикли, 7 тактів.  7 Під час виконання команди над кожним із розрядів двійкових чисел в акумуляторі А та комірці пам'яті, адреса якої міститься в регістровій парі HL, здійснюється логічне "Виключне АБО". Результат записується у відповідний розряд акумулятора А.  8 Прапорці стану С та АС встановлюються в нуль, решта у відповідності з результатом операції.  Перед виконанням команди XRA, М необхідно завантажити пару HL адресою комірки. 3.1.4. Команда порозрядного "ЗАПЕРЕЧЕННЯ". Приклад 6. демонструє виконання команди порозрядного "ЗАПЕРЕЧЕННЯ": Приклад 6.  Одним із застосувань команди "ЗАПЕРЕЧЕННЯ" (інверсії) є використання її для отримання оберненого, а також доповненого коду числа, що є необхідним для програмної реалізації віднімання багаторозрядних чисел. Команда "ЗАПЕРЕЧЕННЯ" може використовуватись в комбінації з командами "І", "АБО" та "Виключне АБО". В такому випадку будуть реалізовані команди "І-НЕ", "АБО-НЕ" та "Виключне АБО-НЕ". Команда порозрядного "ЗАПЕРЕЧЕННЯ" всього одна: 1 Порозрядна інверсія акумулятора  2 регістрова  3 CMA  4  → А  5 2Fh 057q  6 Команда займає 1 байт пам'яті, виконується за 1 цикл, 4 такти.  7 Під час виконання команди кожен із розрядів двійкового числа в акумуляторі А змінює своє значення на протилежне. Результат записується у відповідний розряд акумулятора А.  8 Виконання команди не впливає на регістр стану.   3.1.5. Команди порозрядного "Порівняння". Часто виникає необхідність порівняння двох чисел на предмет їх співпадіння, або встановити, яке з них більше чи менше. З попередніх прикладів видно, що співпадіння можна перевірити за допомогою команди "Виключне АБО". Такий спосіб перевірки має той недолік, що в результаті порівняння буде втрачене значення акумулятора, оскільки один із операндів повинен бути записаний в акумулятор і туди ж записується результат виконання команди. Якщо цей операнд потрібно використовувати далі в програмі, то його необхідно запам'ятати перед виконанням команди "Виключне АБО". А це приводить до додаткових команд програми. Співпадіння можна перевірити також за допомогою команди "Віднімання". В такому випадку від числа, яке перевіряють і яке записане в акумуляторі, віднімають контрольне число. Якщо ці числа рівні, то в акумулятор буде записано 0 в усі розряди, а прапорець нуля встановлено в 1. Якщо контрольне число більше, то в 1 буде встановлено значення прапорця перенесення, оскільки відбудеться запозичення в старший розряд. Значення прапорців Z та C можна використати як ознаку "співпадіння", "менше" чи "більше". Таким чином команда "Віднімання" має більш широкі можливості в порівнянні з командою "Виключне АБО". Однак їй притаманний такий ж недолік, а саме втрата значення акумулятора А. Від цього недоліку вільна команди "Порівняння". Виконання цих команд аналогічне виконанню команди "Віднімання", однак результат віднімання не завантажується в акумулятор. Дані команди впливають виключно на прапорці регістра стану. Команди "Порівняння" використовують звичайні способи адресації другого операнда: безпосередню, регістрова та непряму. Всього команд"Порівняння" є 9: 1 Порівняння числа та акумулятора  2 безпосередня  3 CPI, B2  4 А - B2 → регістр стану  5 FEh 376q  6 Команда займає 2 байти пам'яті, виконується за 2 цикли, 7 тактів.  7 Під час виконання команди від значення акумулятора А віднімається значення другого байту команди. Результат віднімання впливає тільки на значення прапорців регістра стану. Значення акумулятора не змінюється.  8 Якщо А рівне В2, то Z=1. Якщо А < В2, то C=1, решта прапорців у відповідності з результатом операції віднімання.   1 Порівняння регістра та акумулятора  2 регістрова  3 CMP r  4 А - r → регістр стану  5 В8h-ВDh, BFh 27Sq (S ≠ 6)  6 Команда займає 1 байт пам'яті, виконується за 1 цикл, 4 такти.  7 Під час виконання команди від значення акумулятора А віднімається значення, що міститься в регістрі за номером S. Результат віднімання впливає тільки на значення прапорців регістра стану. Значення акумулятора та регістру не змінюються.  8 Якщо А рівне r, то Z=1. Якщо А < r, то C=1, решта прапорців у відповідності з результатом операції віднімання.  Номер S береться з Табл.1. Лабораторна робота 2. 1 Порівняння комірки пам'яті та акумулятора  2 непряма  3 CMP М  4 А - М(H, L) → регістр стану  5 BEh 276q  6 Команда займає 1 байт пам'яті, виконується за 2 цикли, 7 тактів.  7 Під час виконання команди від значення акумулятора А віднімається значення комірки пам'яті, адреса якої міститься в регістровій парі HL. Результат віднімання впливає тільки на значення прапорців регістра стану. Значення акумулятора та комірки пам'яті не змінюються.  8 Якщо А рівне М(H, L), то Z=1. Якщо А < М(H, L), то C=1, решта прапорців у відповідності з результатом операції віднімання.  Перед виконанням команди CMP, М необхідно завантажити пару HL адресою комірки. 3.1.6. Команди зміни прапорця перенесення. В деяких спеціальних випадках необхідно мати можливість явним чином (без урахування результату арифметичних чи логічних команд) змінити певні прапорці регістру стану. В мікропроцесорі КР580ВМ80 такий доступ забезпечено тільки до прапорця перенесення. Існують дві команди: встановлення прапорця в 1 та інверсія поточного його значення: 1 Встановлення прапорця перенесення  2 регістрова  3 STC  4 1 → C  5 37h 067q  6 Команда займає 1 байт пам'яті, виконується за 1 цикл, 4 такти.  7 Під час виконання команди розряд регістра стану, який відповідає прапорцю перенесення встановлюється в 1.  8 Виконання команди не змінює попереднього значення впливає на регістр стану.   1 Інверсія прапорця перенесення  2 регістрова  3 СМC  4  → C  5 3Fh 077q  6 Команда займає 1 байт пам'яті, виконується за 1 цикл, 4 такти.  7 Під час виконання команди розряд регістра стану, який відповідає прапорцю перенесення міняє своє значення на протилежне  8 Виконання команди не змінює попереднього значення впливає на регістр стану.   Сказане вище не означає, що не можна, наприклад програмним чином, змінити значення також і інших прапорців. Для цього необхідно завантажити з пам'яті в мікропроцесор слово стану PSW. Для цього використовуються команди роботи зі стеком, які розглядаються в наступних лабораторних роботах. 3.1.7. Команди циклічного зсуву. За допомогою команди циклічного зсуву вліво всі дані, що містяться в акумуляторі А, зсуваються на одну позицію вліво, тобто значення кожного розряду переміщується в позицію сусіднього зліва розряду. Значення старшого розряду переміщується в прапорець перенесення С та молодший розряд акумулятора:  Таке переміщення можна описати формулою: А×2+А/128 → А, А7 → С оскільки зсув вліво еквівалентний множенню на 2, а перенесення зі старшого в молодший розряд еквівалентне діленню на 128 (переміщенню на 7 розрядів вправо) з відкиданням дробової частини. Подібним чином здійснюється команда циклічного зсуву вправо:  Таке переміщення описується формулою: А/2+А×128 → А, А0 → С 1 Циклічний зсув акумулятора вліво (вправо)  2 регістрова  3 RLC (RRС)  4 2×А + А/128→ А (1/2×А + 128×А→ А)  5 07h (0Fh) 007q (017q)  6 Команда займає 1 байт пам'яті, виконується за 1 цикл, 4 такти.  7 Під час виконання команди розряди акумулятора А зсуваються вліво (вправо) на один розряд. Значення прапорця перенесення С і молодшого (старшого) розряду акумулятора замінюються значенням старшого (молодшого) розряду акумулятора  8 Виконання команди змінює значення тільки прапорця перенесення.   Команда циклічного зсуву вліво з урахуванням перенесення відрізняється від попередньої команди тим, що значення старшого розряду заноситься в прапорець перенесення С, а попереднє значення прапорця поміщається в молодший розряд акумулятора:  Таке переміщення описується, як А×2+С → А, А7 → С В випадку циклічного зсуву вправо аналогічно маємо:  та А/2+С×128 → А, А0 → С. 1 Циклічний зсув акумулятора вліво (вправо) з урахуванням перенесення.  2 регістрова  3 RАL (RАR)  4 2×А + С→ А (1/2×А + 128×С→ А)  5 17h (1Fh) 027q (037q)  6 Команда займає 1 байт пам'яті, виконується за 1 цикл, 4 такти.  7 Під час виконання команди розряди акумулятора А зсуваються вліво (вправо) на один розряд. Значення прапорця перенесення С заноситься в молодший (старший) розряд акумулятора. Значення старшого (молодшого) розряду акумулятора заноситься в прапорець перенесення С.  8 Виконання команди змінює значення тільки прапорця перенесення.   Команди циклічного зсуву використовуються для реалізації множення двійкових чисел. Наприклад, множення двох 8-ми розрядних чисел можна представити як послідовність виконання накопичення числа в 16 розрядному регістрі в результаті послідовного виконання операцій додавання та зсуву. 0 1 1 0 1 0 1 0 1 0 0 1 0 1 0 1 ----------------- 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 ----------------------------------- 0 1 1 1 1 0 1 1 0 1 1 0 0 1 0 Для зсуву чисел, розрядність яких перевищує 8, спеціальних команд немає, одна їх можна реалізувати програмно. Для цього можна до кожного із байтів, які містять число, починаючи з молодшого застосувати команду циклічного зсуву вліво з перенесенням. В такому випадку старший біт молодшого байту буде занесено в прапорець перенесення, а наступною командою буде поміщено в молодший біт наступного байту. Для того, щоби в молодший біт молодшого байту не було занесено значення прапорця перенесення, можна попередньо встановити прапорець перенесення в 1 командою STC, а потім інвертувати його до значення 0 командою СМC. Інший спосіб полягає в маскуванні молодшого біту за допомогою команди "І", наприклад ANI, FEh. 4. Порядок виконання експериментів. Запустіть емулятор. Експеримент 1. Виконання простих команд "І", "АБО", "Заперечення", "Виключне АБО". Виконайте наведені нижче приклади програм в потактовому режимі. Зафіксуйте, скільки циклів та тактів займає виконання кожної із програм. Зафіксуйте значення прапорців після виконання кожної із команд. На прикладі команд "І" та "АБО" продемонстровано маскування чисел, а на прикладі команди "АБО" також і способи адресації другого операнду. 1. Маскування молодших чотирьох бітів. Над числами СAh та F0h виконати порозрядне "І". Введіть таку програму: Адреса комірки ОЗП код команди Мнемонічний запис команди Команда мікропроцесора  0000 3Е MVI А, d8 дані наступної комірки ОЗП → регістр А  0001 СA JZ adr дані СAh → регістр А  0002 06 MVI В, d8 дані наступної комірки ОЗП → регістр B  0003 F0 RP дані F0h → регістр В  0004 A0 ANA B А & В → А  - - - -   2. Виділення молодшого біта числа. Над числами СAh та 01h виконати порозрядне "І". Адреса комірки ОЗП код команди Мнемонічний запис команди Команда мікропроцесора  0000 3Е MVI А, d8 дані наступної комірки ОЗП → регістр А  0001 СA JZ adr дані СAh → регістр А  0002 06 MVI В, d8 дані наступної комірки ОЗП → регістр B  0003 01 LXI B, d16 дані 01h → регістр В  0004 A0 ANA B А & В → А  - - - -   3. Над числами BAh та 0Fh виконати порозрядне "АБО" використовуючи безпосередню адресацію. Введіть таку програму: Адреса комірки ОЗП код команди Мнемонічний запис команди Команда мікропроцесора  0000 3Е MVI А, d8 дані наступної комірки ОЗП → регістр А  0001 BA CMP D дані BAh → регістр А  0002 F6 ORI, d8 А  значення наступного байту програми → А  0003 0F RRC дані 0Fh  - - - -   4. Над числами BAh та 0Fh виконати порозрядне "АБО" використовуючи регістрову адресацію. Введіть таку програму: Адреса комірки ОЗП код команди Мнемонічний запис команди Команда мікропроцесора  0000 3Е MVI А, d8 дані наступної комірки ОЗП → регістр А  0001 BA CMP D дані BAh → регістр А  0002 06 MVI В, d8 дані наступної комірки ОЗП → регістр В  0003 0F RRC дані 0Fh → регістр В  0004 В0 ORA B А  B → А  - - - -   5. Над числами BAh та 0Fh виконати порозрядне "АБО" використовуючи непряму адресацію. Попередньо задайте: H = 00h; L = 10h; M(0010) = 0F. Введіть таку програму: Адреса комірки ОЗП код команди Мнемонічний запис команди Команда мікропроцесора  0000 3Е MVI А, d8 дані наступної комірки ОЗП → регістр А  0001 BA CMP D дані BAh → регістр А  0002 B6 ORA M А  M(HL) → А  - - - -   6. Над числом A3h виконати порозрядне "Заперечення". Введіть таку програму: Адреса комірки ОЗП код команди Мнемонічний запис команди Команда мікропроцесора  0000 3Е MVI А, d8 дані наступної комірки ОЗП → регістр А  0001 A3 ANA E дані A3h → регістр А  0002 2F CMA  → А  - - - -   7. Над числами BAh та 3Аh виконати порозрядне "Виключне АБО" використовуючи регістрову адресацію. Введіть таку програму: Адреса комірки ОЗП код команди Мнемонічний запис команди Команда мікропроцесора  0000 3Е MVI А, d8 дані наступної комірки ОЗП → регістр А  0001 BA CMP D дані BAh → регістр А  0002 16 MVI D, d8 дані наступної комірки ОЗП → регістр D  0003 3A LDA adr дані 3Ah → регістр D  0004 AA XRA D А  D → А  - - - -   8. Перевірка співпадіння чисел. Перевірити, чи в акумуляторі дійсно знаходиться число BBh, виконавши порозрядне "Виключне АБО". Введіть таку програму: Адреса комірки ОЗП код команди Мнемонічний запис команди Команда мікропроцесора  0000 3Е MVI А, d8 дані наступної комірки ОЗП → регістр А  0001 ВВ CMP E дані BBh → регістр А  0002 EЕ XRI, d8 А  значення наступного байту програми → А  0003 BB CMP E дані BBh  - - - -   9. Обнулення акумулятора виконанням порозрядного "Виключне АБО". Введіть таку програму: Адреса комірки ОЗП код команди Мнемонічний запис команди Команда мікропроцесора  0000 3Е MVI А, d8 дані наступної комірки ОЗП → регістр А  0001 5F MOV E, A дані 5Fh → регістр А  0002 AF XRA A А  A → А  - - - -   Зробіть висновки стосовно кожної із використаних функцій. Експеримент 2. Вивчення команд порівняння чисел. Особливу увагу звертайте на значення прапорців регістру стану після виконання команди порівняння. 1. Порівняти число BAh з 0Fh використовуючи безпосередню адресацію. Введіть таку програму: Адреса комірки ОЗП код команди Мнемонічний запис команди Команда мікропроцесора  0000 3Е MVI А, d8 дані наступної комірки ОЗП → регістр А  0001 BA CMP D дані BAh → регістр А  0002 FE CPI, d8 А - значення наступного байту програми → регістр стану  0003 0F RRC дані 0Fh  - - - -   2. Порівняти число 0Fh з BAh використовуючи регістрову адресацію. Введіть таку програму: Адреса комірки ОЗП код команди Мнемонічний запис команди Команда мікропроцесора  0000 3Е MVI А, d8 дані наступної комірки ОЗП → регістр А  0001 0F RRC дані 0Fh → регістр А  0002 06 MVI В, d8 дані наступної комірки ОЗП → регістр В  0003 BA CMP D дані BAh → регістр В  0004 В8 CMP B А - B → регістр стану  - - - -   3. Порівняти числа 7Ah та 7Аh використовуючи непряму адресацію. Попередньо задайте: H = 00h; L = 10h; M(0010) = 7А. Введіть таку програму: Адреса комірки ОЗП код команди Мнемонічний запис команди Команда мікропроцесора  0000 3Е MVI А, d8 дані наступної комірки ОЗП → регістр А  0001 7A MOV A, D дані 7Ah → регістр А  0002 BE CMP M А - M(HL) → регістр стану  - - - -   Зробіть висновки. Експеримент 3. Вивчення команд циклічного перенесення. Використання їх для реалізації множення двійкових чисел.
Антиботан аватар за замовчуванням

03.03.2013 11:03-

Коментарі

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

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!