Система команд ВЕ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 F8―FF ARr, r = 0—7
MOV A, @Ri F0―F1 A(Ri), i = 0—1
MOV A, #data Adata
MOV Rr, A А8―AF RrA, r = 0—7
MOV @Ri, A А0—А1 (Ri)A, i = 0—1
MOV Rr, #data В8—BF Rrdata, r = 0—7
MOV @Ri, #data В0—В1 (Ri)data, i = 0—1
MOV A, PSW*2 С7 APSW
MOV PSW, A*2 D7 + PSWA
XCH A, Rr 28—2F A«Rr, r = 0—7
XCH А, @Ri 20—21 A«(Ri), i = 0—1
XCHD A, @Ri 30―31 A03«(Ri)0—3, i = 0—1
SWAP A A03«A74
MOVX A, @Ri*3 80—81 AXSEG(Ri), i = 0—1
MOVX @Ri, A*3 90—91 XSEG(Ri)A, i = 0—1
MOVP A, @A A3 ACSEG (PC8—11:A)
MOVP3 A, @A*2 ЕЗ ACSEG (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 68—6F + AA + Rr, r = 0—7
ADD A, @Ri 60—61 + AA + (Ri), i = 0—1
ADD A, #data + AA + data
ADDC A, Rr 78—7F + AA + Rr + CY, r = 0—7
ADDC A, @Ri 70—71 + AA + (Ri) + CY, i = 0—1
ADDC A, #data + AA + data + CY
ANL A, Rr 58—5F AA AND Rr, r = 0—7
ANL A, @Ri 50—51 AA AND (Ri), i = 0—1
ANL A, #data AA AND data
ORL A, Rr 48—4F AA OR Rr, r = 0—7
ORL A, @Ri 40—41 AA OR (Ri), i = 0—1
ORL A, #data AA OR data
XRL A, Rr D8—DF AA XOR Rr, r = 0—7
XRL A, @Ri D0—D1 AA XOR (Ri), i = 0—1
XRL A, #data D3 AA XOR data
INC A AA + 1
DEC A AA – 1
CLR A A0
CPL A ANOT A
DA A + Десятичная коррекция А
RL A Е7 A0A7, AnAn1, n = 1—7
RLC A F7 + A0CY, АnАn—1, CYA7,
          n = 1—7
RR A А7А0, АnАn+1, n = 0—6
RRC A + A7CY, AnAn+1, CYA0,
          n = 0—6
INC Rr 18—1F RrRr + 1, r = 0—7
INC @Ri 10—11 (Ri)(Ri) + 1, i = 0—1
DEC Rr С8—CF RrRr – 1, r = 0—7

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

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

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

Таблица 4.4

Мнемоника Число байтов   Число циклов   Код CY Описание
CLR С       CY0  
CPL С   А7   +   CYNOT CY  
CLR F0*2     —   F00  
CPL F0*2     —   F0NOT F0  
CLR F1*2     А5   —     F10  
CPL F1*2     В5   —   F1NOT F1  
SEL RB0*2     С5   —     BS0  
SEL RB1*2     D5   —     BS1  
SEL MB0*3     Е5   —     MB0  
SEL MB1*3     F5     MB1  

Для выбора банков рабочих регистров и памяти программ используются флажки 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       aaa00100   —   PCaddr11, PC11MB  
JMPP @A       ВЗ   —   PC07CSEG(PC811:A)  
DJNZ Rr, addr8       Е8—EF   —   RrRr – 1, если Rr ¹ 0, то  
                    PC0—7addr8, n = 0—7  
JC addr8       F6   —   Если CY = 1, то PC0—7addr8  
JNC addr8         Е6   —   Если CY = 0, то PC0—7addr8  
JZ addr8       С6   —   Если А = 0, то PC0—7addr8  
JNZ addr8         —   Если А ¹ 0, то PC0—7addr8  
JT0 addr8*1         —   Если T0 = 1, то PC0—7addr8  
JNT0 addr8*1         —   Если Т0 = 0, то PC0—7addr8  
JT1 addr8         —   Если T1 = 1, то PC0—7addr8  
JNT1 addr8         —   Если T1 = 0, то PC0—7addr8  
JF0 addr8*2       В6   —   Если F0 = 0, то PC0—7addr8  
JF addr8*2         —   Если F1 = 0, то PC0—7addr8  
JTF addr8         —   Если TF = 1, то PC0—7addr8,  
                    TF0  
JNI addr8*3         —   Если INТ = 0, тоРС07addr8  
JBb addr8*2       bbb10010   —   Если Ab = 0, то PC0—7addr8,  
                    b = 0—7  
CALL addr11       aaa10100   —   (SP)PSW4—7, (SP)PC  
                    addr11, PC11MB, SPSP + 1  
RET         —   SPSP – 1, PC0—12(SP)  
RETR*2         +   SPSP – 1, PC0—12(SP),  
                    PSW4—7(SP)  
NOP         —   Нет операции  
IDL*4         —   Перевод МК в режим с малым  
                    потреблением мощности  

Команда безусловной передачи 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       09—0А   — - АРр, р = 1—2  
OUTL Рр, А       39—3А   —     РрА, р = 1—2  
ANL Pp, #data*2       99—9А   —   РрРр AND data, p = 1—2  
ORL Pp, #data*2       89—8А   —   РрРр OR data, p = 1—2  
INS A, BUS*3         —   ABUS  
OUTL BUS, A*3         —     BUSA  
ANL BUS, #data*3         —   BUSBUS AND data  
ORL BUS. #data*3         —   BUSBUS OR data  
MOVD A, Pp     0С—0F   —   A0—3Pp, A4—70, p = 4—7  
MOVD Pp, A     3С—3F   —   PpA0—3, p = 4—7  
ANLD Pp, A       9С—9F   —   PpPp AND A0—3, p = 4—7  
ORLD Pp, A       8С—8F   —   PpPp OR A 0—3, р = 4—7  
MOV A, T         —   AT  
MOV T, A         —   TA  
STRT Т         —   Пуск Т  
STRT CNT         —   Пуск CNT  
STOP TCNT         —   Останов Т/CNT  
EN TCNTI*2         —   Разрешение прерываний от  
                    Т/CNT  
DIS TCNTI*2         —   Запрет прерываний от  
                    T/CNT  
ENT0 CLK*3         —   Разрешение CLK на Т0  
EN I*2         —     Разрешение прерываний по  
                    INT  
DIS I*2         —   Запрет прерываний по INT  

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

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

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

 

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








Дата добавления: 2019-02-07; просмотров: 358;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.015 сек.