МК
.pdfD6 – введення (з УВв); |
|
|
|
|
|
T1 |
T2 |
Tw |
T3 |
T4 |
T5 |
F1 |
|
|
|
|
|
F2
А
D |
PSW |
Вхідні дані |
SYN
RDY
Wait
RD
WR
Рис. 3. Часова діаграма МЦ „Введення даних”.
Таким чином, у машинному циклі виконуються наступні дії:
-видача адреси;
-видача інформації про початий МЦ (PSW);
-аналіз значення вхідних сигналів;
-за необхідності – очікування сигналу READY= 1;
-введення/виведення даних;
-за необхідності – внутрішня обробка/пересилка даних.
У разі реалізації одного МЦ процесор може:
1)прийняти з пам'яті байт команди;
2)прийняти з пам'яті байт даних;
21
3)прийняти з УВв байт даних;
4)прийняти зі стека байт даних;
5)прийняти вектор переривання;
6)видати в пам'ять байт даних;
7)видати в стек байт даних;
8)видати на УВив байт даних.
Щодо вихідних сигналів МП всі перелічені вище різновиди МЦ різняться тільки напрямом передачі даних: в МП – цикли 1..5 (Введення), з МП – цикли
6..8 „Виведення” (див. рис. 4).
F1
T1 |
T2 |
Tw |
T3 |
T4 |
T5 |
F2
А
D |
PSW |
Вхідні дані |
SYN
RDY
Wait
RD
WR
Рис. 4. Часова діаграма МЦ „Виведення”.
22
Таблиця 1
|
|
Система команд процесора і80 |
|
|
|
Команда |
Код |
Опис |
1 |
2 |
3 |
ADD A |
87 |
A<-(A) + (A) |
ADD B |
80 |
A<-(B) + (A) |
ADD C |
81 |
A<-(C) + (A) |
ADD D |
82 |
A<-(D) + (A) |
ADD E |
83 |
A<-(E) + (A) |
ADD H |
84 |
A<-(H) + (A) |
ADD L |
85 |
A<-(L) + (A) |
ADD M |
86 |
A<-Loc(HL) + (A) |
ADI d8 |
C6 |
A<-d8 + (A) |
ADC A |
8F |
A<-(A) + (A) + CY |
ADC B |
88 |
A<-(B) + (A) + CY |
ADC C |
89 |
A<-(C) + (A) + CY |
ADC D |
8A |
A<-(D) + (A) + CY |
ADC E |
8B |
A<-(E) + (A) + CY |
ADC H |
8C |
A<-(H) + (A) + CY |
ADC L |
8D |
A<-(L) + (A) + CY |
ADC M |
8E |
A<-Loc(HL) + (A) + CY |
ACI d8 |
CE |
A<-d8 + (A) + CF |
ANA A |
A7 |
Перевірка A |
ANA B |
A0 |
Логічне І B з A |
ANA C |
A1 |
Логічне І C з A |
ANA D |
A2 |
Логічне І D з A |
ANA E |
A3 |
Логічне І E з A |
ANA H |
A4 |
Логічне І H з A |
ANA L |
A5 |
Логічне І L з A |
ANA M |
A6 |
Логічне І Loc(HL) з A |
ANI d8 |
E6 |
Логічне І безпосередніх даних з A |
CALL a16 |
CD |
Передати управління підпрограмі за адресою a16 |
CZ a16 |
CC |
Викликати підпрограму за адресою a16, якщо нуль |
СNZ a16 |
C4 |
Те саме, якщо не нуль |
СP a16 |
F4 |
Те саме, якщо плюс |
СM a16 |
FC |
Те саме, якщо мінус |
CC a16 |
DD |
Те саме, якщо перенос |
CNC a16 |
D4 |
Те саме, якщо відсутній перенос |
CPE a16 |
EC |
Те саме, якщо ділиться на 2 |
CPO a16 |
E4 |
Те саме, якщо не ділиться на 2 |
CMA |
2F |
Інвертувати А |
23
Продовження табл. 1
1 |
2 |
3 |
|
CMC |
3F |
Інвертувати перенос |
|
CMP A |
BF |
Встановити ознаку FZ |
|
CMP B |
B8 |
Порівняти A з B |
|
CMP C |
B9 |
Порівняти A з C |
|
CMP D |
BA |
Порівняти A з D |
|
CMP E |
BB |
Порівняти A з E |
|
CMP H |
BC |
Порівняти A з H |
|
CMP L |
BD |
Порівняти A з L |
|
CMP M |
BE |
Порівняти A з Loc(HL) |
|
CPI d8 |
FC |
Порівняти A з безпосередніми даними, заданими в |
|
команді |
|||
|
|
||
DAA |
27 |
Десяткова корекція акумулятора |
|
DAD |
B |
Скласти BC з HL |
|
DAD |
D |
Скласти DE з HL |
|
DAD |
H |
Скласти HL з HL (подвоєння HL) |
|
DAD |
SP |
Скласти SP з HL |
|
DCR A |
3D |
A<-(A) - 1 (декремент A) |
|
DCR B |
05 |
B<-(B) - 1 |
|
DCR C |
0D |
C<-(C) - 1 |
|
DCR D |
15 |
D<-(D) - 1 |
|
DCR E |
1D |
E<-(E) - 1 |
|
DCR H |
25 |
H<-(H) - 1 |
|
DCR L |
2D |
L<-(L) - 1 |
|
DCR M |
3D |
Loc (HL)<-(Loc(HL)) -1 |
|
DCX B |
0B |
BC<-(BC) - 1 |
|
DCX D |
1B |
DE<-(DE) -1 |
|
DCX H |
2B |
HL<-(HL) - 1 |
|
DCX SP |
0B |
SP<-(SP) -1 |
|
DI |
F3 |
Заборона переривання |
|
EI |
FB |
Дозвіл переривання |
|
HLT |
76 |
Зупинка процесора |
|
IN pp |
DB |
Введення даних через порт pp |
|
INR A |
3C |
A<-(A) + 1 (інкремент A) |
|
INR B |
04 |
Інкремент B |
|
INR C |
0C |
Інкремент C |
|
INR D |
3C |
Інкремент D |
|
INR E |
3C |
Інкремент E |
|
INR H |
3C |
Інкремент H |
|
INR L |
3C |
Інкремент L |
24
Продовження табл. 1
1 |
2 |
3 |
INR M |
34 |
Інкремент вміст Loc(HL) |
INX B |
03 |
Інкремент BС |
INX D |
13 |
Інкремент DE |
INX H |
23 |
Інкремент HL |
INX SP |
33 |
Інкремент SP |
JMP a16 |
C3 |
Перейти по адресу a16 |
JZ a16 |
CA |
Те саме, якщо нуль |
JNZ a16 |
C2 |
Те саме, якщо не нуль |
JP a16 |
F2 |
Те саме, якщо плюс |
JM a16 |
FA |
Те саме, якщо мінус |
JC a16 |
DA |
Те саме, якщо перенос |
JNC a16 |
D2 |
Те саме, якщо відсутній перенос |
JPE a16 |
EA |
Перейти по адресу a16, якщо паритет парний |
JPO a16 |
E2 |
Перейти по адресу a16, якщо паритет непарний |
LDA aaaaa |
3A |
Завантажити в A з комірки за адресою a16 |
LDAX B |
0A |
Завантажити в A з комірки за Loc(BC) |
LDAX D |
1A |
Завантажити в A з комірки за Loc(DE) |
LHLD a16 |
2A |
Завантажити в HL вміст комірки за адресом a16 |
LXI B,d16 |
01 |
Завантажити в BC безпосередні дані d16 |
LXI H,d16 |
21 |
Завантажити в HL безпосередні дані d16 |
LXI SP,d16 |
31 |
Завантажити в SP безпосередні дані d16 |
MOV A,B |
78 |
Переслати з A в B (B<-(A) ) |
MOV A,C |
79 |
Переслати з A в C |
MOV A,D |
7A |
Переслати з A в D |
MOV A,E |
7B |
Переслати з A в E |
MOV A,H |
7C |
Переслати з A в H |
MOV A,L |
7D |
Переслати з A в L |
MOV A,M |
7E |
Переслати з A в Loc(HL) |
MOV B,A |
47 |
Переслати з B в A |
MOV B,C |
41 |
Переслати з B в C |
MOV B,D |
42 |
Переслати з B в D |
MOV B,E |
43 |
Переслати з B в E |
MOV B,H |
44 |
Переслати з B в H |
MOV B,L |
45 |
Переслати з B в L |
MOV B,M |
46 |
Переслати з B в Loc(HL) |
MOV C,A |
4F |
Переслати з C в A |
MOV C,B |
48 |
Переслати з C в B |
MOV C,D |
4A |
Переслати з C в D |
MOV C,E |
4B |
Переслати з C в E |
MOV C,H |
4C |
Переслати з C в H |
25
Продовження табл. 1
1 |
2 |
3 |
MOV C,L |
4D |
Переслати з C в L |
MOV C,M |
4E |
Переслати з C в Loc(HL) |
MOV D,A |
57 |
Переслати з D в A |
MOV D,B |
50 |
Переслати з D в B |
MOV D,C |
51 |
Переслати з D в C |
MOV D,E |
53 |
Переслати з D в E |
MOV D,H |
54 |
Переслати з D в H |
MOV D,L |
55 |
Переслати з D в L |
MOV D,M |
56 |
Переслати з D в Loc(HL) |
MOV E,A |
5F |
Переслати з E в A |
MOV E,B |
58 |
Переслати з E в B |
MOV E,C |
59 |
Переслати з E в C |
MOV E,D |
5A |
Переслати з E в D |
MOV E,H |
5C |
Переслати з E в H |
MOV E,L |
5D |
Переслати з E в L |
MOV E,M |
5E |
Переслати з E в Loc(HL) |
MOV H,A |
67 |
Переслати з H в A |
MOV H,B |
60 |
Переслати з H в B |
MOV H,C |
61 |
Переслати з H в C |
MOV H,D |
62 |
Переслати з H в D |
MOV H,E |
63 |
Переслати з H в E |
MOV H,L |
65 |
Переслати з H в L |
MOV H,M |
66 |
Переслати з H в Loc(HL) |
MOV L,A |
6F |
Переслати з L в A |
MOV L,B |
68 |
Переслати з L в B |
MOV L,C |
69 |
Переслати з L в C |
MOV L,D |
6A |
Переслати з L в D |
MOV L,E |
6B |
Переслати з L в E |
MOV L,H |
6C |
Переслати з L в H |
MOV L,M |
6E |
Переслати з L в Loc(HL) |
MOV M,A |
77 |
Переслати з M в A |
MOV M,B |
70 |
Переслати з M в B |
MOV M,C |
71 |
Переслати з M в C |
MOV M,D |
72 |
Переслати з M в D |
MOV M,E |
73 |
Переслати з M в E |
MOV M,H |
74 |
Переслати з M в H |
MOV M,L |
75 |
Переслати з M в L |
MVI A,d8 |
3E |
Переслати d8 в A |
MVI B,d8 |
06 |
Переслати d8 в B |
MVI C,d8 |
0E |
Переслати d8 в C |
26
Продовження табл. 1
1 |
2 |
3 |
MVI D,d8 |
16 |
Переслати d8 в D |
MVI E,d8 |
1E |
Переслати d8 в E |
MVI H,d8 |
26 |
Переслати d8 в H |
MVI L,d8 |
2E |
Переслати d8 в L |
MVI M,d8 |
36 |
Переслати d8 в Loc(HL) |
NOP |
00 |
|
ORA A |
B7 |
Перевірити A і скинути перенос |
ORA B |
B0 |
Логічна операція B АБО A |
ORA C |
B1 |
Логічна операція C АБО A |
ORA D |
B2 |
Логічна операція D АБО A |
ORA E |
B3 |
Логічна операція E АБО A |
ORA H |
B4 |
Логічна операція H АБО A |
ORA L |
B5 |
Логічна операція L АБО A |
ORA M |
B6 |
Логічна операція M АБО A |
ORI d8 |
F6 |
Логічна операція d8 АБО A |
OUT pp |
D3 |
Записати A в порт pp |
PCHL |
E9 |
Передати управління по адресу в HL |
POP B |
C1 |
Вилучити слово зі стеку в BC |
POP D |
D1 |
Вилучити слово зі стеку в DE |
POP H |
E1 |
Вилучити слово зі стеку в HL |
POP PSW |
F1 |
Вилучити слово зі стеку в PSW |
PUSH B |
C5 |
Занести до стеку вміст BC |
PUSH D |
D5 |
Занести до стеку вміст DE |
PUSH H |
E5 |
Занести до стеку вміст HL |
PUSH PSW |
F5 |
Занести до стеку вміст PSW |
RAL |
17 |
Циклічний зсув CY + A вліво |
RAR |
1F |
Циклічний зсув CY + A вправо |
RLG |
07 |
Зсув A вліво на один розряд з переносом |
RRG |
0F |
Зсув A вправо на один розряд з переносом |
RIM |
20 |
Зчитати маску переривання (в 8085) |
RET |
C9 |
Повернення з підпрограми |
RZ |
C8 |
Повернення з підпрограми, якщо FZ = 0 |
RNZ |
C0 |
Повернення з підпрограми, якщо FZ = 1 |
RP |
F0 |
Повернення з підпрограми, якщо FP = 1 |
RM |
F8 |
Повернення з підпрограми, якщо FP = 0 |
RC |
D8 |
Повернення з підпрограми, якщо FC = 1 |
RNC |
D0 |
Повернення з підпрограми, якщо FC = 0 |
RPO |
E0 |
Повернення з підпрограми, якщо паритет непарний |
RST 0 |
C7 |
Запуск програми з адреси 0 |
RST 1 |
CF |
Запуск програми з адреси 8h |
27
Продовження табл. 1
1 |
2 |
3 |
RST 2 |
D7 |
Запуск програми з адреси 10h |
RST 3 |
DF |
Запуск програми з адреси 18h |
RST 4 |
E7 |
Запуск програми з адреси 20h |
RST 5 |
EF |
Запуск програми з адреси 28h |
RST 6 |
F7 |
Запуск програми з адреси 30h |
RST 7 |
FF |
Запуск програми з адреси 38h |
SIM |
30 |
Встановити маску переривання (тільки в 8085) |
SPHL |
F9 |
Завантажити SP із HL |
SHLD a16 |
22 |
Записати HL по адресу a16 |
STA a16 |
32 |
Записати A по адресу a16 |
STAX B |
02 |
Записати A по адресу Loc(BC) |
STAX D |
12 |
Записати A по адресу Loc(DE) |
STC |
37 |
Встановити ознаку переносу (CF = 1) |
SUB A |
9F |
Відняти А з А (очистити А) |
SUB B |
98 |
Відняти B з А |
SUB C |
99 |
Відняти C з А |
SUB D |
9A |
Відняти D з А |
SUB E |
9B |
Відняти E з А |
SUB H |
9C |
Відняти H з А |
SUB L |
9D |
Відняти L з А |
SUB M |
9E |
Відняти M з А |
SUI d8 |
DE |
Відняти d8 з А |
SBB A |
9F |
Відняти А з А (очистити А) |
SBB B |
98 |
Відняти з переносом B з А |
SBB C |
99 |
Відняти з переносом C з А |
SBB D |
9A |
Відняти з переносом D з А |
SBB E |
9B |
Відняти з переносом E з А |
SBB H |
9C |
Відняти з переносом H з А |
SBB L |
9D |
Відняти з переносом L з А |
SBB M |
9E |
Відняти з переносом M з А |
SBI d8 |
DE |
Відняти з переносом d8 з А |
XCHG |
EB |
Обмін вмісту DE і HL |
XTHL |
E3 |
Обмін вмісту вершини стеку з вмістом HL |
XRA A |
AF |
Виключаюче АБО A з A (очистка A) |
XRA B |
A8 |
Виключаюче АБО B з A |
XRA C |
A9 |
Виключаюче АБО C з A |
XRA D |
AA |
Виключаюче АБО D з A |
XRA E |
AB |
Виключаюче АБО E з A |
XRA H |
AC |
Виключаюче АБО H з A |
XRA L |
AD |
Виключаюче АБО L з A |
28
Продовження табл. 1
1 |
2 |
3 |
XRA M |
AE |
Виключаюче АБО Loc(HL) з A |
XRI d8 |
EE |
Виключаюче АБО d8 з A |
Умовні позначення в командах
A, B, ..., L – назва 8-розрядних регістрів.
BC, DE, HL – назва регістрових пар, що утворюють 16-розряднi регістри.
SP – 16-розрядний покажчик стеку.
PSW – слово стану програми, містить регістр ознак. a16 – двобайтова адреса.
d8 – байт безпосередніх даних.
d16 – два байти безпосередніх даних. pp – номер порту введення-виведення.
Порядок виконання роботи
1.Ознайомитись із системою команд 8-розрядного процесора.
2.Завантажити програмну оболонку емулятора 8-розрядного процесора.
3.Ввести по порядку команди різного призначення і ознайомитись з результатами їхньої дії, стану регістрів, ознак тощо.
4.Завершити роботу емулятора.
Зміст звіту
1.Тему, мету, обладнання і матеріали лабораторної роботи.
2.Систему команд 8-розрядного процесора.
3.Перелік команд, які виконувались емулятором, результати їх виконання (значення регістрів, пам’яті, регістра ознак, портів, тощо).
4.Висновки.
Завдання для самоконтролю
1.Як групуються команди процесора ?
2.Охарактеризуйте виконання команд процесора.
3.Що таке цикл виконання команди ?
29
4.Що таке такт виконання команди ?
5.Поясніть принцип роботи наведених часових діаграм виконання команд процесора.
6.Поясніть функціональне призначення шин процесора.
Бібліографічний список
1. Бучма І.М. Мікропроцесорні пристрої: Навчальний посібник. – Львів:
Видавництво Національного університету “Львівська політехніка, 2005. –
306 с.
2.Джордейн Р. Справочник программиста персональных компьютеров типа IBM PC, XT, AT: Пер. с англ./Предисл. Н. В. Гайского. –М.: Финансы и статистика, 1992. – 544 c.: ил.
3.Преснухин и др. Расчет элементов цифровых устройств: Учеб.
Пособие/ Л.Н. Преснухин, Н.В. Воробьев, А.А. Шишкевич; Под ред. Л. Н.
Преснухина. – 2-е изд., перераб. и доп. – М.: Высш. шк., 1991. – 526 с.: ил.
4. Зубчик В. И. и др. Справочник по цифровой схемотехники / В. И.
Зубчик, В. П. Сигорский, А. Н. Шкуро. – К.: Техника, 1990. – 448 с.
5. Лю Ю-Чжен, Гибсон Г. Микропроцессоры семейства 8086/8088. –
М.:Радио и связь, 1987. 512 с.
6. Гивоке Д., Россер Р. Микропроцессоры и микрокомпьютеры – М.:
Мир, 1983.– 464с.
7. Бойко В.И., Гуржий А. Н., Жуйков В.Я. и др. Схемотехника электронных систем. Микропроцессоры и микроконтроллеры. СПб.: БХВ-
Петербург, 2004. –464 с.
30