You are on page 1of 7

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

НАЦІОНАЛЬНИЙ ТРАНСПОРТНИЙ УНІВЕРСИТЕТ

Кафедра електроніки і обчислювальної техніки

Лабораторна робота №4
З ДИСЦИПЛІНИ

«АРХІТЕКТУРА КОМП’ЮТЕРА»

Резніченко Нікіта
ІБК3-1

Київ
ЛАБОРАТОРНА РОБОТА № 4

Тема: вивчення команд пересилання даних.


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

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

Всі команди МП КР580ИК80А поділяються на п’ять груп:


команди пересилання даних – здійснюють пересилання даних між
регістрами або між пам’яттю і регістрами;
команди арифметичні – призначені для виконання складання,
віднімання, збільшення або зменшення вмісту регістрів або вічок пам’яті;
команди логічні – виконують логічні операції «І», «АБО»,
«Виключаюче АБО», порівняння, зсув і доповнення даних в регістрах і
вічках пам’яті;
команди переходів (умовних і безумовних), звертанню до
підпрограм і повернення із підпрограм;
команди введення / виведення, керування і роботи із стеком —
призначені для виконання операцій введення/виведення, роботи із стеком,
керування прапорцями, дозвіл і заборону переривань.
Вивчення будь-якої з груп команд не можна здійснити без залучення
команд інших груп. Тому в цій і наступних лабораторних роботах крім
команд групи, що вивчається, з мінімальними поясненнями будуть
використовуватись окремі команди будь-якої з груп, необхідні для
ілюстрації прикладів.
В цій лабораторній роботі розглянуті команди групи пересилання
даних. На рис. 4.1 показані мнемонічні позначення (оператори) і коди цієї
групи команд.
Прийняті такі умовні позначення:
A, B, C, D, E, H, L – імена регістрів загального призначення МП;
M (memory) – вічко пам’яті, до якого здійснюється звертання і
адреса якого міститься в регістровій парі HL ;
# – безпосередньо однобайтний операнд, є другим байтом команди;
## – безпосередньо двобайтний операнд, є другим і третім байтом
команди;
** – безпосередньо двобайтна адреса.
1. Пересилання
Мнемоніка Ко Мнемоніка Код Мнемоніка Код Мнемоніка Код
д
MOV A,A 7F MOV B,A 47 MOV C,A 4F MOV D,A 57
A,B 78 B,B 40 C,B 48 D,B 50
A,C 79 B,C 41 C,C 49 D,C 51
A,D 7A B,D 42 C,D 4A D,D 52
A,E 7B B,E 43 C,E 4B D,E 53
A,H 7C B,H 44 C,H 4C D,H 54
A,L 7D B,L 45 C,L 4D D,L 55
A,M 7E B,M 46 C,M 4E D,M 56
MOV E,A 5F MOV H,A 67 MOV L,A 6F MOV M,A 77
E,B 5B H,B 60 L,B 68 M,B 70
E,C 59 H,C 61 L,C 69 M,C 71
E,D 5A H,D 62 L,D 6A M,D 72
E,E 5B H,E 63 L,E 6B M,E 73
E,H 5C H,H 64 L,H 6C M,H 74
E,L 5D H,L 65 L,L 6D M,L 75
E,M 5E H,M 66 L,M 6E XCHG EB

2. Безпосереднє 3. Безпосереднє 4. Завантаження /


пересилання завантаження зберігання
Мнемоника Код Мнемоніка Код Мнемоніка Код
A,# 3E B, ## 01 LDAX B 0A
B,# 06 D, ## 11 LDAX D 1A
LXI
C,# 0E H, ## 21 LHLD ** 2A
D,# 16 SP, ## 31 LDA ** 3A
MVI
E,# 1E STAX B 02
H,# 26 STAX D 12
L,# 2E SHLD ** 22
M,# 36 STA ** 32
Рис. 4.1. Команди пересилання даних.

Для роботи з командами пересилання даних необхідно мати їх опис.


Для команди виду MOV r1, r2 здійснюється пересилання
(копіювання) байта даних з регістра r2 в регістр r1. Для виконання такої
команди треба виконати один машинний цикл, причому такти Т1, Т2, Т3
займає вибірка команди, а в такті Т4 здійснюється виконання команди.
Команди MOV r, M виконуються за два машинних цикли, які
складаються з сімох тактів, забезпечуючи пересилання (копіювання)
вмісту вічка пам’яті за адресою, що є вмістом регістрів HL, в регістр r.
Команди MOV M, r виконуються аналогічно, але пересилання
(копіювання) виконується в зворотному напрямку.
Команди безпосереднього пересилання даних виду MVI r, #
забезпечують пересилання другого байта команди у вказаний регістр r.
Виконуються за два цикли (сім тактів).
Команди MVI M, # здійснюють пересилання байта за адресою, яка є
вмістом пари регістрів H, L за три машинних цикли, що складає 10 тактів.
Для безпосереднього завантаження пар регістрів використовують
команди LXI rp, ##. Тут rp — регістрова пара з пар регістрів B і C, D і E,
H і L. Другий байт команди завантажується в rh (старший з пари регістр),
третій — в rl (молодший з пари регістр). Команди виконуються за три
цикли, що складає 10 тактів.
Далі учбові програми будемо записувати операторами Асемблера. В
загальному вигляді вони записуються так:
LABEL : MOV C,A ; rem , де:
LABEL – символьна мітка, адреса передачі керування, складається з
букв і цифр (може бути відсутня);
[:] – символ відділення мітки від оператора;
[,] – символ розподілу параметрів команди;
[;] – символ відділення оператора від коментару, якщо коментар
присутній;
rem – коментар (може бути відсутнім).
Окремі елементи в операторі можуть бути відсутніми, наприклад,
один або обидва параметри, мітка, коментар. Такий запис уніфікує
програму, полегшує її запис, аналіз і розуміння.
Розглянемо програму, складену з команд пересилання. При
складанні програми буде використана одна з команд, що відноситься до
групи арифметичних команд — INX H, яка забезпечує збільшення на
одиницю вмісту пари регістрів H, L. В програмі (рис. 4.2) забезпечується
завантаження регістрів і запис їх вмісту в пам’ять.

LXI H, 8020 ; завантаження пари регістрів H, L


MVI B,77 ; завантаження регістра B байтом 77
MOV A,B ; пересилання вмісту B в A
MOV M,B ; запис вмісту B в пам’ять за адресою HL
INX H ; збільшення вмісту H, L на одиницю
MOV M,A ; запис в пам’ять за адресою HL
SHLD 8030 ; запис вмісту HL в пам’ять
Рис. 4.2. Учбова програма з використанням команд пересилання.

Використовуючи рис. 4.1, здійснимо кодування програми і


перенесемо її на мал. 4.3. Тут же зафіксуємо вміст регістрів (див. рис 3.2),
значення яких змінюється при виконанні програми. Перевіривши
правильність запису програми, виконаємо її в покроковому режимі. Після
кожного кроку заповнимо відповідні графи таблиці (рис. 4.3) вмістом
регістрів A, B, H, L. Після повного виконання програми перевіримо вміст
вічок пам’яті, в які записувались результати, і перенесемо їх в таблицю
(рис. 4.4).

Код Мнемонічне Регістр


Адреса
команди позначення команди A B H L
8000 21 20 80 LXI H,8020 - - 80 20
8003 06 77 MVI B,77 - 77 80 20
8005 78 MOV A,B 77 77 80 20
8006 70 MOV M,B 77 77 80 20
8007 23 INX H 77 77 80 21
8008 77 MOV M,A 77 77 80 21
8009 22 30 80 SHLD 8030 77 77 80 21
Рис. 4.3. Учбова програма в кодах МП КР580ВМ80А.

Адреса Вміст
8020 77
8021 77
8030 21
8031 80
Рис. 4.4. Вміст пам’яті з результатами роботи учбової програми.

Дії стосовно занесенню програми і її контролю в пам’яті розглянуті


в попередніх лабораторних роботах. При покроковому виконанні
програми для повернення в точку переривання програми і виконання
наступної команди треба натиснути кнопку «Возвр».
Для розглянутої програми доцільно оцінити час її виконання. Цей
параметр може виявитись вирішальним для роботи системи керування в
реальному часі. Всі відомості про час виконання команди даються в описі
кожної окремої команди. Програма складається з семи команд, які будуть
виконані за 10 + 7 + 4 + 7 + 5 + 7 + 16 = 56 тактів. Оскільки тривалість
такту складає 0,5 мкс, час виконання програми дорівнює 28 мкс.
Для прямого завантаження акумулятора за адресою «**»
використовується команда LDA **. Для її виконання необхідно чотири
цикли, що складає 13 тактів. Прямий запис вмісту акумулятора за адресою
здійснюється командою STA **.
Можливий режим непрямого завантаження (запису) вмісту
акумулятора за адресою пари регістрів B, C або D, E командами LDAX rp
(STAX rp). Для їх виконання потрібно два цикли, або сім тактів.
Для прямого завантаження пари регістрів H, L використовується
команда LHLD **, при виконанні якої вміст вічка пам’яті за адресою
[B3 B2] завантажується в регістр L, а для завантаження регістру H
використовується байт, зчитаний за адресою [B 3 B2 + 1], тобто збільшеній
на одиницю. Команда виконується за п’ять циклів, або 16 тактів. Прямий
запис вмісту регістрів H, L в пам’ять здійснюється аналогічно при
виконанні команди SHLD **.
Обмін вмісту пар регістрів за схемою H  D, L  E здійснюється
командою XCHG за один цикл, або чотири такти.
При роботі з командами пересилання даних вміст регістру прапорців
не змінюється і не використовується.

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

На схемі рис. 4.5 та


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

Рис. 4.5. Схема передачі парафазних


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

You might also like