
МПУЭВС. Лекции. Задания / pdf_ПрилПЦиПУ / Приложение_ М_ ОднокристОМЭВМ
.pdfLJMP, однако в теле команды указаны лишь 11 младших разрядов адреса.
Поэтому переход осуществляется в пределах страницы размером 2 Кбайт, при этом надо иметь в виду, что сначала содержимое счетчика команд увеличивается на 2 и только потом заменяются 11 разрядов адреса.
В отличие от предыдущих команд, в команде SJMP (S - short - короткий)
указан не абсолютный, а относительный адрес перехода. Величина смещения rel рассматривается как число со знаком, а, следовательно, переход возможен в пределах128...+127 байт относительно адреса команды, следующей за командой SJMP.
Команда косвенного перехода JMP @A+DPTR позволяет вычислять адрес перехода в процессе выполнения самой программы.
Командами условного перехода можно проверять следующие условия:
JZ — аккумулятор содержит нулевое значение;
JNZ — аккумулятор содержит не нулевое значение
JC — бит переноса С установлен;
JNC — бит переноса С не установлен;
JB — прямо адресуемый бит равен 1
JNB — прямо адресуемый бит равен 0;
JBC — прямо адресуемый бит равен 1 и сбрасывается в нулевое значение при выполнении команды.
Все команды условного перехода рассматриваемых микро-ЭВМ содержат короткий относительный адрес, т. е. переход может осуществляться в пределах—128... +127 байт относительно следующей команды.
Команда DJNZ предназначена для организации программных циклов.
Регистр Rn или байт по адресу ad, указанные в теле команды, содержат счетчик повторений цикла, а смещение rel — относительный адрес перехода к началу цикла. При выполнении команды содержимое счетчика уменьшается на 1 и проверяется на 0. Если значение содержимого счетчика не равно 0, то осуществляется переход на начало цикла, в противном случае выполняется следующая команда.
Команда CJNЕ для реализации процедур ожидания внешних событий. В
теле команды указаны "координаты" двух байт и относительный адрес перехода rel. В качестве двух байт могут быть использованы, например,
значения содержимого аккумулятора и прямо адресуемого байта или косвенно адресуемого байта и константы. При выполнении команды значения указанных двух байт сравниваются и в случае, если они не одинаковы, осуществляется переход. Например, команда WAIT: CJNE A, PO, WAIT
будет выполняться до тех пор, пока значения на линиях порта Р0 не совпадут со значениями содержимого аккумулятора.
Действие команд вызова процедур полностью аналогично действию команд безусловного перехода. Единственное отличие состоит в том, что они сохраняют в стеке адрес возврата.
Команда возврата из подпрограммы RET восстанавливает из стека значение содержимого счетчика команд, а команда возврата из процедуры обработки прерывания RETI, кроме того, разрешает прерывание обслуженного уровня. Команды RET и RETI не различают, какой командой -
LCALL или ACALL - была вызвана подпрограмма, так как и в том, и в другом случае в стеке сохраняется полный 16-разрядный адрес возврата.
Большинство Ассемблеров допускают обобщенную мнемонику JMP -
для команд безусловного перехода и CALL - для команд вызова подпрограмм.
Конкретный тип команды определяется Ассемблером, исходя из "длины"
перехода или вызова.
М.20 Список команд ОМЭВМ
Мнемоника Код Ч/ байт Ч/циклов
ACALL ad11 |
11 |
2 |
2 |
ACALL ad11 |
31 |
2 |
2 |
ACALL ad11 |
51 |
2 |
2 |
ACALL ad11 |
71 |
2 |
2 |
ACALL ad11 |
91 |
2 |
2 |
ACALL ad11 |
Bl |
2 |
2 |
ACALL ad11 |
Dl |
2 |
2 |
ACALL ad11 |
Fl |
2 |
2 |
ADD A,@R0 |
26 |
1 |
1 |
ADD A,@R1 |
27 |
1 |
1 |
ADD A, ad |
25 |
2 |
1 |
ADD A,R0 |
28 |
1 |
1 |
ADD A,R1 |
29 |
1 |
1 |
ADD A,R2 |
2A |
1 |
1 |
ADD A,R3 |
2B |
1 |
1 |
ADD A,R4 |
2C |
1 |
1 |
ADD A,R5 |
2D |
1 |
1 |
ADD A,R6 |
2E |
1 |
1 |
ADD A,R7 |
2F |
1 |
1 |
ADDC A,#d |
34 |
2 |
1 |
ADDC A,@R0 |
36 |
1 |
1 |
ADDC A,@R1 |
37 |
1 |
1 |
ADDC A,ad |
35 |
2 |
1 |
ADDC A,R0 |
38 |
1 |
1 |
ADDC A,R1 |
39 |
1 |
1 |
ADDC A,R2 |
3A |
1 |
1 |
ADDC A,R3 |
3B |
1 |
1 |
ADDC A,R4 |
3C |
1 |
1 |
ADDC A,R5 |
3D |
1 |
1 |
ADDC A,R6 |
3E |
1 |
1 |
ADDC A,R7 |
3F |
1 |
1 |
AJMP ad11 |
01 |
2 |
2 |
AJMP ad11 |
21 |
2 |
2 |
AJMP ad11 |
41 |
2 |
2 |
AJMP ad11 |
61 |
2 |
2 |
AJMP ad11 |
81 |
2 |
2 |
AJMP ad11 |
A1 |
2 |
2 |
AJMP ad11 |
Cl |
2 |
2 |
AJMP ad11 |
El |
2 |
2 |
ANL A,#d |
54 |
2 |
1 |
ANL A,@R0 |
56 |
1 |
1 |
ANL A,@R1 |
57 |
1 |
1 |
ANL A,ad |
55 |
2 |
1 |
ANL A,R0 |
58 |
1 |
1 |
ANL A,R1 |
59 |
1 |
1 |
ANL A,R2 |
5A |
1 |
1 |
ANL A,R3 |
5B |
1 |
1 |
ANL A,R4 |
5C |
1 |
1 |
ANL A,R5 |
5D |
1 |
1 |
ANL A,R6 |
5E |
1 |
1 |
ANL A,R7 |
5F |
1 |
1 |
ANL C,/bit |
B0 |
2 |
2 |
ANL C,bit |
82 |
2 |
2 |
ANL ad,#d |
53 |
3 |
2 |
ANL ad,A |
52 |
2 |
1 |
CJNE @Rl,#d,rel B7 |
3 |
2 |
|
CJNE ©R0,#d, rel B6 |
3 |
2 |
|
CJNE A,#d, rel |
B4 |
3 |
2 |
CJNE A,ad, rel |
B5 |
3 |
2 |
CJNE R0,#d, rel |
B8 |
3 |
2 |
CJNE R2,#d, rel |
BA |
3 |
2 |
CJNE R3,#d, rel |
BB |
3 |
2 |
CJNE R4,#d, rel |
BC |
3 |
2 |
CJNE R5,#d, rel |
BD |
3 |
2 |
CJNE R6,#d, rel |
BE |
3 |
2 |
CJNE R7,#d, rel |
BF |
3 |
2 |
CJNE Rl, #d, rel |
B9 |
3 |
2 |
CLR A |
E4 |
1 |
1 |
CLR bit |
C2 |
2 |
1 |
CLR C |
C3 |
1 |
1 |
CPL A |
F4 |
1 |
1 |
CPL bit |
B2 |
2 |
1 |
CPL C |
B3 |
1 |
1 |
DA A |
D4 |
1 |
1 |
DEC @R0 |
16 |
1 |
1 |
DEC ©Rl |
17 |
1 |
1 |
DEC A |
14 |
1 |
1 |
DEC ad |
15 |
2 |
1 |
DEC R0 |
18 |
1 |
1 |
DEC R2 |
1A |
1 |
1 |
DEC R3 |
1B |
1 |
1 |
DEC R4 |
1C |
1 |
1 |
DEC R5 |
ID |
1 |
1 |
DEC R6 |
1E |
1 |
1 |
DEC R7 |
IF |
1 |
1 |
DEC Rl |
19 |
1 |
1 |
DIV AB |
84 |
1 |
4 |
DJNZ R2,rel |
DA |
2 |
2 |
DJNZ R4,rel |
DC |
2 |
2 |
DJNZ ad,rel |
D5 |
3 |
2 |
DJNZ R0,rel |
D8 |
2 |
2 |
DJNZ R3,rel |
DB |
2 |
2 |
DJNZ R5,rel |
DD |
2 |
2 |
DJNZ R6,rel |
DE |
2 |
2 |
DJNZ R7,rel |
DF |
2 |
2 |
DJNZ Rl,rel |
D9 |
2 |
2 |
INC @R0 |
06 |
1 |
1 |
INC @R1 |
07 |
1 |
1 |
INC A |
04 |
1 |
1 |
INC ad |
05 |
2 |
1 |
INC DPTR |
A3 |
1 |
2 |
INC R0 |
08 |
1 |
1 |
INC Rl |
09 |
1 |
1 |
INC R2 |
0A |
1 |
1 |
INC R3 |
0B |
1 |
1 |
INC R4 |
0C |
1 |
1 |
INC R5 |
0D |
1 |
1 |
INC R6 |
0E |
1 |
1 |
INC R7 |
0F |
1 |
1 |
JB bit,rel |
20 |
3 |
2 |
JBC bit,ad16 |
10 |
3 |
2 |
JC ad16 |
40 |
2 |
2 |
JMP @A+DPTR |
73 |
1 |
2 |
JNB bit,ad16 |
30 |
3 |
2 |
JNC ad16 |
50 |
2 |
2 |
JNZ ad16 |
70 |
2 |
2 |
JZ ad16 |
60 |
2 |
2 |
LCALL ad16 |
12 |
3 |
2 |
LJMP ad16 |
02 |
3 |
2 |
MOV @R0,#d |
76 |
2 |
1 |
MOV @R0,A |
F6 |
1 |
1 |
MOV @R0,ad |
A6 |
2 |
2 |
MOV @R1,ad |
A7 |
2 |
2 |
MOV @RI,A |
F7 |
1 |
1 |
MOV @Rl,#d |
77 |
2 |
1 |
MOV A,#d |
74 |
2 |
1 |
MOV A,@R0 |
E6 |
1 |
1 |
MOV A,@R1 |
E7 |
1 |
1 |
MOV A,ad |
E5 |
2 |
1 |
MOV A,R0 |
E8 |
1 |
1 |
MOV A,R2 |
EA |
1 |
1 |
MOV A,R3 |
EB |
1 |
1 |
MOV A,R4 |
EC |
1 |
1 |
MOV A,R5 |
ED |
1 |
1 |
MOV A,R6 |
EE |
1 |
1 |
MOV A,R7 |
EF |
1 |
1 |
MOV A.R1 |
E9 |
1 |
1 |
MOV bit,C |
92 |
2 |
2 |
MOV C,bit |
A2 |
2 |
1 |
MOV ad,#d |
75 |
3 |
2 |
MOV ad,@R0 |
86 |
2 |
2 |
MOV ad,@R1 |
87 |
2 |
2 |
MOV ad,A |
F5 |
2 |
1 |
MOV add,ads |
85 |
3 |
2 |
MOV ad,R0 |
88 |
2 |
2 |
MOV ad,R2 |
8A |
2 |
2 |
MOV ad,R3 |
8B |
2 |
2 |
MOV ad,R4 |
8C |
2 |
2 |
MOV ad,R5 |
8D |
2 |
2 |
MOV ad,R6 |
8E |
2 |
2 |
MOV ad,R7 |
8F |
2 |
2 |
MOV ad,Rl |
89 |
2 |
2 |
MOV DPTR,#d |
90 |
3 |
2 |
MOV R0,#d |
78 |
2 |
1 |
MOV R0,A |
F8 |
1 |
1 |
MOV R0,ad |
A8 |
2 |
2 |
MOV R1,A |
F9 |
1 |
1 |
MOV R2,#d |
7A |
2 |
1 |
MOV R2,A |
FA |
1 |
1 |
MOV R2,ad |
AA |
2 |
2 |
MOV R3,#d |
7B |
2 |
1 |
MOV R3,A |
FB |
1 |
1 |
MOV R3,ad |
AB |
2 |
2 |
MOV R4,#d ` |
7C |
2 |
1 |
MOV R4,A |
FC |
1 |
1 |
MOV R4,ad |
AC |
2 |
2 |
MOV R5,#d |
7D |
2 |
1 |
MOV R5,A |
FD |
1 |
1 |
MOV R5,ad |
AD |
2 |
2 |
MOV R6,#d |
7E |
2 |
1 |
MOV R6,A |
FE |
1 |
1 |
MOV R6,ad |
AE |
2 |
2 |
MOV R7,#d |
7F |
2 |
1 |
MOV R7,A |
FF |
1 |
1 |
MOV R7,ad |
AF |
2 |
2 |
MOV Rl,#d |
79 |
2 |
1 |
MOV Rl,ad |
A9 |
2 |
2 |
MOVC A,@A+DPTR 931 |
2 |
||
MOVC A,@A+PC |
831 |
2 |
MOVX @DPTR,A |
F01 |
2 |
|
MOVX @R0,A F2 |
1 |
2 |
|
MOVX @R1,A F3 |
1 |
2 |
|
MOVX A,@DPTR E0 1 |
2 |
||
MOV A,@R0 |
E2 1 |
2 |
|
MOVX A,@R1 E3 |
1 |
2 |
|
MUL AB |
A4 |
1 |
4 |
NOP |
00 |
1 |
1 |
ORL A,#d |
44 |
2 |
1 |
ORL A,@R0 |
46 |
1 |
1 |
ORL A,@R1 |
47 |
1 |
1 |
ORL A,ad |
45 |
2 |
1 |
ORL A,R0 |
48 |
1 |
1 |
ORL A,R2 |
4A |
1 |
1 |
ORL A,R3 |
4B |
1 |
1 |
ORL A,R4 |
4C |
1 |
1 |
ORL A,R5 |
4D |
1 |
1 |
ORL A,R6 |
4E |
1 |
1 |
ORL A,R7 |
4P |
1 |
1 |
ORL A,Rl |
49 |
1 |
1 |
ORL C,/bit |
A0 |
2 |
2 |
ORL C,bit |
72 |
2 |
2 |
ORL ad,#d |
43 |
3 |
2 |
ORL ad,A |
42 |
2 |
1 |
POP ad |
D0 |
2 |
2 |
PUSH ad |
C0 |
2 |
2 |
RET |
22 |
1 |
2 |
RETI |
32 |
1 |
2 |
RL A |
23 |
1 |
1 |
RLC A |
33 |
1 |
1 |
RR A |
03 |
1 |
1 |
RRC A |
13 |
1 |
1 |
SETB bit |
D2 |
2 |
1 |
SETB C |
D3 |
1 |
1 |
SJMP rel |
80 |
2 |
2 |
SUBB A,#d |
94 |
2 |
1 |
SUBB A,@R0 |
96 |
1 |
1 |
SUBB A,@R1 |
97 |
1 |
1 |
SUBB A,ad |
95 |
2 |
1 |
SUBB A,R0 |
98 |
1 |
1 |
SUBB A,R1 |
99 |
1 |
1 |
SUBB A,R2 |
9A |
1 |
1 |
SUBB A,R3 |
9B |
1 |
1 |
SUBB A,R4 |
9C |
1 |
1 |
SUBB A,R5 |
9D |
1 |
1 |
SUBB A,R6 |
9E |
1 |
1 |
SUBB A,R7 |
9F |
1 |
1 |
SWAP A |
C4 |
1 |
1 |
XCH A,@R0 |
C6 |
1 |
1 |
XCH A,@R1 |
C7 |
1 |
1 |
XCH A,ad |
C5 |
2 |
1 |
XCH A,R0 |
C8 |
1 |
1 |
XCH A,R1 |
C9 |
1 |
1 |
XCH A,R2 |
CA |
1 |
1 |
XCH A,R3 |
CB |
1 |
1 |
XCH A,R4 |
CC |
1 |
1 |
XCH A,R5 |
CD |
1 |
1 |
XCH A,R6 |
CE |
1 |
1 |
XCH A,R7 |
CF |
1 |
1 |
XCHD A,@R0 |
D6 |
1 |
1 |
XCHD A,@R1 |
D7 |
1 |
1 |
XRL A,#d |
64 |
2 |
1 |
XRL A,@R0 |
66 |
1 |
1 |
XRL A,@R1 |
67 |
1 |
1 |
XRL A,ad |
65 |
2 |
1 |
XRL A,R0 |
68 |
1 |
1 |
XRL A,R1 |
69 |
1 |
1 |
XRL A,R2 |
6A |
1 |
1 |
XRL A,R3 |
6B |
1 |
1 |
XRL A,R4 |
6C |
1 |
1 |
XRL A,R5 |
6D |
1 |
1 |
XRL A,R6 |
6E |
1 |
1 |
XRL A,R7 |
6F |
1 |
1 |
XRL ad,#d |
63 |
3 |
2 |
XRL ad,A |
62 |
2 |
1 |

М.21 Таблица кодировки команд ОМЭВМ
Младшая тетрада кода