Система команд включает 111 команд - однобайтовых (49), двухбайтовых (45) и трехбайтовых (17). Все команды выполняются за 1 или 2 МЦ (12 тактов CLK), за исключением команд умножения и деления MUL и DIV, для выполнения которых требуется 4 МЦ. Большинство двухбайтовых команд - одноцикловые, а все трехбайтовые двухцикловые. За один МЦ в..ВЕ52 можно вводить до двух байтов программного кода.
В микро-ЭВМ предусмотрена прямая (direct), косвенная (через R0, R1 или DPTR) и непосредственная (# data) адресация элементов DSEG и RSEG, прямая адресация элемента BSEG, косвенная (через R0, R1 или DPTR) адресация XSEG.
Все множество команд разбито на 5 групп: пересылки (28), логические (25), арифметические (24), передачи управления (17) и битового процессора (17).
В Табл. 11.4 – Табл. 11.7 приведены мнемокоды команд, длина команды в МЦ,
HEX-коды и описание команды. В таблицах использованы следующие обозначения:
A,B | - аккумулятор, дополнительный аккумулятор; |
Rn | - регистр общего назначения (n = 0..7); |
@Ri | - косвенный адрес через Ri (i = 0,1); |
direct | - прямой адрес DSEG (8 бит); |
#data | - непосредственный операнд длиной 8 бит; |
#data16 | - непосредственный операнд длиной 16 бит; |
addr11 | - адрес перехода длиной 11 бит; |
addr16 | - адрес перехода длиной 16 бит; |
rel | - смещение на странице CSEG длиной 8 бит; |
bit | - прямой адрес BSEG (номер бита). |
В командах возможны следующие варианты формирования признаков
|
|
[1] - P
[2] - CY, P
[3] - CY, AC, OV, P
[4] - OV, P, CY ¬ 0
[5] - CY
В Табл. 11.4 – Табл. 11.7 в описании команд указаны соответствующие обозначения. Отсутствие обозначения говорит о том, что данная команда не меняет значений признаков. Символ в фигурных скобках означает, что он относится ко всем командам блока.
Табл. 11.4. Команды пересылки
Мнемокод | МЦ | HEX-коды | Описание команды | |
MOV A, Rn | E8.. EF | A ¬ Rn | ||
MOV A, direct | E5 | A ¬ (direct) | ||
MOV A, @Ri | E6.. E7 | A ¬ (Ri) | ||
MOV A, #data | A ¬ data | |||
MOV Rn, A | F8.. FF | Rn ¬ A | ||
MOV Rn, direct | A8.. AF | Rn ¬ (direct) | ||
MOV Rn, #data | 78.. 7F | Rn ¬ data | ||
MOV direct, A | F5 | (direct) ¬ A | ||
MOV direct, Rn | 88.. 8F | (direct) ¬ Rn | ||
MOV direct, direct | (direct) ¬ (direct) | |||
MOV direct, @Ri | 86.. 87 | (direct) ¬ (Ri) | ||
MOV direct, #data | (direct) ¬ data | |||
MOV @Ri, A | F6.. F7 | (Ri) ¬ A | ||
MOV @Ri, direct | A6.. A7 | (Ri) ¬ (direct) | ||
MOV @Ri, #data | 76.. 77 | (Ri) ¬ data | ||
MOV DPTR, #data16 | DPTR ¬ data16 | |||
MOVC A,@A+DPTR | A ¬ CSEG(A+DPTR) | |||
MOVC A,@A+PC | A ¬ CSEG(A+PC) | |||
MOVX A, @Ri | E2.. E3 | A ¬ XSEG(P2.Ri) | ||
MOVX A, @DPTR | E0 | A ¬ XSEG(DPTR) | ||
MOVX @Ri, A | F2.. F3 | XSEG (P2.Ri) ¬ A | ||
MOVX @DPTR, A | F0 | XSEG (DPTR) ¬ A | ||
PUSH direct | C0 | +(SP) ¬ (direct) | ||
POP direct | D0 | (direct) ¬ (SP)- | ||
XCH A, Rn | C8.. CF | A «Rn | ||
XCH A, direct | C5 | A «(direct) | ||
XCH A, @Ri | C6.. C7 | A «(Ri) | ||
XCHD A, @Ri | D6.. D7 | A[3:0] «(Ri[3:0]) |
Табл. 11.5. Логические и арифметические команды
|
|
Мнемокод | МЦ | HEX-коды | Описание команды | |
ANL A, Rn | 58.. 5F | A ¬ A & Rn | ||
ANL A, direct | A ¬ A & (direct) | |||
ANL A, @Ri | 56.. 57 | A ¬ A & (Ri) | ||
ANL A, #data | A ¬ A & data | |||
ANL direct, A | (direct) ¬ (direct) & A | |||
ANL direct, #data | (direct) ¬ (direct) & data | |||
ORL A, Rn | 48.. 4F | A ¬ A Ú Rn | ||
ORL A, direct | A ¬ A Ú (direct) | |||
ORL A, @Ri | 46.. 47 | A ¬ A Ú (Ri) | ||
ORL A, #data | A ¬ A Ú data | |||
ORL direct, A | (direct) ¬ (direct) Ú A | |||
ORL direct, #data | (direct) ¬ (direct) Ú data | |||
XRL A, Rn | 68.. 6F | A ¬ A Å Rn | ||
XRL A, direct | A ¬ A Å (direct) | |||
XRL A, @Ri | 66.. 67 | A ¬ A Å (Ri) | ||
XRL A, #data | A ¬ A Å data | |||
XRL direct, A | (direct) ¬ (direct) Å A | |||
XRL direct, #data | (direct) ¬ (direct) Å data | |||
CLR A | E4 | A ¬ 0000 0000 (Очистка акк.) | ||
CLP A | F4 | A ¬ A\ (Инверсия аккумулятора) | ||
RL A | Сдвиг левый циклический | |||
RLC A | Сдвиг левый с переносом | |||
RR A | Сдвиг правый циклический | |||
RRC A | Сдвиг правый с переносом | |||
SWAP A | C4 | A[7:4] «A[3:0] | ||
ADD A, Rn | 28.. 2F | A ¬ A + Rn | ||
ADD A, direct | A ¬ A + (direct) | |||
ADD A, @Ri | 26.. 27 | A ¬ A + (Ri) | ||
ADD A, #data | A ¬ A + data | |||
ADDC A, Rn | 38.. 3F | A ¬ A + Rn + CY | ||
ADDC A, direct | A ¬ A + (direct) + CY | |||
ADDC A, @Ri | 36.. 37 | A ¬ A + (Ri) + CY | ||
ADDC A, #data | A ¬ A + data + CY | |||
SUBB A, Rn | 98.. 9F | A ¬ A - Rn - CY | ||
SUBB A, direct | A ¬ A - (direct) - CY | |||
SUBB A, @Ri | 96.. 97 | A ¬ A - (Ri) - CY | ||
SUBB A, #data | A ¬ A - data - CY | |||
INC A | A ¬ A + 1 | |||
INC Rn | 08.. 0F | Rn ¬ Rn + 1 | ||
INC direct | (direct) ¬ (direct) + 1 | |||
INC @Ri | 06.. 07 | (Ri) ¬ (Ri) + 1 | ||
INC DPTR | A3 | DPTR ¬ DPTR + 1 | ||
DEC A | A ¬ A - 1 | |||
DEC Rn | 18.. 1F | Rn ¬ Rn - 1 | ||
DEC direct | (direct) ¬ (direct) - 1 | |||
DEC @Ri | 16.. 17 | (Ri) ¬ (Ri) - 1 | ||
MUL AB | A4 | B.A ¬ A × B | ||
DIV AB | A.B ¬ A: B | |||
DA A | Десятичная коррекция сложения |
Табл. 11.6. Команды передачи управления
Мнемокод | МЦ | HEX-коды | Описание команды | |
ACALL addr11 | aaa10001 | +(SP) ¬ PC; PC[10:0] ¬ adrr11 | ||
LCALL addr16 | +(SP) ¬ PC; PC ¬ adrr16 | |||
RET | PC ¬ (SP)- | |||
RETI | PC ¬ (SP)-; конец прерывания | |||
AJMP addr11 | aaa00001 | PC[10:0] ¬ adrr11 | ||
LJMP addr16 | PC ¬ adrr16 | |||
JMP @A + DPTR | PC ¬ DPTR +A | |||
SJMP rel | PC ¬ PC + rel | |||
JZ rel | if A = 0 then PC ¬ PC + rel | |||
JNZ rel | if A ¹ 0 then PC ¬ PC + rel | |||
CJNE A, direct, rel | B5 | if A ¹ (direct) then PC ¬ PC + rel | ||
CJNE A, #data, rel | B4 | if A ¹ data then PC ¬ PC + rel | ||
CJNE Rn, #data, rel | B8.. BF | if Rn ¹ data then PC ¬ PC + rel | ||
CJNE @Ri,#data, rel | B6.. B7 | if (Ri) ¹ data then PC ¬ PC + rel | ||
CJNZ Rn,rel | D8.. DF | Rn ¬ Rn - 1 if Rn ¹ 0 then PC ¬ PC + rel | ||
CJNE direct, rel | D5 | (direct) ¬ (direct) - 1 if (direct) ¹ 0 then PC ¬ PC + rel | ||
NOP |
Табл. 11.7. Булевые команды
Мнемокод | МЦ | HEX-коды | Описание команды | |
MOV C, bit | A9 | CY ¬ BSEG(bit) | ||
MOV bit, C | BSEG(bit) ¬ CY | |||
CLR C | C3 | CY ¬ 0 | ||
CLR bit | C2 | BSEG(bit) ¬ 0 | ||
SETB C | D3 | CY ¬ 1 | ||
SETB bit | D2 | BSEG(bit) ¬ 1 | ||
CPL C | B3 | CY ¬ CY\ | ||
CPL bit | B2 | BSEG(bit) ¬ BSEG(bit)\ | ||
ANL C, bit | CY ¬ CY & BSEG(bit) | |||
ANL C, bit\ | B0 | CY ¬ CY & BSEG(bit)\ | ||
ORL C, bit | CY ¬ CY Ú BSEG(bit) | |||
ORL C, bit\ | A0 | CY ¬ CY Ú BSEG(bit)\ | ||
JC rel | if CY = 1 then PC ¬ PC + rel | |||
JNC rel | if CY = 0 then PC ¬ PC + rel | |||
JB bit, rel | if BSEG(bit) = 1 then PC ¬ PC + rel | |||
JNB bit, rel | if BSEG(bit) = 0 then PC ¬ PC + rel | |||
JBC bit, rel | if BSEG(bit) = 1 then PC ¬ PC + rel и BSEG(bit) ¬ 0 |