- •Общие сведения о микропроцессорах, основные определения и классификация
- •Общая структурная схема микропроцессора
- •Два подхода в построении уу микропроцессора
- •Структурная схема мп со схемной логикой управления
- •Принцип микропрограммного управления. Структурная схема мп на основе программируемой логики управления
- •Типовая структурная схема мпс с мультиплексируемой шиной адресов и данных
- •Управление памятью и внешними устройствами
- •Структура микропроцессора к1821вм85а
- •Блок регистров мп к1821вм85а
- •Блок управления мп к1821вм85а
- •Синхронизация и последовательность действий мп к1821вм85а
- •Система прерываний
- •Последовательный ввод-вывод
- •Система команд мп к1821вм85а
- •Пример выполнения программы
- •Приемы программирования микропроцессоров
- •Язык Ассемблера
- •Программирование последовательных участков алгоритма
- •Программирование циклических вычислительных процессов
- •Составление программ, содержащих подпрограммы
- •Общие сведения об интерфейсных схемах
- •Шинные формирователи
- •Буферные регистры
- •Параллельные периферийные адаптеры (ппа)
Система команд мп к1821вм85а
Команды МП приведены в таблице 5. В первой графе таблицы даны мнемокоды команд с обозначениями регистров через r, пар регистров через rp, ячеек памяти через M, третьего и второго байтов команды через b3b2, адресов ВУ через port. Ссылки на ячейки памяти M подразумевают косвенную регистровую адресацию: адреса этих ячеек берутся из регистровой пары H (регистров H и L) и, следовательно, не нуждаются в указании в самой команде.
Таблица 5 – Система команд МП К1821ВМ85А
Мнемокод |
Код |
Флажки |
Число |
Содержание |
||
байтов |
тактов |
циклов |
||||
1 |
2 |
3 |
4 |
5 |
6 |
7 |
Команды пересылки |
||||||
MOV r1, r2 |
01ПППИИИ |
– |
1 |
4 |
1 |
Пересылка из регистра r2 в регистр r1 |
MOV M, r |
01110ИИИ |
– |
1 |
7 |
2 |
Пересылка из регистра в память |
MOV r, M |
01ППП110 |
– |
1 |
7 |
2 |
Пересылка из памяти в регистр |
MVI r, b2 |
00ППП110 |
– |
2 |
7 |
2 |
Пересылка непосредственных данных в регистр |
Продолжение таблицы 5
Мнемокод |
Код |
Флажки |
Число |
Содержание |
||
байтов |
тактов |
циклов |
||||
1 |
2 |
3 |
4 |
5 |
6 |
7 |
Команды пересылки |
||||||
MVI M, b2 |
36 |
– |
2 |
10 |
3 |
Пересылка непосредственных данных в память |
LXI rp,b3b2 |
00ПР0001 |
– |
3 |
10 |
3 |
Загрузка непосредственных данных в пару регистров |
LDA b3b2 |
3A |
– |
3 |
13 |
4 |
Прямая загрузка аккумулятора |
STA b3b2 |
32 |
– |
3 |
13 |
4 |
Прямая запись аккумулятора в память |
LHLD b3b2 |
2A |
– |
3 |
16 |
5 |
Прямая загрузка пары регистров H |
SHLD b3b2 |
22 |
– |
3 |
16 |
5 |
Прямая загрузка пары регистров H в память |
LDAX rp |
00ПР1010 |
– |
1 |
7 |
2 |
Косвенная загрузка аккумулятора посредством пары регистров B или D |
STAX rp |
00ПР0010 |
– |
1 |
7 |
2 |
Косвенная запись аккумулятора в память посредством пары регистров B или D |
XCHG |
EB |
– |
1 |
4 |
1 |
Обмен между парами регистров H и D |
Команды арифметических и логических операций |
||||||
ADD r |
10000ИИИ |
+ |
1 |
4 |
1 |
Сложение регистра и аккумулятора |
ADD M |
86 |
+ |
1 |
7 |
2 |
Сложение памяти и аккумулятора |
ADI b2 |
C6 |
+ |
2 |
7 |
2 |
Сложение непосредственных данных и аккумулятора |
ADC r |
10001ИИИ |
+ |
1 |
4 |
1 |
Сложение регистра и аккумулятора с переносом |
Продолжение таблицы 5
Мнемокод |
Код |
Флажки |
Число |
Содержание |
||
байтов |
тактов |
циклов |
||||
1 |
2 |
3 |
4 |
5 |
6 |
7 |
Команды арифметических и логических операций |
||||||
ADC M |
8E |
+ |
1 |
7 |
2 |
Сложение памяти и аккумулятора с переносом |
ACI b2 |
CE |
+ |
2 |
7 |
2 |
Сложение непосредственных данных и аккумулятора с переносом |
SUB r |
10010ИИИ |
+ |
1 |
4 |
1 |
Вычитание регистра из аккумулятора |
SUB M |
96 |
+ |
1 |
7 |
2 |
Вычитание памяти из аккумулятора |
SUI b2 |
D6 |
+ |
2 |
7 |
2 |
Вычитание непосредственных данных из аккумулятора |
SBB r |
10011ИИИ |
+ |
1 |
4 |
1 |
Вычитание регистра из аккумулятора с заемом |
SBB M |
9E |
+ |
1 |
7 |
2 |
Вычитание памяти из аккумулятора с заемом |
SBI b2 |
DE |
+ |
2 |
7 |
2 |
Вычитание непосредственных данных из аккумулятора с заемом |
INR r |
00ППП100 |
(+) |
1 |
4 |
1 |
Инкремент регистра |
INR M |
34 |
(+) |
1 |
10 |
3 |
Инкремент памяти |
DCR r |
00ППП101 |
(+) |
1 |
4 |
1 |
Декремент регистра |
DCR M |
35 |
(+) |
1 |
10 |
3 |
Декремент памяти |
INX rp |
00ПР0011 |
– |
1 |
6 |
1 |
Инкремент пары регистров |
DCX rp |
00ПР1011 |
– |
1 |
6 |
1 |
Декремент пары регистров |
DAD rp |
00ПР1001 |
C |
1 |
10 |
3 |
Сложение регистровой пары H с регистровой парой |
Продолжение таблицы 5
Мнемокод |
Код |
Флажки |
Число |
Содержание |
||
байтов |
тактов |
циклов |
||||
1 |
2 |
3 |
4 |
5 |
6 |
7 |
Команды арифметических и логических операций |
||||||
DAA |
27 |
+ |
1 |
4 |
1 |
Преобразование аккумулятора в двоично-десятичный код |
ANA r |
10100ИИИ |
+ |
1 |
4 |
1 |
Логическое И регистра и аккумулятора |
ANA M |
A6 |
+ |
1 |
7 |
2 |
Логическое И памяти и аккумулятора |
ANI b2 |
E6 |
+ |
2 |
7 |
2 |
Логическое И непосредственных данных и аккумулятора |
XRA r |
10101ИИИ |
+ |
1 |
4 |
1 |
Исключающее ИЛИ регистра и аккумулятора |
XRA M |
AE |
+ |
1 |
7 |
2 |
Исключающее ИЛИ памяти и аккумулятора |
XRI b2 |
EE |
+ |
2 |
7 |
2 |
Исключающее ИЛИ непосредственных данных и аккумулятора |
ORA r |
10110ИИИ |
+ |
1 |
4 |
1 |
Логическое ИЛИ регистра и аккумулятора |
ORA M |
B6 |
+ |
1 |
7 |
2 |
Логическое ИЛИ памяти и аккумулятора |
ORI b2 |
F6 |
+ |
2 |
7 |
2 |
Логическое ИЛИ непосредственных данных и аккумулятора |
CMP r |
10111ИИИ |
+ |
1 |
4 |
1 |
Сравнение регистра и аккумулятора |
CMP M |
BE |
+ |
1 |
7 |
2 |
Сравнение памяти и аккумулятора |
Продолжение таблицы 5
Мнемокод |
Код |
Флажки |
Число |
Содержание |
||
байтов |
тактов |
циклов |
||||
1 |
2 |
3 |
4 |
5 |
6 |
7 |
Команды арифметических и логических операций |
||||||
CPI b2 |
FE |
+ |
2 |
7 |
2 |
Сравнение непосредственных данных и аккумулятора |
CMA |
2F |
– |
1 |
4 |
1 |
Инвертирование аккумулятора |
STC |
37 |
C |
1 |
4 |
1 |
Установка флажка переноса |
CMC |
3F |
C |
1 |
4 |
1 |
Инвертирование флажка переноса |
RLC |
07 |
C |
1 |
4 |
1 |
Циклический сдвиг аккумулятора влево |
RRC |
0F |
C |
1 |
4 |
1 |
Циклический сдвиг аккумулятора вправо |
RAL |
17 |
C |
1 |
4 |
1 |
Циклический сдвиг аккумулятора влево через разряд переноса |
RAR |
1F |
C |
1 |
4 |
1 |
Циклический сдвиг аккумулятора вправо через разряд переноса |
Команды управления |
||||||
JMP b3b2 |
C3 |
– |
3 |
10 |
3 |
Безусловный переход |
Jусл b3b2 |
11УУУ010 |
– |
3 |
10 |
3 |
Условный переход |
CALL b3b2 |
CD |
– |
3 |
18 |
5 |
Безусловный вызов подпрограммы |
Cусл b3b2 |
11УУУ100 |
– |
3 |
11/18 |
3/5 |
Условный вызов подпрограммы |
RET |
C9 |
– |
1 |
10 |
3 |
Возврат |
Rусл |
11УУУ000 |
– |
1 |
5/11 |
1/3 |
Возврат при условии |
RST n |
11nnn111 |
– |
1 |
11 |
3 |
Повторный запуск |
SPHL |
F9 |
– |
1 |
6 |
1 |
Пересылка пары регистров H в SP |
Окончание таблицы 5
Мнемокод |
Код |
Флажки |
Число |
Содержание |
||
байтов |
тактов |
циклов |
||||
1 |
2 |
3 |
4 |
5 |
6 |
7 |
Специальные команды |
||||||
PUSH rp |
11РП0101 |
– |
1 |
11 |
3 |
Пересылка пары регистров в стек |
PUSH PSW |
F5 |
– |
1 |
11 |
3 |
Пересылка аккумулятора и регистра флажков в стек |
POP rp |
11РП0001 |
– |
1 |
10 |
3 |
Загрузка регистровой пары из стека |
POP PSW |
F1 |
+ |
1 |
10 |
3 |
Загрузка аккумулятора и регистра флажков из стека |
XTHL |
E3 |
– |
1 |
18 |
5 |
Обмен между регистровой парой H и стеком |
PCHL |
E9 |
– |
1 |
5 |
1 |
Пересылка регистровой пары H в PC |
IN port |
DB |
– |
2 |
10 |
3 |
Ввод |
OUT port |
D3 |
– |
2 |
10 |
3 |
Вывод |
EI |
FB |
– |
1 |
4 |
1 |
Разрешение прерывания |
DI |
F3 |
– |
1 |
4 |
1 |
Запрещение прерывания |
HLT |
76 |
– |
1 |
7 |
2 |
Останов |
NOP |
00 |
– |
1 |
4 |
1 |
Нет операции |
RIM |
20 |
– |
1 |
4 |
1 |
Чтение маски прерывания |
SIM |
30 |
– |
1 |
4 |
1 |
Запись маски прерывания |
Во второй графе коды первого байта команды b1 даются в двоичном восьмиразрядном представлении, если требуется указать в них адреса операндов, или в двухразрядном шестнадцатеричном представлении в иных случаях. Разряды обобщенных адресов регистров – источников данных – выражены буквами ИИИ, регистров – приемников данных – буквами ППП, пар регистров – буквами ПР. Подставляя вместо буквенных символов обобщенные адреса (таблица 2), получим коды конкретных вариантов команды.
Пример 1 – Из обобщенной формы команды пересылки MOV r1, r2 (пересылка из регистра r2 в регистр r1) получим код для конкретного варианта MOV D, B (пересылка из регистра B в регистр D):
01 ППП ИИИ = 01 010 000 (2) = 50 H.
Пример 2 – Определим код команды загрузки непосредственных данных в пару регистров D–E MVI D, 0800 H:
b 1: 00ПР0001 = 00 01 0001 (2) = 11 H;
b2: 00 H; b3: 08 H.
В данной команде байт b3 пересылается в старший регистр пары (D), а байт b2 – в младший регистр (E).
Коды условий, при выполнении которых осуществляется указанная в команде управления операция, обозначены буквами УУУ. Их расшифровка приведена в таблице 6.
Таблица 6 – Коды условий для команд управления
УУУ |
Мнемокод |
Условия |
000 |
NZ |
Неравенство нулю |
001 |
Z |
Равенство нулю |
010 |
NC |
Отсутствие переноса |
011 |
C |
Наличие переноса |
100 |
PO |
Нечетность |
101 |
PE |
Четность |
110 |
P |
Плюс |
111 |
M |
Минус |
Включая конкретные условия в мнемокоды команд, получаем их варианты. Например, команда условного перехода из обобщенной формы Jусл b3b2 переводится в вариант JNZ b3b2 – переход к команде с адресом b3b2, если признак результата говорит о том, что результат не равен нулю. Признаки формируются в регистре флажков RF по результатам выполненной операции, формат которого представлен на рисунке 13.
S |
Z |
0 |
AC |
0 |
P |
1 |
C |
бит 7 |
|
|
|
|
|
|
бит 0 |
Рисунок 13 – Формат регистра флажков RF
Значение признака S = 0 означает «плюс», S = 1 – «минус», Z = 0 – неравенство нулю, Z = 1 – равенство нулю, C или AC = 1 – наличие переноса, C или AC = 0 – отсутствие переноса, P = 0 – нечетность, P = 1 – четность. Разряды 5, 3, 1 содержат константы и для признаков не используются.
В коде команды рестарта RST три разряда, отмеченные буквами nnn, формируются системой прерываний или указываются программистом. При выполнении команды текущее содержимое программного счетчика PC загружается в стек, а в PC формируется код с нулевым старшим байтом и младшим байтом вида 000nnn000.
Операция сравнения производится вычитанием операндов с установкой признака результата (Z = 1 – равные операнды, S = 0 – содержимое аккумулятора больше второго операнда, S = 1 – меньше).
В третьей графе прочерк означает, что выполнение команды не сопровождается выработкой флажков-признаков, знак плюс говорит об установке всех признаков, знак плюс в скобках – об установке всех признаков, кроме признака наличия или отсутствия переноса C, а символ C означает, что вырабатывается только признак наличия или отсутствия переноса.
Команды RLC, RRC, RAL и RAR реализуют циклические (кольцевые) сдвиги содержимого аккумулятора на один разряд в ту или иную сторону без включения (RLC и RRC) или с включением (RAL и RAR) в кольцо разряда C регистра флажков (рисунок 14).
Рисунок 14 – Схемы, поясняющие выполнение сдвигов микропроцессором
В командах управления число циклов и тактов следует брать из знаменателя, если выполняется условие.