Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
231
Добавлен:
04.01.2020
Размер:
5.37 Mб
Скачать

3.2.12 Система команд простого микропроцессора

Команды, выполняемые МП (таблица 3.1), делятся на следующие четыре группы:

-пересылки;

-арифметических и логических операций;

-управления;

-специальные.

Команды пересылки предусматривают передачи данных между регистрами; между регистрами и ячейками памяти; передачу непосредственных данных, находящихся в команде, в регистр, пару регистров или ячейку памяти; обмен между парами регистров.

Арифметические и логические операции выполняются командами сложения,

вычитания, инкрементирования и декрементирования, преобразования данных в двоично-десятичный код, логических операций (конъюнкции, дизъюнкции и сложения по модулю 2), сравнения и инвертирования данных, циклических сдвигов содержимого регистра-аккумулятора.

Команды управления включают в свой состав команды переходов, вызовов подпрограмм, возвратов в основную программу, передачи содержимого пары регистров в стек.

Таблица 3.1 – Система команд простого микропроцессора

 

 

 

 

Число

 

 

Мнемокод

Код

Флажки

байтов

тактов

циклов

Содержание

 

 

 

 

 

 

 

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

Пересылка непо-

 

 

 

 

 

средственных дан-

 

 

 

 

 

 

 

 

 

 

 

 

ных в регистр

 

 

 

 

 

 

 

201

Продолжение таблицы 3.1

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

Сложение регистра

 

 

 

 

 

 

 

и аккумулятора с

 

 

 

 

 

 

 

переносом

202

Продолжение таблицы 3.1

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 с

 

 

 

 

 

 

 

 

 

 

 

 

 

 

регистровой парой

203

Продолжение таблицы 3.1

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

Сравнение памяти

 

 

 

 

 

 

 

и аккумулятора

204

Продолжение таблицы 3.1

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

205

Окончание таблицы 3.1

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

Запись маски пре-

 

 

 

 

 

 

рывания

Специальные команды связаны с операциями со стеком, загрузкой программного счетчика, вводом/выводом данных, прерываниями, остановом МП и введением пустых циклов NOP.

В первой графе таблицы 3.1 даны мнемокоды команд с обозначениями регистров через r, пар регистров через rp, ячеек памяти через М, третьего и второго байтов через b3b2, адресов ВУ через port. Ссылки на ячейки памяти М подразумевают косвенную адресацию, т. е. адреса этих ячеек берутся из регистровой пары H (регистров H и L) и, следовательно, не нуждаются в указании в самой команде.

206

Во второй графе коды первого байта команды b1 даются в двоичном восьмиразрядном представлении, если требуется указать в них адреса источников и приемников данных, или в двухразрядном шестнадцатеричном представлении в иных случаях. Разряды обобщенных адресов регистров – источников данных выражены буквами ИИИ, регистров-приемников данных – буквами ППП, пар регистров – буквами ПР. Подставляя вместо буквенных символов обобщенные адреса регистров (таблица 3.2), получим коды конкретных вариантов команды.

Таблица 3.2 – Адреса регистров и регистровых пар микропроцессора

 

 

 

Регистры

 

 

 

 

Пары регистров

 

B

C

D

E

 

H

L

A

B

D

H

SP

000

001

010

011

 

100

101

111

00

01

10

11

Пример 3.1. Из обобщенной формы команды пересылки MOV r1, r2 (пересылка из регистра r2 в регистр r1) получим код для конкретного варианта MOV D, B (пересылка из регистра B в регистр D):

b

: 01 ППП ИИИ = 01 010 000

(2)

= 50 h.

1

 

 

 

 

 

 

 

КОп Адр. r

1

Адр. r

2

Адр. D Адр. B

 

В рассмотренном примере используется прямая регистровая адресация. Пример 3.2. Из обобщенной формы команды пересылки из регистра в па-

мять MOV М, r получим код для конкретного варианта MOV М, А (пересылка из регистра-аккумулятора в ячейку памяти) при косвенной адресации, т. е. по адресу, содержащемуся в регистровой паре Н:

b1: 01 110 ИИИ = 01 110 111(2) = 77 h.

КОп M Адр. r Адр. A

Пример 3.3. Определим код команды загрузки непосредственных данных (непосредственная адресация) LXI H, 200А h в регистровую пару Н:

b1: 00ПР0001 = 00100001(2) = 21 h;

Адр. rp

Адр.

b2: OA h;

b3: 20 h.

В командах управления коды условий, при которых выполняется указанная операция, обозначены буквами УУУ. Их расшифровка приведена в таблице 3.3.

207

Таблица 3.3 – Коды условий для команд управления

УУУ

Мнемокод

Условия

000

NZ

Неравенство нулю

001

Z

Равенство нулю

010

NC

Отсутствие переноса

011

C

Наличие переноса

100

PO

Нечетность

101

PE

Четность

110

P

Плюс

111

M

Минус

Включая конкретные условия в мнемокоды команд, получаем их варианты. Например, команда условного перехода из обобщенной формы Jусл b3b2 переводится в вариант JNZ b3b2 – переход к команде с адресом b3b2, если признак результата говорит о том, что результат предыдущей операции не равен нулю т. е. содержимое триггера TZ равно нулю. Если же условие перехода не выполняется, то МП считывает очередную команду. Определим код команды JNZ 200C h:

b

: 00УУУ010 = 11000010

(2)

= С2 h;

1

 

 

 

 

 

 

 

Код NZ

 

 

 

b

: OC h;

b : 20 h.

 

 

2

 

3

 

 

В рассмотренной команде используется прямая адресация.

Признаки (флажки) формируются в регистре флажков RF по результатам выполненной операции. Формат регистра RF представлен на рисунке 3.13.

S

Z

0

AC

0

P

1

C

бит 7

 

 

 

 

 

 

бит 0

Рисунок 3.13 – Формат регистра флажков

Значение признака S устанавливается в соответствии со значением старшего разряда результата предыдущей операции. Значение признака S = 0 означает «плюс», S = 1 – «минус», Z = 0 – неравенство нулю, Z = 1 – равенство нулю, C или АС = 1 – наличие переноса, С или АС = 0 – отсутствие переноса, Р = 0 – нечетность результата, Р = 1 – четкость. Разряды 5, 3, 1 содержат константы и для признаков не используются.

В третьей графе таблицы 3.1 прочерк означает, что выполнение команды не сопровождается выработкой флажков – признаков, знак плюс говорит об установке всех признаков, знак плюс в скобках – об установке всех признаков,

208

кроме признака наличия или отсутствия переноса С, а символ С означает, что вырабатывается только признак наличия или отсутствия переноса.

В коде команды рестарта RSTn три разряда отмеченные буквами nnn, формируются системой прерываний или указываются программистом. При выполнении этой команды текущее содержимое программного счетчика РС загружается в стек, а в РС формируется код с нулевым старшим байтом и младшим байтом вида 11nnn111.

Операция сравнения CMP r производится вычитанием операндов с установкой признака результата (Z = 1 – равные операнды, С = 0 – содержимое ре- гистра-аккумулятора больше второго операнда, С = 1 – меньше).

Команды RLC, RRC, RAL и RAR реализуют циклические (кольцевые) сдвиги содержимого регистра-аккумулятора на один разряд влево или вправо без включения (RLC и RRC) или с включение (RAL и RAR) в кольцо разряда С регистра флажков RF (рисунок 3.14).

RF

 

 

 

 

 

 

 

...

 

 

...

...

 

 

 

 

C

A

A

 

RLC

...

7

 

0

 

 

 

 

 

RF

 

 

 

 

 

 

 

...

 

 

...

...

 

 

 

 

C

A

A

 

RRC

...

7

 

0

 

 

 

 

 

RF

 

 

 

 

 

 

 

...

 

 

...

...

 

 

 

 

C

A

A

 

RAL

...

7

 

0

 

 

 

 

 

RF

 

 

 

 

 

 

 

...

 

 

...

...

 

 

 

 

C

A

A

 

RAR

...

7

 

0

 

 

 

 

 

Рисунок 3.14 – Схемы, поясняющие выполнение сдвигов микропроцессором

В четвертой графе таблицы 3.1 указывается формат команды в байтах, а в пятой и шестой графах – числа машинных циклов и тактов, необходимые для выполнения команды. В командах управления число циклов и тактов следует брать из знаменателя, если выполняется условие.

Контрольные вопросы к теме 3.2

1Дайте определение МП.

2Какие основные архитектурные разновидности МП используются в МПС?

3Какие основные узлы входят в состав МПС?

4Какие запоминающие устройства применяются в МПС? Укажите их назначение.

209

5 Укажите особенности, достоинства и недостатки принстонской и гарвардской архитектур МПС.

6Укажите особенности и назначение регистра-аккумулятора в схеме МП.

7Какие регистры МП называются РОН? В чем состоит роль этих регистров?

8Укажите функции регистра команд IR и программного счетчика РС в схеме МП.

9Укажите назначение стека и указателя стека SP в структуре МП.

10 В какие узлы МП загружаются первый, второй и третий байты команды и каково содержимое этих байтов для разных форматов команд (однобайтовой, двухбайтовой и трехбайтовой)?

11 Поясните какие действия выполняет МП в первых трех тактах машинного цикла? 12 Какие изменения в работу МП вносит отсутствие сигнала на входе READY?

13 В чем отличие радиальных и векторных прерываний?

14 Когда МП проверяет наличие запросов прерывания и захвата? Укажите действия МП при их появлении.

15 Поясните сущность прямой и прямой регистровой адресации, а также укажите их достоинства и недостатки.

16 Поясните сущность косвенной адресации и укажите области ее применения. 17 Поясните разницу между непосредственной и прямой адресациями.

18 Какой процесс называют «прямым доступом к памяти»? Какие преимущества дает использование этого процесса в МПС?

19 Какие операции выполняют команды пересылки и команды управления?

20 Какую команду необходимо выполнить перед выполнением команды с косвен-ной адресацией?

Тема 3.3 Программирование микропроцессоров

3.3.1 Приемы программирования микропроцессоров

Микропроцессоры (МП) можно программировать на языках кодовых комбинаций и Ассемблер. В первом случае команды программы представляются в виде кодовых комбинаций в двоичной системе счисления. Это усложняет поиск ошибок, программы трудно читаемы и плохо обозримы, трудно вносить изменения. Наряду с указанными недостатками язык кодовых комбинаций позволяет составлять программы наиболее эффективно. Программы занимают минимальный объем памяти и быстрее исполняются.

При использовании языка Ассемблер программирование упрощается. В этом языке вместо кодовых комбинаций применяется мнемоническая форма записи операций, выполняемых в МП. С помощью мнемоники, взятой из сочетания букв соответствующих английских слов, представляют вид выполняемой операции, операнды и адреса. Каждой команде на языке Ассемблер соответствует

210