37682

Логічні команди восьмирозрядного мікропроцесора КР580ВМ80 (Intel 8080)

Лабораторная работа

Информатика, кибернетика и программирование

До них відносяться команди І АБО ВИКЛЮЧНЕ АБО та ЗАПЕРЕЧЕННЯ ІНВЕРСІЯ а також команда ПОРІВНЯННЯ за допомогою якої здійснюються різноманітні перевірки. Окремо слід виділити команди простого та циклічного зсуву які використовуються для реалізації операцій МНОЖЕННЯ і ДІЛЕННЯ та деяких інших цілей. Власне логічні команди.

Украинкский

2013-09-25

394 KB

7 чел.

Міністерство освіти і науки, молоді та спорту України

Прикарпатський національний університет

імені Василя Стефаника

Кафедра радіофізики і електроніки

Лабораторна робота №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

Якщо А рівне М(HL), то Z=1. Якщо А М(HL), то 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

MVI А, d8

дані наступної комірки ОЗП → регістр А

0001

СA

JZ adr

дані СAh → регістр А

0002

06

MVI В, d8

дані наступної комірки ОЗП → регістр B

0003

F0

RP

дані F0h → регістр В

0004

A0

ANA B

А & В → А

-

-

-

-

2. Виділення молодшого біта числа. Над числами СAh та 01h виконати порозрядне "І".

Адреса комірки ОЗП

код команди

Мнемонічний запис команди

Команда мікропроцесора

0000

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

MVI А, d8

дані наступної комірки ОЗП → регістр А

0001

BA

CMP D

дані BAh → регістр А

0002

F6

ORI, d8

А  значення наступного байту програми → А 

0003

0F

RRC

дані 0Fh

-

-

-

-

4. Над числами BAh та 0Fh виконати порозрядне "АБО" використовуючи регістрову адресацію.

Введіть таку програму:

Адреса комірки ОЗП

код команди

Мнемонічний запис команди

Команда мікропроцесора

0000

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

MVI А, d8

дані наступної комірки ОЗП → регістр А

0001

BA

CMP D

дані BAh → регістр А

0002

B6

ORA M

А  M(HL) → А

-

-

-

-

6Над числом A3h виконати порозрядне "Заперечення".

Введіть таку програму:

Адреса комірки ОЗП

код команди

Мнемонічний запис команди

Команда мікропроцесора

0000

MVI А, d8

дані наступної комірки ОЗП → регістр А

0001

A3

ANA E

дані A3h → регістр А

0002

2F

CMA

 → А

-

-

-

-

7. Над числами BAh та 3Аh виконати порозрядне "Виключне АБО" використовуючи регістрову адресацію.

Введіть таку програму:

Адреса комірки ОЗП

код команди

Мнемонічний запис команди

Команда мікропроцесора

0000

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

MVI А, d8

дані наступної комірки ОЗП → регістр А

0001

ВВ

CMP E

дані BBh → регістр А

0002

EЕ

XRI, d8

А  значення наступного байту програми → А

0003

BB

CMP E

дані BBh

-

-

-

-

9Обнулення акумулятора виконанням порозрядного "Виключне АБО".

Введіть таку програму:

Адреса комірки ОЗП

код команди

Мнемонічний запис команди

Команда мікропроцесора

0000

MVI А, d8

дані наступної комірки ОЗП → регістр А

0001

5F

MOV E, A

дані 5Fh → регістр А

0002

AF

XRA A

А  A → А

-

-

-

-

Зробіть висновки стосовно кожної із використаних функцій.

Експеримент 2. Вивчення команд порівняння чисел. Особливу увагу звертайте на значення прапорців регістру стану після виконання команди порівняння.

1. Порівняти число BAh з 0Fh використовуючи безпосередню адресацію.

Введіть таку програму:

Адреса комірки ОЗП

код команди

Мнемонічний запис команди

Команда мікропроцесора

0000

MVI А, d8

дані наступної комірки ОЗП → регістр А

0001

BA

CMP D

дані BAh → регістр А

0002

FE

CPI, d8

А - значення наступного байту програмирегістр стану

0003

0F

RRC

дані 0Fh

-

-

-

-

2. Порівняти число 0Fh з BAh використовуючи регістрову адресацію.

Введіть таку програму:

Адреса комірки ОЗП

код команди

Мнемонічний запис команди

Команда мікропроцесора

0000

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

MVI А, d8

дані наступної комірки ОЗП → регістр А

0001

7A

MOV A, D

дані 7Ah → регістр А

0002

BE

CMP M

А - M(HL)регістр стану

-

-

-

-

Зробіть висновки.

Експеримент 3. Вивчення команд циклічного перенесення. Використання їх для реалізації множення двійкових чисел.

       двійкова     шістнадцяткова

операнд X (акумулятор):     10010100    94

     —————  ——

       01101011    6В

Результат в регістрі А     01101011    6В

С

       двійкова     шістнадцяткова

1-й операнд X (акумулятор):    10010110    96

2-й операнд Y (регістр або пам'ять):   10010110    96

     —————  ——

X  Y       00000000    00

Результат в регістрі А     00000000    00

       двійкова     шістнадцяткова

1-й операнд X (акумулятор):    10111010    BA

2-й операнд Y (регістр або пам'ять):   11110000    F0

     —————  ——

X & Y        10110000    B0

Результат в регістрі А     10110000    B0

       двійкова     шістнадцяткова

1-й операнд X (акумулятор):    10111010    BA

2-й операнд Y (регістр або пам'ять):   00001111    0F

     —————  ——

X  Y       10111111    BF

Результат в регістрі А     10111111    BF

СР    МР

       двійкова     шістнадцяткова

1-й операнд X (акумулятор):    10010110    96

2-й операнд Y (регістр або пам'ять):   10101111    АF

     —————  ——

X  Y       00111001    39

Результат в регістрі А     00111001    39

       двійкова     шістнадцяткова

1-й операнд X (акумулятор):    10010100    94

2-й операнд Y (регістр або пам'ять):   10000001    81

     —————  ——

X & Y        10000000    80

Результат в регістрі А     10000000    80

С

СР    МР

С

СР    МР

С

СР    МР


 

А также другие работы, которые могут Вас заинтересовать

51715. Краса і багатство української мови 57 KB
  Мета уроку: поглибити знання про багатство української мови звернути увагу на її милозвучність і мелодійність розвивати спостережливість логічне й образне мислення пам’ять удосконалювати культуру усного й писемного мовлення; виховувати повагу й любов до рідної мови. Обладнання: кілька видань тлумачного словника української мови мультимедійний проектор або кодоскоп підручник. Вступна бесіда: У чому може на вашу думку виявлятися багатство мови Яким чином фіксується мовний запас Які тлумачні словники вам відомі Скільки...
51717. Первая медицинская помощь при попадании в дыхательные пути инородных тел 66 KB
  Инородные тела в полости носа чаще всего засовывают дети. Признаком попадания инородного тела в нос являются чихание затруднение дыхания через соответствующую половину носа а позднее кровянистогнойные выделения. Инородные тела кости куски пищи пуговицы монеты иногда попадают в глотку и пищевод и застревают там. Запрещается давать ему хлебные корки и другую пищу для проталкивания инородного тела.
51718. Защита населения от аварийных химически опасных веществ 2.73 MB
  Сокращения в тексте: АХОВ – аварийные химическиопасные вещества. Основные способы защиты населения от АХОВ – это: Оповещение населения; Использование средств индивидуальной защиты; Использование защитных сооружений убежищ; Временное укрытие населения в загерметизированных жилых и производственных зданиях помещениях; Заблаговременная эвакуация населения из зон возможного химического заражения АХОВ. Оповещение населения осуществляется путем включения на территории города населенного пункта электросирен и далее – передачи...
51719. Рассмотрим движение тела брошенного под углом к горизонту 121.5 KB
  Запишем уравнения зависимости скорости от времени в проекции на оси ox и oy: В верхней точке траектории тогда время полёта тела до верхней точки. В связи с тем что падение тела продолжается в течение того же времени что и подъём то полное время полёта определяется формулой: Запишем уравнения зависимости координат тела от времени для данного движения: Подставив в уравнение время полета найдём дальность полёта тела. Подставив в уравнение время полёта тела до верхней точки найдём максимальную высоту подъёма тела.
51721. Психолого-педагогические методики диагностики, проектирования, изучения и накопления передового опыта 78 KB
  Психологопедагогические методики диагностики проектирования изучения и накопления передового опыта. Понятие педагогического опыта его разновидности : ошибочный отстающий передовой массовый. Критерии передового педагогического опыта. Методы изучения передового педагогического опыта.