Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Схемна реалізація пересилання даних вміст регістрів

Поиск

На схемі рис. 4.5 та інших показані лише ті кола, про які безпосередньо йде мова. Якщо, наприклад, говориться, що регістр Рг1 містить код слова, то існують кола, по яких цей код заноситься в регістр, але щоб не захаращувати малюнок, ці кола не показані.

Показані регістри на RS-тригерах і група схем «І1» та «І2». Для прискорення використана парафазна передача інформації з регістра на регістр. При цьому в кожному розряді залучені обидва входи тригера і по ним одночасно подаються сигнали 1 і 0. Код, записаний в регістр Рг1, передається при наявності на шині Пр керуючого сигналу прийому інформації в регістр Рг2.

Передача коду здійснюється через групу схем І1 і І2 (при цьому через схеми І1 передаються прямі, а через схеми І2 — інверсні значення змінних). На одиничних і нульових входах кожного тригера регістра Рг2 виникає комбінація 1 і 0 або 0 і 1 вхідних сигналів, що встановлюють тригери цього регістра в потрібний стан незалежно від його початкового стану.

ІНДИВІДУАЛЬНЕ ЗАВДАННЯ НА ЛАБОРАТОРНУ РОБОТУ

Скласти програму з команд пересилання. В програмі використати команди з рис. 4.1 всіх чотирьох типів.

Закодувати програму і записати її в табл. 3.1, виділивши в ній тільки ті графи з іменами регістрів, які використовуються при виконанні індивідуальної програми.

ПОРЯДОК ВИКОНАННЯ ЛАБОРАТОРНОЇ РОБОТИ

1. Завантажити програму в пам’ять мікро лабораторії.

2. Виконати програму в покроковому режимі.

3. При виконанні кожного кроку програми контролювати вміст всіх регістрів, що використовуються в програмі.

4. Результати виконання роботи зафіксувати в таблиці.

5. Прочитати вміст вічок пам’яті, які використані при виконанні програми. Результати показати на рис. 4.4.

6. Зробити короткі висновки по лабораторній роботі.

КОНТРОЛЬНІ ПИТАННЯ

Охарактеризувати групу команд регістрових пересилань.

Чому команди, наприклад, MOV C, M і MOV C, H виконуються за різний час?

Пояснити послідовність дій при виконанні команди XCHG.

Охарактеризувати команди LHLD і SHLD.

Як виконуються команди STA і LDA?

В групі команд пересилання є команди MOV r, r. Як вони виконуються?

 

 

ЛАБОРАТОРНА РОБОТА № 5

Тема: вивчення арифметичних команд

Мета: вивчити групу арифметичних команд, набути навичок складання програм з їх використовуванням

КОРОТКА ІНФОРМАЦІЯ

Виконання команд цієї групи полягає в певному арифметичному перетворенні вихідних даних в арифметико-логічному пристрої (АЛП) МП. Перелік команд і їх коди показані на рис. 5.1.

 

1. Додавання (без переносу) 2. Додавання (з переносом) 3. Віднімання (без переносу) 4. Віднімання (з переносом)
Мнемоніка Код Мнемоніка Код Мнемоніка Код Мнемоніка Код
ADD A   ADC A 8F SUB A   SBB A 9F
B   B   B   B  
C   C   C   C  
D   D 8A D   D 9A
E   E 8B E   E 9B
H   H 8C H   H 9C
L   L 8D L   L 9D
M   M 8E M   M 9E

 

5. Збільшення   6. Зменшення 7. Дії з безпосередніми даними
Мнемоніка Код   Мнемоніка Код   Мнемоніка Код  
INR A 3C   DCR A 3D   ADI # C6  
B     B     ACI # CE  
C 0C   C 0D   SUI # D6  
D     D     SBI # DE  
E 1C   E 1D  
H     H   8. Подвійне додавання
L 2C   L 2D   DAD B    
M     M     D    
                H    
INX B     DCX B 0B   SP    
D     D 1B          
H     H 2B 9. Десяткова корекція  
SP     SP 3B   DAA    

Рис. 5.1. Арифметичні команди МП.

Операнди для виконання цих команд і результати виконання команд розміщуються в регістрах і вічках пам’яті. При виконанні цих команд змінюється стан прапорців знаку, нуля, парності, переносу і допоміжного переносу у відповідності до стандартних правил. Всі операції віднімання виконуються через арифметичне доповнення до двох, причому прапорець переносу встановлюється в логічну одиницю, якщо є запозичення, і скидається, якщо його нема.

Група команд додавання вмісту акумулятора з вмістом регістра (ADD r) розміщує результат виконання команди в акумулятор (A) + (r) ® (A). Для виконання команди витрачається час чотирьох тактів за один машинний цикл М1. Використовуються всі прапорці. Далі, якщо будь-які прапорці при виконанні команди не аналізуються, це вказується особливо. Якщо попередніми командами був зведений тригер переносу, то в сумуванні за командою ADD він участі не бере.

Команда ADD M здійснює додавання вмісту акумулятора з вмістом вічка пам’яті, адреса якого вказується парою регістрів H, L. Результат додавання розміщується в акумуляторі (A) + ((H)(L)) ® (A). На виконання команди за два цикли витрачається час семи тактів.

Без врахування стану біта (прапорця) переносу також виконується команда безпосереднього додавання акумулятора і вмісту другого байта команди ADI #. Для її виконання треба два цикли вибірки команди і додатковий такт у другому циклі для виконання, тобто сім тактів.

Друга, аналогічна група команд виконується з урахуванням прапорця переносу C, який сумується як молодший біт операнду. Ці команди, наприклад, можуть бути використані при обробці слів довжиною понад один байт. Команда ADC r забезпечує додавання із зберіганням результату в акумуляторі (A) + (r) + ([C]) ® (A). Аналогічно виконується команда з урахуванням переносу ADC M (додавання акумулятора з вмістом вічка пам’яті з адресою, яка міститься в парі регістрів H, L) і команда безпосереднього додавання з урахуванням біта переносу ACI #.

Аналізуючи команди, що показані на рис. 5.1, бачимо, що можна виділити відповідні розглянутим команди віднімання. Це група команд віднімання без переносу SUB r і SUB M і команди віднімання з запозичення (з урахуванням прапорця переносу С) SBB r, SBB M. Аналоги команд з безпосередніми операндами — безпосереднє віднімання SBI # і безпосереднє віднімання з запозиченням SUI #.

Для організації послідовної адресації і лічильників використовують команди інкрементування (збільшення на одиницю) і декрементування (зменшення на одиницю). Для регістрів, а також вічок пам’яті з адресацією за вмістом пари (H, L)- регістрів це команди INR, DCR, виконання яких не впливає на тригер переносу C.

В багатьох випадках необхідно організувати 16-розрядний операнд, для чого використовують пари регістрів. Для інкрементування або декрементування пари регістрів з сумуванням переносу або запозиченням між регістрами, що складають пару, використовують команди INX і DCX, при виконанні яких вміст регістра прапорців не змінюється.

Для розширення можливостей МП в складі команд є команди сумування вмісту регістрової пари з вмістом (H, L)-регістрів. Це команди — DAD rp, які мають назву "команди подвійного додавання". Для них використовується тільки прапорець переносу C, який встановлюється, якщо відбувся переніс з молодшого байту в старший, і скидається в протилежному випадку.

Розглянемо останню команду цієї групи — команду десяткової корекції (доповнення) акумулятора DAA. При її виконанні 8-бітне число в акумуляторі доповнюється до зображення у вигляді двох 4-бітних чисел в двійково-десятковому коді за допомогою таких операцій:

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

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

При виконанні цієї команди аналізуються всі прапорці.

Розглянемо практичне використання команд цієї групи. Нехай необхідно організувати лічильник за mod 256. Алгоритм його функціонування і програма реалізації показана на рис. 5.2.

 

  3E       MVI A, 00
  3C     CO: INR A
  C3       JMP C0

Рис. 5.2. Алгоритм і програма лічильника.

Виконання програми в покроковому режимі мікролабораторії дозволяє спостерігати на ІРД (на двох лівих індикаторах ІРД) вміст акумулятора, що збільшується з кроком +1. Вміст ІАР показує, що послідовно виконуються дві команди, записані за адресами 8002 і 8003.

За цією програмою легко ознайомитись з можливостями багаторазового проходження програми з зупинкою на встановленій адресі, причому кількість проходів встановлює користувач (див. лаб. роб. № 3).

Нехай є потреба у виконанні цієї програми AA разів і зупинитись на команді з адресою 8003. Для цього занесемо в ОЗП таку інформацію:

 

Адреса Дані
83F0  
83F1  
83F2 AA

Натиснувши кнопку "Пуск", можна впевнитись, що на ІРД встановився стан акумулятора AA, тобто цикл виконаний задану кількість разів. Змінюючи вміст вічка 83F2, можна виконати програму лічильника яку-завгодно задану кількість разів.

Організуємо запис вмісту акумулятора в пам’ять мікро лабораторії так, щоб кожний новий стан лічильника заносився у вічко, адреса якого на одиницю більша за попередню (рис. 5.3).

 

Адреса Код команди Мітка Мнемоніка
  3E       MVI A, 00
          LXI H, 8020
  3C     CO: INR A
          MOV M, A
          INX H
  C3       JMP CO

Рис. 5.3. Запис вмісту лічильника в ОЗП.

Виконавши кілька циклів програми в покроковому режимі, перевіримо вміст вічок ОЗП, починаючи з адреси 8020. Дійсно, починаючи з цієї адреси, в ОЗП за адресами, що збільшуються, записані числа 01, 02, 03,....

Як і в попередньому прикладі, можна виконати задану кількість повторень виконання циклів, встановивши, наприклад, адресу зупинки 8006. Необхідно звернути увагу на виконання переносів між регістрами H, L при заповненні регістра L до числа FF. Очевидно, що не треба ніяких спеціальних заходів для організації послідовної адресації вічок ОЗП при переносі з молодшого в старший байт адреси.

Якщо, наприклад, необхідно організувати лічильник з кроком, що відрізняється від одиниці, можна скористуватись арифметичними командами. Для кроку, що дорівнює трьом, програма лічильника показана на рис. 5.4.

 

Адреса Код команди Мітка Мнемоніка Коментар
          MVI B, 03 ; Завантаження 03 – кроку лічби – в регістр B
  3E       MVI A, 00 ;Очищення акумулятора
        COU: ADD B ;Додавання кроку до A
  C3       JMP COU ;Перехід до лічби

Рис. 5.4. Програма лічильника з кроком 3.

 

Зміна константи в першій команді програми дозволяє здійснити лічбу з будь-яким довільним кроком. Для реверсування напрямку лічби можна замість команди додавання (ADD) скористатись командою віднімання SUB.

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

Для прикладу розглянемо організацію лічильника за mod 10 (рис. 5.5).

 

Адреса Код команди Мітка Мнемоніка
  AF       XRA A
          NOP  
  3C     ST: INR A
          DAA  
  C3       JMP ST

Рис. 5.5. Програма роботи лічильника за MOD 10.

В цій програмі для очистки акумулятора і прапорця переносу використовується команда ВИКЛЮЧАЮЧЕ АБО (XRA A) акумулятора з акумулятором. Очевидно, що вживання цієї команди робить програму більш ефективною – вона на один байт коротше попередніх програм, що використовували команду MVI A, 00. При виконанні програми в покроковому режимі мікро лабораторії особливу увагу слід звернути на момент переходу вмісту акумулятора в стан A. Оскільки лічба за mod 10 виключає можливість появи 16-кової цифри A, повинні бути організовані корекції цифри і перенос в наступний десятковий розряд. Цю функцію виконує наступна команда програми DAA. Після її виконання вміст акумулятора набуває значення 10. Механізм корекції розглянутий при описі цієї команди.



Поделиться:


Последнее изменение этой страницы: 2017-02-10; просмотров: 220; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.223.158.29 (0.006 с.)