Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Микропроцессорные средства и системы.doc
Скачиваний:
44
Добавлен:
13.11.2019
Размер:
15.2 Mб
Скачать

4.6. Система команд ве48

Базовая архитектура ВЕ48 содержит 96 машинных или 52 символьных команды, которые обеспечивают широкие возможности реализации сложных программных структур. Они имеют длину 1—2 байта, причем более 70% команд—однобайтовые. Все команды выполняются за один или два цикла и занимают соответственно 2,5 или 5 мкс при частоте 6 МГц на входе XTAL. Свыше 50% команд—одноцикловые, некоторые однобайтовые команды—двухцикловые. Команды объединены в пять групп: пересылки, обработки данных, манипуляции флажками, передачи управления, ВВ и управления режимом реального времени, которые приведены в табл. 4.2—4.6. Команды помеченные любым знаком сноски, не входят в систему команд 8021, которая является усеченным вариантом системы ВЕ48. Кроме того, команды с номером сноски выше первого не включены в систему 8022. Команды, помеченные третьим или четвертым знаком сноски, не входят в набор ВЕ41. Единственная команда с четвертым знаком сноски не является базовой и определена только в КМОП МП. (Расширение ВЕ41 будет рассмотрено в § 4.9.) Системы команд ВЕ49/ВЕ50 и ВЕ48 тождественны.

Группа команд пересылки, приведенная в табл. 4.2, дает возможность организовать передачу и обмен данными между аккумулятором и рабочими регистрами (или ячейками) внутренней памяти данных. В последнем случае используется только косвенный регистровый способ адресации через указатели R0, R1 выбранного банка рабочих регистров. Предусмотрены команды загрузки A, Rr, r = 0—7, и внутреннего ОЗУ непосредственными данными. Все команды из подгруппы обмена оперируют байтами кроме двух, которые оперируют тетрадами, что может быть полезным при обработке 2/10-чисел и других 4-разрядных значений.

Таблица 4.2

Мнемоника

Число байтов

Число циклов

Код

CY

Описание

MOV А, Rr

1

1

F8―FF

ARr, r = 0—7

MOV A, @Ri

1

1

F0―F1

A(Ri), i = 0—1

MOV A, #data

2

2

23

Adata

MOV Rr, A

1

1

А8―AF

RrA, r = 0—7

MOV @Ri, A

1

1

А0—А1

(Ri)A, i = 0—1

MOV Rr, #data

2

2

В8—BF

Rrdata, r = 0—7

MOV @Ri, #data

2

2

В0—В1

(Ri)data, i = 0—1

MOV A, PSW*2

1

1

С7

APSW

MOV PSW, A*2

1

1

D7

+

PSWA

XCH A, Rr

1

1

28—2F

ARr, r = 0—7

XCH А, @Ri

1

1

20—21

A(Ri), i = 0—1

XCHD A, @Ri

1

1

30―31

A03(Ri)0—3, i = 0—1

SWAP A

1

1

47

A03A74

MOVX A, @Ri*3

1

2

80—81

AXSEG(Ri), i = 0—1

MOVX @Ri, A*3

1

2

90—91

XSEG(Ri)A, i = 0—1

MOVP A, @A

1

2

A3

ACSEG (PC8—11:A)

MOVP3 A, @A*2

1

2

ЕЗ

ACSEG (3:A)

Аккумулятор может также выполнять обмен данными с внешней памятью XSEG, PSW и считывать константы из памяти программ CSEG. Допускается считывание либо из текущей страницы, адресуемой PC8—11, либо из страницы 3, резервируемой специально для данного случая. Смещение внутри страницы определяется содержимым А.

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

ADD A, src ;Сложение

ADDC A, src ;Сложение с переносом

ANL A, src ;Логическое И

ORL A, src ;Логическое ИЛИ

XRL A, src ;Логическое исключающее ИЛИ

Таблица 4.3

Мнемоника

Число байтов

Число циклов

Код

CY

Описание

ADD A, Rr

1

1

68—6F

+

AA + Rr, r = 0—7

ADD A, @Ri

1

1

60—61

+

AA + (Ri), i = 0—1

ADD A, #data

2

2

03

+

AA + data

ADDC A, Rr

1

1

78—7F

+

AA + Rr + CY, r = 0—7

ADDC A, @Ri

1

1

70—71

+

AA + (Ri) + CY, i = 0—1

ADDC A, #data

2

2

13

+

AA + data + CY

ANL A, Rr

1

1

58—5F

AA AND Rr, r = 0—7

ANL A, @Ri

1

1

50—51

AA AND (Ri), i = 0—1

ANL A, #data

2

2

53

AA AND data

ORL A, Rr

1

1

48—4F

AA OR Rr, r = 0—7

ORL A, @Ri

1

1

40—41

AA OR (Ri), i = 0—1

ORL A, #data

2

2

43

AA OR data

XRL A, Rr

1

1

D8—DF

AA XOR Rr, r = 0—7

XRL A, @Ri

1

1

D0—D1

AA XOR (Ri), i = 0—1

XRL A, #data

2

2

D3

AA XOR data

INC A

1

1

17

AA + 1

DEC A

1

1

07

AA – 1

CLR A

1

1

27

A0

CPL A

1

1

37

ANOT A

DA A

1

1

57

+

Десятичная коррекция А

RL A

1

1

Е7

A0A7, AnAn1, n = 1—7

RLC A

1

1

F7

+

A0CY, АnАn—1, CYA7,

n = 1—7

RR A

1

1

77

А7А0, АnАn+1, n = 0—6

RRC A

1

1

67

+

A7CY, AnAn+1, CYA0,

n = 0—6

INC Rr

1

1

18—1F

RrRr + 1, r = 0—7

INC @Ri

1

1

10—11

(Ri)(Ri) + 1, i = 0—1

DEC Rr

1

1

С8—CF

RrRr – 1, r = 0—7

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

В группе отсутствует операция вычитания, которую легко можно выполнить с помощью команд логического дополнения, приращения и арифметического сложения. Отсутствуют также какие-либо операции с данными из внешней памяти. Для их выполнения информация сначала должна быть переслана в аккумулятор.

В состав системы команд ВЕ48 входит ряд команд по работе над одноразрядными флажками CY, F0 и F1 (табл. 4.4). Флажок CY является основным арифметическим признаком; F0, F1 носят общий характер, их функциональное назначение определяется пользователем. Над каждым из флажков предусмотрены команды очистки CLR и инверсии CPL.

Таблица 4.4

Мнемоника

Число байтов

Число циклов

Код

CY

Описание

CLR С

1

1

97

0

CY0

CPL С

1

1

А7

+

CYNOT CY

CLR F0*2

1

1

85

F00

CPL F0*2

1

1

95

F0NOT F0

CLR F1*2

1

1

А5

F10

CPL F1*2

1

1

В5

F1NOT F1

SEL RB0*2

1

1

С5

BS0

SEL RB1*2

1

1

D5

BS1

SEL MB0*3

1

1

Е5

MB0

SEL MB1*3

1

1

F5

MB1

Для выбора банков рабочих регистров и памяти программ используются флажки BS и MB соответственно. Прямая манипуляция их содержимым реализуется с помощью команды выбора SEL (см. табл. 4.4). Выбор нулевого банка RB0 или МВ0 соответствует загрузке в BS или MB нуля, выбор первого банка RB1 или МВ1—единицы.

Система команд ВЕ48 включает 16 команд перехода, из которых 14 условных (табл. 4.5). Только одна команда подгруппы осуществляет переход в любое место программной памяти емкостью 4К байт. Для этого она использует прямой 11-разрядный адрес внутри банка и текущее значение флажка выбора банка MB. Управление флажком MB реализуется отдельными командами SEL МВ0 и SEL MB1 из группы битовой обработки. Остальные команды разрешают переход внутри текущей страницы.

Таблица 4.5

Мнемоника

Число байтов

Число циклов

Код

CY

Описание

JMP addr11

2

2

aaa00100

PCaddr11, PC11MB

JMPP @A

1

2

ВЗ

PC07CSEG(PC811:A)

DJNZ Rr, addr8

2

2

Е8—EF

RrRr – 1, если Rr  0, то

PC0—7addr8, n = 0—7

JC addr8

2

2

F6

Если CY = 1, то PC0—7addr8

JNC addr8

2

2

Е6

Если CY = 0, то PC0—7addr8

JZ addr8

2

2

С6

Если А = 0, то PC0—7addr8

JNZ addr8

2

2

96

Если А  0, то PC0—7addr8

JT0 addr8*1

2

2

36

Если T0 = 1, то PC0—7addr8

JNT0 addr8*1

2

2

26

Если Т0 = 0, то PC0—7addr8

JT1 addr8

2

2

56

Если T1 = 1, то PC0—7addr8

JNT1 addr8

2

2

46

Если T1 = 0, то PC0—7addr8

JF0 addr8*2

2

2

В6

Если F0 = 0, то PC0—7addr8

JF addr8*2

2

2

76

Если F1 = 0, то PC0—7addr8

JTF addr8

2

2

16

Если TF = 1, то PC0—7addr8,

TF0

JNI addr8*3

2

2

86

Если INТ = 0, тоРС07addr8

JBb addr8*2

2

2

bbb10010

Если Ab = 0, то PC0—7addr8,

b = 0—7

CALL addr11

2

2

aaa10100

(SP)PSW4—7, (SP)PC

addr11, PC11MB, SPSP + 1

RET

1

2

83

SPSP – 1, PC0—12(SP)

RETR*2

1

2

93

+

SPSP – 1, PC0—12(SP),

PSW4—7(SP)

NOP

1

1

00

Нет операции

IDL*4

1

1

01

Перевод МК в режим с малым

потреблением мощности

Команда безусловной передачи JMPP @А организует переход по содержимому таблицы ветвлений, расположенной в текущей странице. Содержимое аккумулятора А применяется в качестве смещения в таблице, что дает возможность простейшими средствами реализовать программные переключатели. Команда DJNZ Rr, addr8 уменьшает содержимое одного из рабочих регистров на единицу и делает переход, если его содержимое не равно нулю. Данная команда очень эффективна при организации программных циклов. Двенадцать команд условного перехода тестируют на 0 содержимое А, состояние флажков CY, F0, F1, TF и внешних входов Т0, T1, INT. Ветвление внутри страницы выполняется в зависимости от результата тестирования. Последняя команда JBb addr8 дает возможность проверить состояние любого бита Аb, b = 0—7, аккумулятора.

В составе группы передачи управления три команды для организации вызова и возврата из подпрограмм. Команда CALL addr11 подобно JMP addr11 использует 11-разрядный адрес внутри банка и состояние MB для выбора банка. По данной команде текущее значение 12-разрядного PC и четыре флажка BS, F0, АС и CY из PSW «заталкиваются» в стек. Команда RETR возвращает в исходное состояние PC и PSW. Команда RET восстанавливает только PC, давая возможность использовать флажки для передачи параметров.

Отсутствие средств чтения текущего состояния MB вызывает ряд трудностей при программировании. Так, при возврате из подпрограмм состояние MB в общем случае не определено, так как не известно, изменялся он подпрограммой или нет. Данное обстоятельство требует некоторого соглашения на правила манипуляции флажком при вызове подпрограмм. В частности, процедуры обслуживания прерывания, точки входов которых расположены в нулевом банке, вообще не должны изменять его состояние. Следовательно, эти процедуры должны быть полностью расположены в нулевом банке памяти программ.

Пустая команда NOP обеспечивает простой переход к следующему элементу программной последовательности. В КМОП-вариантах МК, например 80С49/80С39, предусмотрена еще одна команда IDL, которая не входит в базовый набор. Эта команда переводит МК в состояние останова, свободное от выполнения каких-либо последующих команд. Тем не менее в состоянии останова поддерживается работа средств реального времени и при поступлении запроса на прерывание МК может перейти на подпрограмму его обслуживания. Выход из состояния останова осуществляется также при общем сбросе системы.

В табл. 4.6 приведены команды, которые обслуживают пространство ВВ, состоящее из трех 8-разрядных внутренних портов BUS, P1, P2 и четырех 4-разрядных внешних портов Р4—Р7. Ввод и вывод данных осуществляется через аккумулятор или его младшую половину. Предусматриваются логические команды И и ИЛИ содержимого портов BUS, P1, P2 с литералом, представляющие простейшую, но достаточно эффективную обработку операндов из внутреннего пространства ВВ. При работе с внешними портами вторым операндом команд И и ИЛИ служит содержимое младшей тетрады А. Команды этого типа дают возможность манипулировать отдельными битами портов ВВ независимо от других.

Таблица 4.6

Мнемоника

Число байтов

Число циклов

Код

CY

Описание

IN A, Pp

1

2

09—0А

-

АРр, р = 1—2

OUTL Рр, А

1

2

39—3А

РрА, р = 1—2

ANL Pp, #data*2

2

2

99—9А

РрРр AND data, p = 1—2

ORL Pp, #data*2

2

2

89—8А

РрРр OR data, p = 1—2

INS A, BUS*3

1

2

08

ABUS

OUTL BUS, A*3

1

2

02

BUSA

ANL BUS, #data*3

2

2

98

BUSBUS AND data

ORL BUS. #data*3

2

2

88

BUSBUS OR data

MOVD A, Pp

1

2

0С—0F

A0—3Pp, A4—70, p = 4—7

MOVD Pp, A

1

2

3С—3F

PpA0—3, p = 4—7

ANLD Pp, A

1

2

9С—9F

PpPp AND A0—3, p = 4—7

ORLD Pp, A

1

2

8С—8F

PpPp OR A 0—3, р = 4—7

MOV A, T

1

1

42

AT

MOV T, A

1

1

62

TA

STRT Т

1

1

55

Пуск Т

STRT CNT

1

1

45

Пуск CNT

STOP TCNT

1

1

65

Останов Т/CNT

EN TCNTI*2

1

1

25

Разрешение прерываний от

Т/CNT

DIS TCNTI*2

1

1

35

Запрет прерываний от

T/CNT

ENT0 CLK*3

1

1

75

Разрешение CLK на Т0

EN I*2

1

1

05

Разрешение прерываний по

INT

DIS I*2

1

1

15

Запрет прерываний по INT

В архитектурах 8021/8022 порт BUS заменен на стандартный порт Р0. Поэтому операции ВВ с ним осуществляются в рамках общей команды

IN A, Pp ;АРр, р = 0—2

OUTL Рр, А ;РрА, р = 0—2

Подгруппа управления средствами реального времени (см. табл. 4.6) содержит команды, работающие с таймером/счетчиком и подсистемой прерываний. Сюда входят операции чтения и загрузки состояния устройства счета, его запуск в режиме таймера или счетчика, останов, а также четыре команды по разрешению и запрещению прерываний. Специальная операция ENTO CLK программирует выдачу синхроимпульсов CLK = (1/3)OSC на выход Т0.