Міністерство освіти і науки, молоді та спорту України
Прикарпатський національний університет
імені Василя Стефаника
Кафедра радіофізики і електроніки
Лабораторна робота №1
Вивчення будови та принципів роботи
восьмирозрядного мікропроцесора КР580ВМ80 (Intel 8080).
Івано-Франківськ – 2011
1. Мета роботи
Вивчити основні функціональні вузли восьмирозрядного мікропроцесора, послідовність виконання ним команд програми, навчитися користуватися програмою - емулятором мікропроцесорної системи на базі КР580ВМ80.
2. Обладнання
Програма - емулятор мікропроцесорної системи на базі одно-кристального КР580ВМ80.
3. Короткі відомості з теорії
3.1. Внутрішня будова мікропроцесора.
Мікропроцесор складається з таких основних частин (Мал.1):
Малюнок 1. структурна схема мікропроцесора КР580ВМ80.
- арифметико-логічний пристрій (АЛП) з регістром А (акумулятор);
- блок регістрів загального призначення (РЗП) зі схемою вибірки;
- регістр команд з дешифратором команд і формувачем машинних циклів;
- лічильник команд (РС – program counter)
- регістр стекової області (SP – stack pointer - вказівник стеку);
- регістр стану (прапорцевий регістр);
- регістри тимчасового зберігання даних (РТЗД) W та Z;
- схема приросту та зменшення (СПЗ);
- пристрій керування та синхронізації.
Буфери шини даних (БШД) та адреси (БША) є додатковими блоками, які обслуговують мікропроцесор, хоча і не входять до його складу.
Число, призначення регістрів, прапорців та команд користувач змінити не може. Він може міняти тільки значення регістрів та використовувати команди в будь-якій, необхідній йому, комбінації.
Регістр – це спеціальний запам’ятовуючий пристрій, який складається з лінійки тригерів і може запам’ятовувати декілька біт інформації одночасно. Більшість регістрів мікропроцесора 8-розрядні, деякі (PC, SP) - 16-розрядні. Всі регістри розбиті на групи і відрізняються різним функціональним призначенням.
Доступними програмісту є такі регістри:
- шість 8-розрядних регістрів, до яких можна звертатися поодинці або парами (регістри B і C, D і E, H і L);
- 8-розрядний акумулятор А;
- 16-розрядні регістри PC (лічильник команд) та SP (вказівник стеку).
В деяких спеціальних випадках можуть бути доступними дані регістра команд (8 розрядів) та регістр стану (5 розрядів). Програмно недоступними є регістри тимчасового зберігання даних W та Z.
Регістри загального призначення. Ці регістри розміром в 1 байт позначаються B, C, D, E, H, L. Вони використовуються для зберігання даних та проміжних результатів обчислень, які виконуються за допомогою арифметико-логічного пристрою. Під час роботи з 16-розрядними числами можна звертатися до пар регістрів (B,C), (D,E), (H,L).
Акумулятор – спеціальний однобайтовий регістр, який позначається А. Під час виконання арифметичних чи логічних операцій він є джерелом одного з операндів та місцем запам’ятовування результату виконання операції. Акумулятор є основною операційною ланкою арифметико-логічного пристрою. Він використовується також в якості місця зберігання даних та результатів операцій, які виконуються в АЛП.
Регістр команд – однобайтовий регістр, в якому знаходиться код команди, яка виконується. Цей регістр безпосередньо користувачу недоступний. Це не означає, однак, що не існує команди, яка б могла явним чином змінити його значення. Після виконання чергової команди в регістр команд автоматично записується код наступної команди із комірки оперативної пам’яті, адреса якої знаходиться в лічильнику команд (PC).
Лічильник команд (PC) – двобайтовий (16-розрядний) регістр, який часом іще називають програмним лічильником. Цей регістр містить адресу команди, яка повинна виконуватися наступною. Лічильник команд автоматично отримує приріст адреси, яку містить в залежності від того, яку по тривалості команду (одно-, дво-, чи трибайтову) мікропроцесор зчитує з пам’яті, вказуючи завжди на 1-й байт наступної команди. На зміст цього регістру користувач може вплинути тільки за допомогою команд, які змінюють послідовне виконання програми (наприклад, команд безумовного переходу), а також за допомогою деяких спеціальних команд.
Вказівник стеку (SP) – двобайтовий (16-розрядний) регістр, який містить адресу наступної комірки стеку. Стеком називається особливим чином організована область оперативної пам’яті, яка виділяється програмістом для тимчасового зберігання внутрішніх регістрів мікропроцесора зі спеціальним режимом доступу. Ця область оперативної пам’яті необхідна в тому випадку, коли необхідно припинити виконання поточної послідовності команд та вернутись до неї пізніше, наприклад для негайного виконання підпрограми чи в результаті переривання програми. Дані від мікропроцесора поступають в верхню частину стекової пам’яті, в такому випадку значення вказівника стеку зменшується на одиницю для того, щоби завжди вказувати на адресу останньої заповненої комірки стеку (дно стеку). Коли дані вибираються зі стеку, значення вказівника стеку збільшується на одиницю з кожним вибраним байтом. Такі операції зі стеком називаються стековими. З їхньою допомогою легко організовуються багаторівневі (вкладені) переривання та звернення до підпрограм із підпрограм (вкладені підпрограми).
Регістр стану (прапорцевий регістр) – регістр, який містить 5 двійкових розрядів, що називаються прапорцями, і які містять спеціальні ознаки результатів деяких операцій. Часом його називають регістром ознак, або регістром бітів умов. Регістр містить такі прапорці: прапорець нуля (Z - zero), прапорець перенесення (C - carry), прапорець знаку (S - sign), прапорець парності (P - parity) та прапорець додаткового перенесення (AC – auxiliary carry). Прапорці завжди встановлюються чи скидаються автоматично після виконання наступної команди, яка впливає на прапорці, в залежності від результату операції. Прапорець вважається встановленим, якщо відповідний розряд регістра набуває значення 1, і скидається, якщо значення розряду 0. Стани прапорців використовують в командах умовного переходу. Результати виконання арифметичних і логічних операцій над вмістом акумулятора, регістрів загального призначення та комірок пам’яті впливають на прапорці наступним чином:
Прапорець нуля встановлюється в 1, якщо в результаті виконання якої-небудь команди отримано нульовий результат (всі біти задіяного регістру чи комірки пам’яті встановлено в 0) і скидається в 0 в випадку ненульового результату.
Прапорець перенесення встановлюється в 1, якщо в результаті операцій додавання та зсуву появляється одиниця перенесення зі старшого розряду байта даних, а також, якщо виконується запозичення зі старшого розряду після виконання операцій віднімання чи порівняння. В іншому випадку прапорець скидається в 0.
Прапорець знаку встановлюється в 1, якщо в результаті виконання операцій появляється одиниця в старшому розряді байту даних (вказує на від’ємний результат) і скидається в 0 в випадку нульового значення старшого розряду (вказує на додатній результат).
Прапорець парності встановлюється в 1, якщо після виконання операцій сума одиниць в байті даних парна (значення суми по модулю 2 рівне 0) і скидається в 0, якщо кількість одиниць непарна.
Прапорець додаткового перенесення встановлюється в 1, якщо в результаті виконання команди появляється одиниця перенесення з третього розряду байта даних в четвертий і скидається в 0, якщо такого перенесення нема. Прапорець додаткового перенесення використовується в багатьох схемах обчислень, однак він особливо необхідний для додавання чисел в двійково-десятковій формі.
3.2. Виконання команди мікропроцесором.
Мікропроцесор містить 16-розрядну однонапрямлену шину адреси та 8-розрядну двонапрямлену шину даних. Інформація, яка може одночасно передаватись, відповідає одному байту (8 розрядів). Можливі такі передавання даних:
- пересилання байта даних від пристрою введення;
- пересилання байта даних до пристрою виведення;
- зчитування байта даних з пам’яті або запис в пам'ять;
- генерування в шину спеціального байта, який називається керуючим словом і призначений для встановлення правильного схемного з’єднання.
Робота мікропроцесора базується на принципі мікропрограмного керування. Це означає, що кожна команда реалізується як деяка послідовність мікрокоманд чи мікрооперацій, які приводять до необхідного результату. Команда, а фактично її 8-розрядний код зчитується з пам’яті і поступає в регістр команд, де і зберігається до кінця її виконання. Відповідно до результату дешифрування коду команди відбувається формування послідовності мікрокоманд (мікропрограма), процес виконання якої визначає всі наступні операції, необхідні для виконання зчитаної команди. Виконання окремих мікрооперацій синхронізується відповідно до сигналів Ф1 та Ф2 тактового генератора. Найважливішим поняттям всього процесу виконання команд є поняття машинного циклу.
Процес виконання кожної команди можна розбити на ряд основних операцій. Час, необхідний на виконання звернень до пам’яті чи пристроїв введення-виведення, складає машинний цикл. Виконання команди займає стільки машинних циклів, скільки необхідно звернень до пам’яті чи пристроїв введення-виведення для її виконання. Машинний цикл в свою чергу складається з машинних тактів (один машинний такт = один період тактових імпульсів синхрогенератора).
Кожна команда в залежності від її виду може займати від одного до п’яти машинних циклів. Мікропроцесор КР580ВМ80 має 10 типів машинних циклів, а кожний машинний цикл може містити від 3 до 5 машинних тактів.
3.3. Система команд мікропроцесора КР580ВМ80.
Система команд мікропроцесора КР580ВМ80 представлена 244 кодами операцій (Табл.1), які можна розкласифікувати згідно кількох ознак. Найбільш суттєвими ознаками є такі:
- довжина команди або число байтів, які вона займає в пам’яті;
- функціональна ознака або операції, які вона виконує;
- спосіб адресації.
Із 256 можливих кодів команд не використовуються 12 кодових комбінацій, тому число всіх команд: 256-12=244. Всі команди поділяються на три групи відповідно до кількості байтів, які вони займають в пам’яті: однобайтові, двобайтові та трибайтові. В будь-якій команді перший байт завжди містить код команди, другий і третій байт містять або дані, або адресу комірки пам’яті, яка містить дані.
Мікропроцесор КР580ВМ80 може виконувати 78 базових команд відповідно до функціональної ознаки, а саме 200 однобайтових, 18 двобайтових та 26 трибайтових команд відповідно до довжини, яку дана команда займає в пам’яті ОЗП.
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
0
NOP
LXI
B, d16
STAX
B
INX
B
INR
B
DCR
B
MVI
B, d8
RLC
-
DAD
B
LDAX
B
DCX
B
INR
C
DCR
C
MVI
C, d8
RRC
1
-
LXI
D, d16
STAX
D
INX
D
INR
D
DCR
D
MVI
D, d8
RAL
-
DAD
D
LDAX
D
DCX
D
INR
E
DCR
E
MVI
E, d8
RAR
2
-
LXI
H, d16
SHLD
adr
INX
H
INR
H
DCR
H
MVI
H, d8
DAA
-
DAD
H
LHLD
adr
DCX
H
INR
L
DCR
L
MVI
L, d8
CMA
3
-
LXI
SP, d16
STA
adr
INX
SP
INR
M
DCR
M
MVI
M, d8
STC
-
DAD
SP
LDA
adr
DCX
SP
INR
A
DCR
A
MVI
A, d8
CMC
4
MOV
B, В
MOV
B, C
MOV
B, D
MOV
B, E
MOV
B, H
MOV
B, L
MOV
B, M
MOV
B, A
MOV
C, В
MOV
C, C
MOV
C, D
MOV
C, E
MOV
C, H
MOV
C, L
MOV
C, M
MOV
C, A
5
MOV
D, В
MOV
D, C
MOV
D, D
MOV
D, E
MOV
D, H
MOV
D, L
MOV
D, M
MOV
D, A
MOV
E, В
MOV
E, C
MOV
E, D
MOV
E, E
MOV
E, H
MOV
E, L
MOV
E, M
MOV
E, A
6
MOV
H, В
MOV
H, C
MOV
H, D
MOV
H, E
MOV
H, H
MOV
H, L
MOV
H, M
MOV
H, A
MOV
L, В
MOV
L, C
MOV
L, D
MOV
L, E
MOV
L, H
MOV
L, L
MOV
L, M
MOV
L, A
7
MOV
M, В
MOV
M, C
MOV
M, D
MOV
M, E
MOV
M, H
MOV
M, L
HLT
MOV
M, A
MOV
A, В
MOV
A, C
MOV
A, D
MOV
A, E
MOV
A, H
MOV
A, L
MOV
A, M
MOV
A, A
8
ADD
B
ADD
C
ADD
D
ADD
E
ADD
H
ADD
L
ADD
M
ADD
A
ADC
B
ADC
C
ADC
D
ADC
E
ADC
H
ADC
L
ADC
M
ADC
A
9
SUB
B
SUB
C
SUB
D
SUB
E
SUB
H
SUB
L
SUB
M
SUB
A
SBB
B
SBB
C
SBB
D
SBB
E
SBB
H
SBB
L
SBB
M
SBB
A
A
ANA
B
ANA
C
ANA
D
ANA
E
ANA
H
ANA
L
ANA
M
ANA
A
XRA
B
XRA
C
XRA
D
XRA
E
XRA
H
XRA
L
XRA
M
XRA
A
B
ORA
B
ORA
C
ORA
D
ORA
E
ORA
H
ORA
L
ORA
M
ORA
A
CMP
B
CMP
C
CMP
D
CMP
E
CMP
H
CMP
L
CMP
M
CMP
A
C
RNZ
POP
B
JNZ
adr
JMP
adr
CNZ
adr
PUSH
B
ADI
d8
RST
0
RZ
RET
JZ
adr
-
CZ
adr
CALL
adr
ACI
d8
RST
1
D
RNC
POP
C
JNС
adr
OUT
N
CNC
adr
PUSH
C
SUI
d8
RST
2
RC
-
JC
adr
IN
N
CC
adr
-
SBI
d8
RST
3
E
RPO
POP
D
JPO
adr
XTHL
CPO
adr
PUSH
D
ANI
d8
RST
4
RPE
PCHL
JPE
adr
XCHG
CPE
adr
-
XRI
d8
RST
5
F
RP
POP
PSW
JP
adr
DL
CP
adr
PUSH
PSW
ORI
d8
RST
6
RM
SPHL
JM
adr
EI
CM
adr
-
CPI
d8
RST
7
Таблиця 1. Команди мікропроцесора КР580ВМ80.
Для всіх можливих пересилань даних з регістрів в регістри, чи з пам’яті в регістри та навпаки, розрізняють регістри – джерела даних, які позначаються символом S (source – джерело), та регістри – приймачі даних, які позначаються символом D (destination – місце призначення). В регістрових парах (B, C), (D, E) та (H, L) старшими є перші регістри пар. Коди регістрів загального призначення, пар регістрів та прапорців строго фіксовані (Табл.2).
Регістр
Код
Пара регістрів
Код
Мнемонічне позначення
Код
A
111
B (B, C)
00
NZ (Z=0)
000
B
000
D (D, E)
01
Z (Z=1)
001
C
001
H (H, L)
10
NC (CY=0)
010
D
010
SP
11
C (CY=1)
011
E
011
PO (P=0)
100
H
100
PE (P=1)
101
L
101
P (S=0)
110
M (пам'ять)
110
M (S=1)
111
Таблиця 2. Коди регістрів та прапорців мікропроцесора КР580ВМ80.
Мікропроцесор КР580ВМ80 використовує доволі простий формат команд:
dst (Destination) адресат - приймач;
src (Source) адресат - джерело;
n = 0..7;
Код операції завжди розміщений в першому байті програми. кожен біт відмічено "х". В першому біті може знаходитися інформація про місцезнаходження операндів dst, src або ціле число 0..7. Другий, а якщо необхідно, і третій байти відводяться під безпосередні дані, адресу порту чи комірки пам'яті.
Для мікропроцесора КР580ВМ80 існують чотири можливих способи адресації: безпосередня, пряма, регістрова, та непряма.
Безпосередня адресація є найбільш економічним способом зберігання та пошуку інформації, оскільки необхідні дані містить сама команда. Ці дані містяться в другому та третьому байтах трибайтової команди та в другому байті двобайтової команди. В випадку трибайтової команди молодші розряди 16-бітового числа містяться в другому байті, а старші – в третьому байті команди.
Менш економічною, але також досить простою є пряма адресація. В такому випадку в другому і третьому байтах міститься повна 16-бітна адреса комірки пам’яті, в якій знаходяться дані. Молодшим байтом адреси є другий байт команди, а старшим – третій байт команди.
В випадку регістрової адресації код команди вказує на регістр або пару регістрів в яких містяться дані. Команди, які використовують регістрову адресацію є однобайтними. В такому випадку адреси регістрів задаються за допомогою трьох або 6-ти молодших бітів команди.
Непряма адресація відрізняється від регістрової тільки тим, що в регістровій парі містяться не дані, а повна 16-розрядна адреса комірки пам’яті, яка містить дані. Старший байт адреси записується в першому регістрі пари, а молодший в другому. Зазвичай вказівником адреси в випадку непрямої адресації є пара регістрів H, тобто регістри (H, L), але інколи використовуються пари (B, C) і (D, E).
Для всіх можливих пересилань даних з регістрів в регістри, чи з пам’яті в регістри та навпаки, розрізняють регістри – джерела даних, які позначаються символом S (source – джерело), та регістри – приймачі даних, які позначаються символом D (destination – місце призначення). В регістрових парах (B, C), (D, E) та (H, L) старшими є перші регістри пар. Коди регістрів загального призначення, пар регістрів та прапорців строго фіксовані.
Всі команди відповідно до функціональної ознаки можуть бути розбиті на п’ять груп:
- група команд пересилання даних;
- арифметичні команди;
- логічні команди;
- команди переходів;
- команди управління і роботи зі стеком.
3.4. Емулятор мікропроцесорної системи на базі КР580ВМ80.
Емулятор – це програма, яка відтворює всі процеси, що відбуваються в реальних системах на екрані монітору. Даний емулятор позволяє створювати програми на мові асемблера, використовуючи систему команд мікропроцесора КР580ВМ80, налагоджувати їх виконання в тактовому, командному та наскрізному режимах, вивчати принципи і порядок виконання команд, отримувати уяву про організацію зовнішньої та внутрішньої (регістрової) пам’яті та стекової області.
Головне вікно програми має вигляд, представлений на малюнку 2:
Зміст головного вікна програми:
1. Головне меню програми;
2. Структурна схема мікропроцесорної системи;
3. Таблиця змісту ОЗП мікропроцесорної системи
4. Зовнішні периферійні пристрої, які під’єднані до портів МП системи;
5. Панель редагування значення вибраної (поточної) комірки ОЗП;
Малюнок 2. Вигляд головного вікна програми емулятора.
6. Панель редагування значення вмісту вибраного регістра загального призначення МП системи;
7. Група кнопок «Сброс» для обнулення всіх комірок ОЗП та регістрів загального призначення;
8. Панель системи команд мікропроцесора КР580ВМ80;
9. Група кнопок «Выполнение» для виконання програми в наскрізному, командному та тактовому режимах.
Структурна схема містить такі елементи:
- регістр слова стану мікропроцесора (PSW) і регістр ознак (прапорців), а також їх в двійковій системі числення та словесній формі;
- буфер даних МП системи, регістр А (акумулятор), буферні регістри, регістр команд, блок регістрів загального призначення, регістри тимчасового зберігання даних, регістри – вказівник стеку та лічильник команд, а також їхні значення в шістнадцятірковій системі числення;
- блок АЛП та десяткової корекції;
- блок синхронізації та керування;
- дешифратори команд та лічильники машинних мікроциклів;
- Індикатори стану і тактування мікропроцесора: F1, F2, SYNC, READY, WAIT, HOLD, HLDA, INT, INTE, DBIN, WR;
- порти системи від 00h до 04h для монітору, дисководу, мережевого адаптера та принтера відповідно;
- шини даних, адреси, керування, внутрішня шина та шина зовнішніх пристроїв.
ОЗП МП системи представлено в вигляді блоку-таблиці:
- адреса ОЗП – кожна комірка має адресу від 0000h до FFFFh (від 0d до 65535d) всього 64К комірок;
- значення комірки ОЗП – поточне значення вибраної комірки ОЗП (8 біт). Представлено в шістнадцятірковій системі числення від 00h до FFh (від 0d до 255d) всього 256 значень;
- команда мікропроцесора – розшифроване значення комірки ОЗП в виді мнемо коду на мові асемблера. Деякі комірки можуть містити не команди, а дані, однак їхні значення будуть перекодовані в мнемокод автоматично.
Адреса вибраної комірки автоматично відображається в регістрі – лічильнику команд.
В нижній області ОЗП встановлено виділення коричневим кольором тієї комірки, на яку вказує вказівник стеку. Стекова область виділена жовтим кольором.
Зовнішні периферійні пристрої під’єднані до загальної шини контролера введення-виведення. Всього до МП системи під’єднано п’ять віртуальних пристроїв: монітор, який може працювати як в графічному, так і текстовому режимах; накопичувачі на гнучких та твердих магнітних дисках; мережевий адаптер та принтер. Всі пристрої, крім монітору, можуть також працювати в режимі реального часу з реальними фізичними периферійними пристроями.
Панелі редагування значення комірок ОЗП чи регістрів дозволяють вводити програми та задавати початкові умови, а також редагувати введені чи зчитані з файлу програми.
Комірки «Сброс» дозволяють обнуляти всі комірки ОЗП, або регістри МП системи.
Панель системи команд мікропроцесора КР580ВМ80 представлена в вигляді прихованої таблиці 16х16 рядки і стовпчики якої пронумеровані в шістнадцятірковій системі числення. Їхня послідовна комбінація (рядок-стовпчик) є кодом вибраної команди. Всі команди умовно розбиті на дванадцять груп, об’єднаних за функціональною ознакою, кожна з яких позначена своїм кольором комірки. Панель системи можна активізувати за допомогою клавіші «Space» або наводячи на неї курсор мишки. Панель полегшує програмування емулятора, оскільки вибрані команди можна «перетягувати» в комірки ОЗП за допомогою лівої клавіші мишки, а права клавіша позволяє отримати повну інформацію про команду.
Група кнопок «Выполнение».
- «Виконати такт» - це виконати один такт команди ОЗП на яку вказує лічильник команд. Якщо команда виконана на повністю, деякі елементи керування стають недоступними для редагування., а ті елементи, які є активними в даному такті відмічаються червоним кольором;
- «Виконати команду» позволяє виконати програму покомандно і контролювати її виконання та стан регістрів і пам’яті;
- «Виконати програму» запускає програму на виконання до тих пір, поки дана кнопка не буде натиснута повторний раз, або в випадку команди HLT(76h).
Основні принципи роботи з програмою.
Початок роботи з програмою полягає в написанні або завантаженні програми на асемблері в емулятор. Для цього можна скористатися або панеллю системи команд програми, або панеллю редагування значень комірок ОЗП емулятора, або завантажити образ ОЗП з носія.
В випадку необхідності можна заповнити відповідними значеннями регістри загального призначення емулятора.
Для детального вивчення кожного такту конкретної команди можна скористатися кнопкою по тактового виконання команди. Для налаштовування програми використовується кнопка по командного виконання.
Написану програму на мові асемблера можна зберегти в вигляді образа ОЗП та РЗП на будь-який носій, а також в випадку необхідності завантажити з носія в емулятор.
Програма також позволяє можливість експорту частини ОЗП та/чи РЗП емулятора в MS Excel, MS Word та текстовий файл.
4. Порядок виконання експериментів.
Запустіть емулятор.
Експеримент 1. Занесення початкових даних в регістри і пам'ять та виконання простої програми.
Виконання: Задайте в полі 6 емулятора початкові значення регістрів загального призначення: A=0F; B=F1; C=12; D=55; E=66; H=00; L=0E.
Введіть в полі 5 таку програму:
Таблиця 3.
Адреса комірки ОЗП
код команди
Мнемонічний запис команди
Команда мікропроцесора
0000
3C
INR A
A+1 -> A
0001
06
MVI B, d8
дані -> B
0002
1F
RAR
дані 1F
0003
05
DCR B
B-1 -> B
0004
81
ADD C
A+C -> A
0005
82
ADD D
A+D -> A
0006
93
SUB E
A-E -> A
0007
77
MOV M,A
A -> пам'ять (000D)
0008
76
HLT
зупинка
0009
00
NOP
команда відсутня
000A
00
NOP
команда відсутня
000B
00
NOP
команда відсутня
000C
00
NOP
команда відсутня
000D
00
NOP
команда відсутня
000E
00
NOP
команда відсутня
Задайте значення регістра PC=0000. Запустіть програму в полі 9 кнопкою "Выполнить программу". Запишіть значення регістрів загального призначення після виконання програми :
A= ; B= ; C= ; D= ; E= ; H= ; L= ; PC= .
Запишіть значення комірки пам'яті за адресою 000E: ОЗП(000E)= .
Порівняйте значення регістрів та комірок пам'яті до і після виконання програми. Зробіть висновок про арифметичні дії над числами, які були занесені в регістри.
Експеримент 2. Виконання простої програми в покомандному та потактовому режимах
Обнуліть ОПЗ та регістри шляхом натискання на кнопку "Сброс ОЗУ" та "Сброс регистров" в полі 7.
Задайте значення регістрів та внесіть програму аналогічно, як і в Експерименті 1.
Запустіть виконання програми в спочатку в покомандному, а потім в потактовому режимі шляхом натискання кнопок "Выполнить команду" та "Выполнить такт" в полі 9, відповідно.
Результати виконання програми занесіть в таблицю:
Таблиця 4.
Адреса комірки ОЗП
Команда
цикл
такт
Лічильник команд
регістр команд
регістр стану (PSW, тип циклу)
регістр ознак ZSPCAC
Акумулятор
Зробіть висновок про порядок виконання програми та команд.
Запишіть програму в файл: "Файл" -> "Сохранить как..."
Експеримент 3. Вивчення способів адресації мікропроцесора КР580ВМ80.
Обнуліть пам'ять та регістри.
Занесіть та виконайте наведені нижче програми в потактовому режимі.
Результати виконання програм занесіть в відповідні таблиці типу табл.4.
Безпосередня адресація.
Адреса комірки ОЗП
код команди
Мнемонічний запис команди
Команда мікропроцесора
0000
3E
MVI A, d8
дані наступної комірки ОЗП -> регістр А
0001
AA
XRA D
дані
-
-
-
-
Пряма адресація.
Занесіть початкове значення комірки ОЗП (000В)=АА
Адреса комірки ОЗП
код команди
Мнемонічний запис команди
Команда мікропроцесора
0000
3A
LDA adr
дані комірки ОЗП -> регістр А
0001
0B
DCX B
молодший байт адреси комірки ОЗП
0002
00
NOP
старший байт адреси комірки ОЗП
-
-
-
-
-
-
-
-
000B
AA
XRA D
дані
-
-
-
-
Регістрова адресація.
Занесіть в регістр В значення В=АА.
Адреса комірки ОЗП
код команди
Мнемонічний запис команди
Команда мікропроцесора
0000
78
MOV A, B
регістр В -> регістр А
-
-
-
-
Непряма адресація.
Занесіть в регістри H та L значення H=00, L=0В; в комірку ОЗП (000В)=АА.
Адреса комірки ОЗП
код команди
Мнемонічний запис команди
Команда мікропроцесора
0000
7Е
MOV A, M
дані комірки ОЗП за адресою HL (H-старший байт адреси комірки ОЗП; L-молодший байт адреси комірки ОЗП) -> регістр А
-
-
-
-
-
-
-
-
000B
AA
XRA D
дані
-
-
-
-
Зробіть висновок про об'єм оперативної пам'яті який займають команди та час їх виконання для різних способів адресації.
5. Контрольні запитання.
1. Назвіть основні складові частини мікропроцесора.
2. Що таке регістр, і регістри яких типів входять в склад мікропроцесора?
3. Які регістри є доступними програмісту, а які - ні?
4. Чи можна змінити конфігурацію регістрів мікропроцесора?
5. Яка довжина машинного слова мікропроцесора КР580ВМ80?
6. Для чого використовуються регістри загального призначення?
7. Призначення регістра А. Дані якої довжини можна завантажувати в акумулятор?
8. Для чого використовується лічильник команд?
9. Що таке стек, і призначення вказівника стеку?
10. Поясніть призначення регістра стану, та значення окремих його прапорців.
11. Яким чином мікропроцесор виконує команду?
12. Що таке машинний цикл і чим він відрізняється від машинного такту?
13. Скільки і які типи команд може виконувати мікропроцесор КР580ВМ80?
14. Формати команд: однобайтовий, двобайтовий, трибайтовий.
15. Види адресації мікропроцесора КР580ВМ80? Який з видів адресації є найбільш економним з точки зору об'єму оперативної пам'яті, що він займає; з точки зору часу виконання?
16. Назвіть типи команд щодо функціональної ознаки.
17. В чому полягає робота програми-емулятора?
18. Який максимальний об'єм пам'яті може адресувати мікропроцесор КР580ВМ80?