Stenin Lab / Система команд АСМ51 подробно
.pdfКоманда "переслать байт" выполняет загрузку аккумулятора A содержимым заданного регистра Rn выбранного банка, при этом содержимое Rn не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.
Алгоритм |
|
|
Пример |
(A) (Rn), где n=0-7 |
|
;(A)=0FAH, (R6)=93H |
|
|
|
MOV A,R6 ;(A)=93H, (R6)=93H |
|
MOV A,@Ri ;где i {0,1} |
|
|
|
1 1 1 0 0 1 1 i |
|
Команда "переслать байт" выполняет загрузку аккумулятора A содержимым ячейки резидентной памяти данных (РПД), адресуемой содержимым заданного регистра Ri выбранного банка, при этом содержимое используемой ячейки не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.
Алгоритм |
|
|
Пример |
|
(A) ((Ri)), где i {0,1} |
|
;(A)=0FDH, (R1)=30H, |
||
|
|
;в РПД (30H)=17H |
||
|
|
MOV A,@R1 ;(A)=17H, (R1)=30H, |
||
|
|
;в РПД (30H)=17H |
||
|
|
|
|
|
MOV A,direct |
1 1 1 0 0 1 0 1 |
direct |
|
Команда "переслать байт" выполняет загрузку аккумулятора A содержимым ячейки, 8-разрядный адрес которой определяется символическим именем direct в области резидентной памяти данных или в среде регистров специальных функций. При этом содержимое используемой ячейки не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.
Алгоритм |
|
|
Пример |
|
(A) (direct) |
|
;(A)=24H, (DPL)=3DH |
||
|
|
MOV A,DPL ;(A)=3DH,(DPL)=3DH |
||
|
|
|
|
|
|
|
|
|
|
MOV A,#data8 |
0 1 1 1 0 1 0 0 |
data8 |
|
Команда "переслать байт" выполняет загрузку аккумулятора A байтом данных data8, непосредственно указанным в команде, на состояние флагов не влияет и имеет время выполнения 1 цикл.
Алгоритм |
|
|
Пример |
(A) data8 |
|
;(A)=81H |
|
|
|
MOV A,#0FFH ;(A)=0FFH |
|
|
|
|
|
MOV Rn,A ;где n=0-7 |
1 1 1 1 1 r r r |
где rrrB=000B-111B |
Команда "переслать байт" выполняет загрузку заданного регистра Rn выбранного банка содержимым аккумулятора A, при этом содержимое A не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.
Алгоритм |
|
|
|
Пример |
|
(Rn) (A), где n=0-7 |
|
;(A)=55H, (R6)=93H |
|||
|
|
MOV R6,A ;(A)=55H, (R6)=55H |
|||
|
|
|
|
|
|
MOV Rn,direct ;где n=0-7 |
1 0 1 0 1 r r r |
direct |
|
где rrrB=000-111B |
Команда "переслать байт" выполняет загрузку заданного регистра Rn выбранного банка содержимым ячейки, адрес которой определяется символическим именем direct в области резидентной памяти данных (РПД) или в среде регистров специальных функций. При этом содержимое используемой ячейки не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.
Алгоритм |
|
|
|
Пример |
|
(Rn) (direct), где n=0-7 |
|
;(R5)=81H, в РПД (16H)=22H |
|||
|
|
MOV R5,16H ;(R5)=22H, |
|||
|
|
;в РПД (16H)=22H |
|||
|
|
|
|
|
|
MOV Rn,#data8 ;где n=0-7 |
0 1 1 1 1 r r r |
data8 |
|
где rrrB=000-111B |
Команда "переслать байт" выполняет загрузку заданного регистра Rn выбранного банка байтом данных, непосредственно указанным в команде и имеющим символическое имя data8. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.
Алгоритм |
Пример |
(Rn) data8, где n=0-7 |
;(R2)=5DH |
|
MOV R2,#0FCH ;(R2)=0FCH |
|
|
MOV direct,A |
1 1 1 1 0 1 0 1 |
direct |
Команда "переслать байт" пересылает содержимое аккумулятора A в ячейку, адрес которой определяется символическим именем direct в области резидентной памяти данных или в среде регистров специальных функций. При этом содержимое A не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.
Алгоритм |
|
|
|
Пример |
|
(direct) (A) |
|
;(A)=3CH, (B)=4DH |
|||
|
|
MOV B,A ;(A)=3CH,(B)=3CH |
|||
|
|
|
|
|
|
|
|
|
|
|
|
MOV direct,Rn ;где n=0-7 |
1 0 0 0 1 r r r |
direct |
|
где rrrB=000-111B |
Команда "переслать байт" пересылает содержимое заданного регистра Rn выбранного банка в ячейку, адрес которой определяется символическим именем direct в области резидентной памяти данных или в среде регистров специальных функций. При этом содержимое Rn не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 2 циклa.
Алгоритм |
|
|
Пример |
|
|
|
(direct) (Rn), где n=0-7 |
|
;(R7)=5EH, (P1)=0FFH |
|
|
||
|
|
MOV P1,R7 ;(R7)=5EH, (P1)=5EH |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MOV direct,direct |
1 0 0 0 0 1 0 1 |
direct |
|
direct |
|
Команда "переслать байт" пересылает байт данных между двумя ячейками, расположенными в области резидентной памяти данных (РПД) или (и) в среде регистров специальных функций. Адрес ячейкиисточника (ячейки-приемника) определяется вторым (первым) операндом и размещается во втором (в третьем) байте команды. Необходимо отметить, что при пересылке содержимое ячейки-источника не изменяется. Команда на состояние флагов не влияет и выполняется за 2 циклa.
Алгоритм |
|
|
Пример |
|
(direct) (direct) |
|
;в РПД (4CH)=7AH, (B)=0F4H |
||
|
|
MOV 4CH,B ;(B)=0F4H, |
||
|
|
;в РПД (4CH)=0F4H |
||
|
|
|
|
|
MOV direct,@Ri ;где i {0,1} |
|
|
|
|
1 0 0 0 0 1 1 i |
direct |
|
Команда "переслать байт" пересылает содержимое ячейки резидентной памяти данных (РПД), адресуемой содержимым заданного регистра Ri выбранного банка, в ячейку, адрес которой определяется символическим именем direct в области РПД или в среде регистров специальных функций. При этом содержимое ячейкиисточника не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.
Алгоритм |
|
|
Пример |
|
|
|
(direct) ((Ri)), где i {0,1} |
|
;в РПД (6FH)=57H, |
|
|
||
|
|
;(R0)=6FH, (PSW)=0C2H |
||||
|
|
MOV PSW,@R0 ;(PSW)=57H, |
||||
|
|
;(R0)=6FH, в РПД (6FH)=57H |
||||
|
|
|
|
|
|
|
MOV direct,#data8 |
0 1 1 1 0 1 0 1 |
direct |
|
data8 |
|
Команда "переслать байт" копирует байт данных, непосредственно указанный в команде и имеющий символическое имя data8, в ячейку, адрес которой определяется символическим именем direct в области резидентной памяти данных или в среде регистров специальных функций. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.
Алгоритм |
|
|
Пример |
(direct) data8 |
|
;(P2)=0FFH |
|
|
|
MOV P2,#33H ;(P2)=33H |
|
|
|
|
|
MOV @Ri,A ;где i {0,1} |
|
|
|
1 1 1 1 0 1 1 i |
|
Команда "переслать байт" пересылает содержимое аккумулятора A в ячейку резидентной памяти данных (РПД), адресуемую содержимым заданного регистра Ri выбранного банка, при этом содержимое A не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.
Алгоритм |
|
|
Пример |
|
((Ri)) (A), где i {0,1} |
|
;(A)=11H, (R1)=25H, |
||
|
|
;в РПД (25H)=48H |
||
|
|
MOV @R1,A ;(A)=11H, (R1)=25H, |
||
|
|
;в РПД (25H)=11H |
||
|
|
|
|
|
MOV @Ri, direct ;где i {0,1} |
|
|
|
|
1 0 1 0 0 1 1 i |
direct |
|
Команда "переслать байт" загружает ячейку резидентной памяти данных (РПД), адресуемую содержимым заданного регистра Ri выбранного банка, содержимым ячейки, адрес которой определяется символическим
именем direct в области РПД или в среде регистров специальных функций. При этом содержимое ячейкиисточника не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.
Алгоритм |
|
|
Пример |
|
((Ri)) (direct), где i {0,1} |
|
;в РПД (55H)=31H, |
||
|
|
;(R0)=55H, (TH1)=0CDH |
||
|
|
MOV @R0,TH1 ;(TH1)=0CDH, |
||
|
|
;(R0)=55H, в РПД (55H)=0CDH |
||
MOV @Ri,#data8 ;где i {0,1} |
|
|
|
|
0 1 1 1 0 1 1 i |
data8 |
|
Команда "переслать байт" копирует байт данных data8, непосредственно указанный в команде, в ячейку резидентной памяти данных (РПД), адресуемую содержимым заданного регистра Ri выбранного банка. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.
Алгоритм |
|
|
Пример |
|
((Ri)) data8, где i {0,1} |
|
;(R1)=53H, в РПД (53H)=86H |
||
|
|
MOV @R1,#77H ;(R1)=53H, |
||
|
|
;в РПД (53H)=77H |
||
|
|
|
|
|
MOV C,bit |
1 0 1 0 0 0 1 0 |
bit |
|
Команда "переслать бит" загружает флаг переноса C содержимым бита, 8-разрядный адрес которого определяется символическим именем bit в области ячеек резидентной памяти данных (либо регистров специальных функций), допускающей побитовое обращение. Команда на состояние других флагов, а также используемого бита не влияет и имеет время выполнения 1 цикл.
Алгоритм |
|
|
Пример |
|
(C) (bit) |
|
;(C)=0, (P1[4])=1 |
||
|
|
MOV C,P1.4 ;(C)=1, |
||
|
|
;(P1[4])=1 |
||
|
|
|
|
|
MOV bit,C |
1 0 0 1 0 0 1 0 |
bit |
|
Команда "переслать бит" копирует содержимое флага переноса C в бит, 8-разрядный адрес которого определяется символическим именем bit в области ячеек резидентной памяти данных (РПД) или регистров специальных функций, допускающей побитовое обращение. Команда имеет время выполнения 2 цикла и на состояние флагов не влияет, за исключением случая, когда флаг является операндом-приемником.
Алгоритм |
|
|
|
Пример |
||
(bit) (C) |
|
;в РПД |
(22H)=0D0H, (C)=1 |
|||
|
|
MOV 10H,C ;(C)=1, |
||||
|
|
;в РПД |
(22H)=0D1H |
|||
|
|
|
|
|
||
MOV DPTR,#data16 |
1 0 0 1 0 0 0 0 |
data16[15-8] |
data16[7-0] |
|
Команда "переслать два байта" загружает указатель данных DPTR 16-битовой константой data16, непосредственно указанной в команде, причем содержимое второго и третьего байтов команды загружается соответственно в старший (DPH) и младший (DPL) байты DPTR. Команда на флаги не влияет и имеет время выполнения 2 цикла.
Алгоритм |
|
|
Пример |
(DPTR) data16 |
|
;(DPH)=23H, (DPL)=0DFH |
|
|
|
MOV DPTR,#1234H ;(DPH)=12H, |
|
|
|
(DPL)=34H |
|
|
|
|
|
|
|
|
|
MOVC A,@A+DPTR |
1 0 0 1 0 0 1 1 |
|
Команда "переслать байт" загружает аккумулятор A содержимым ячейки памяти программ (ПП), причем адрес используемой ячейки вычисляется как сумма исходного содержимого A и содержимого 16-битового указателя данных DPTR. Таким образом, в указанной пересылке может участвовать любая ячейка из памяти программ объемом до 64 Кбайт. Содержимое DPTR не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.
Алгоритм |
|
|
Пример |
(A) ((A)+(DPTR)) |
|
;(A)=01H, (DPTR)=30FFH, |
|
|
|
;в ПП (3100H)=22H |
|
|
|
MOVC A,@A+DPTR ;(A)=22H, |
|
|
|
;(DPTR)=30FFH |
|
|
|
|
|
|
|
|
|
MOVC A,@A+PC |
1 0 0 0 0 0 1 1 |
|
Команда "переслать байт" загружает в аккумулятор A содержимое ячейки памяти программ (ПП), причем адрес используемой ячейки вычисляется как сумма исходного содержимого A и содержимого программного
счетчика PC, которое увеличено на единицу. Таким образом, в указанной пересылке может участвовать любая ячейка из памяти программ объемом до 64 Кбайт. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.
Алгоритм |
|
|
Пример |
(A) ((A)+(PC)+1) |
|
;(A)=11H, (PC)=2300H, |
|
|
|
;в ПП (2312H)=44H |
|
|
|
MOVC A,@A+PC ;(A)=44H, |
|
|
|
;(PC)=2301H |
|
|
|
|
|
MOVX A,@Ri ;где i {0,1} |
|
|
|
1 1 1 0 0 0 1 i |
|
Команда "переслать байт" выполняет загрузку аккумулятора A содержимым ячейки внешней памяти данных (ВПД), адресуемой содержимым заданного регистра Ri выбранного банка, при этом содержимое используемой ячейки не изменяется. Команда на состояние флагов не влияет, имеет время выполнения 2 цикла и обеспечивает доступ к ВПД объемом до 256 байт.
Алгоритм |
|
|
Пример |
(A) ((Ri)), где i {0,1} |
|
;(A)=0CCH, (R0)=44H, |
|
|
|
;в ВПД (44H)=3EH |
|
|
|
MOVX A,@R0 ;(A)=3EH, (R0)=44H, |
|
|
|
;в ВПД (44H)=3EH |
|
|
|
|
|
MOVX A,@DPTR |
1 1 1 0 0 0 0 0 |
|
Команда "переслать байт" выполняет загрузку аккумулятора A содержимым ячейки внешней памяти данных (ВПД), адресуемой содержимым 16-битового указателя данных DPTR, при этом содержимое используемой ячейки не изменяется. Команда на состояние флагов не влияет, имеет время выполнения 2 цикла и обеспечивает доступ к ВПД объемом до 64 Кбайт.
Алгоритм |
|
|
Пример |
(A) ((DPTR)) |
|
;(A)=76H, (DPTR)=6D44H, |
|
|
|
;в ВПД (6D44H)=88H |
|
|
|
MOVX A,@DPTR ;(DPTR)=6D44H, |
|
|
|
;(A)=88H, в ВПД (6D44H)=88H |
|
MOVX @Ri,A ;где i {0,1} |
|
|
|
1 1 1 1 0 0 1 i |
|
Команда "переслать байт" копирует содержимое аккумулятора A в ячейку внешней памяти данных (ВПД), адресуемую содержимым заданного регистра Ri выбранного банка. Команда на состояние флагов не влияет, имеет время выполнения 2 цикла и обеспечивает доступ к ВПД объемом до 256 байт.
Алгоритм |
|
|
Пример |
((Ri)) (A), где i {0,1} |
|
;(A)=0C6H, (R1)=22H, |
|
|
|
;в ВПД (22H)=33H |
|
|
|
MOVX @R1,A ;(A)=0C6H, (R1)=22H, |
|
|
|
;в ВПД (22H)=0C6H |
|
|
|
|
|
|
|
|
|
MOVX @DPTR,A |
1 1 1 1 0 0 0 0 |
|
Команда "переслать байт" копирует содержимое аккумулятора A в ячейку внешней памяти данных (ВПД), адресуемую содержимым 16-битового указателя данных DPTR. Команда на состояние флагов не влияет, имеет время выполнения 2 цикла и обеспечивает доступ к ВПД объемом до 64 Кбайт.
Алгоритм |
|
|
Пример |
((DPTR)) (A) |
|
;(A)=55H, (DPTR)=1234H, |
|
|
|
;в ВПД (1234H)=11H |
|
|
|
MOVX @DPTR,A ;(DPTR)=1234H, |
|
|
|
;(A)=55H, |
|
|
|
;в ВПД (1234H)=55H |
|
|
|
|
|
|
|
|
|
MUL AB |
1 0 1 0 0 1 0 0 |
|
Команда "умножение" умножает 8-битовую переменную из аккумулятора A на 8-битовую переменную из регистра B, при этом старший и младший байты произведения загружаются соответственно в B и A. Содержимое флага переноса C сбрасывается в "0". Содержимое флага переполнения OV устанавливается в "1" если результат умножения больше 0FFH, в противном случае - также сбрасывается. Содержимое флага AC не изменяется. Команда имеет время выполнения 4 цикла.
Алгоритм |
Пример |
(A) (B)=data16 |
;(A)=50H=80, (B)=0A0H=160, |
(A) data16[7-0], (B) data16[15-8] |
;(C)=1, (OV)=0 |
(C) 0 |
MUL AB ;(C)=0, (OV)=1, |
|
;(A)=00H, (B)=32H |
если data16 0FFH, то (OV) 0 если data16 0FFH, то (OV) 1
NOP |
0 0 0 0 0 0 0 0 |
Команда "нет операции" увеличивает содержимое программного счетчика PC на единицу, при этом состояние всех остальных программно доступных элементов микроконтроллера не изменяется. Команда имеет время выполнения 1 цикл.
Алгоритм |
|
|
Пример |
(PC) (PC)+1 |
|
;(PC)=1FFH |
|
|
|
NOP |
|
|
|
NOP ;(PC)=201H |
|
|
|
|
|
ORL A,Rn ;где n=0-7 |
0 1 0 0 1 r r r |
где rrrB=000B-111B |
Команда "логическое ИЛИ" выполняет поразрядную дизъюнкцию содержимого аккумулятора A с содержимым заданного регистра Rn выбранного банка, помещая результат в A. Содержимое используемого регистра не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.
Алгоритм |
|
|
Пример |
(A) (A) (Rn), где n=0-7 |
|
;(A)=0FH, (R4)=0F3H |
|
|
|
ORL A,R4 ;(A)=0FFH, |
|
|
|
;(R4)=0F3H |
|
|
|
|
|
ORL A,@Ri ;где i {0,1} |
|
|
|
0 1 0 0 0 1 1 i |
|
Команда "логическое ИЛИ" выполняет поразрядную дизъюнкцию содержимого аккумулятора A с содержимым ячейки резидентной памяти данных (РПД), адресуемой содержимым заданного регистра Ri выбранного банка. Результат размещается в A. Содержимое используемой ячейки не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.
Алгоритм |
|
|
Пример |
|
(A) (A) ((Ri)), где i {0,1} |
|
;(A)=22H, (R0)=55H, |
||
|
|
;в РПД (55H)=11H |
||
|
|
ORL A,@R0 ;(A)=33H, (R0)=55H, |
||
|
|
;в РПД (55H)=11H |
||
|
|
|
|
|
|
|
|
|
|
ORL A,direct |
0 1 0 0 0 1 0 1 |
direct |
|
Команда "логическое ИЛИ" выполняет поразрядную дизъюнкцию содержимого аккумулятора A с содержимым ячейки резидентной памяти данных (либо регистра специальных функций), 8-разрядный адрес которой (которого) определяется символическим именем direct. Результат помещается в A. Содержимое используемой ячейки или используемого регистра не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.
Алгоритм |
|
|
Пример |
|
(A) (A) (direct) |
|
;(A)=23H, (PSW)=14H |
||
|
|
ORL A,PSW ;(A)=37H, |
||
|
|
;(PSW)=14H |
||
|
|
|
|
|
ORL A,#data8 |
0 1 0 0 0 1 0 0 |
data8 |
|
Команда "логическое ИЛИ" выполняет поразрядную дизъюнкцию содержимого аккумулятора A с байтом данных data8, непосредственно указанным в команде. Результат размещается в A. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.
Алгоритм |
|
|
Пример |
|
(A) (A) data8 |
|
;(A)=36H |
||
|
|
ORL A,#41H ;(A)=77H |
||
|
|
|
|
|
ORL direct,A |
0 1 0 0 0 0 1 0 |
direct |
|
Команда "логическое ИЛИ" выполняет поразрядную дизъюнкцию содержимого аккумулятора A с содержимым ячейки резидентной памяти данных (либо регистра специальных функций), 8-разрядный адрес которой (которого) определяется символическим именем direct. Результат помещается соответственно в используемую ячейку или используемый регистр. Содержимое A не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.
Алгоритм |
Пример |
(direct) (A) (direct) |
;(A)=55H, (P2)=0AAH |
|
ORL P2,A ;(A)=55H, |
|
;(P2)=0FFH |
ORL direct,#data8 |
0 1 0 0 0 0 1 1 |
direct |
data8 |
Команда "логическое ИЛИ" выполняет поразрядную дизъюнкцию байта данных data8, непосредственно указанного в команде, с содержимым ячейки резидентной памяти данных (либо регистра специальных функций), 8-разрядный адрес которой (которого) определяется символическим именем direct. Результат помещается соответственно в используемую ячейку или используемый регистр. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.
Алгоритм |
|
|
Пример |
|
(direct) (direct) data8 |
|
;(P1)=0FFH |
||
|
|
ORL P1,#73H ;(P1)=0FFH |
||
|
|
|
|
|
ORL C,bit |
0 1 1 1 0 0 1 0 |
bit |
|
Команда "логическое ИЛИ" выполняет дизъюнкцию содержимого флага переноса C с содержимым бита, 8- разрядный адрес которого определяется символическим именем bit в области ячеек резидентной памяти данных (РПД) или регистров специальных функций, допускающей побитовое обращение. Результат помещается в С. Содержимое используемого бита не изменяется. Команда на состояние других флагов не влияет и имеет время выполнения 2 цикла.
Алгоритм |
|
|
Пример |
|
(C) (C) (bit) |
|
;(C)=0, (P1[2])=1, |
||
|
|
;в РПД (2EH)=12H |
||
|
|
ORL C,P1.2 ;(C)=1, (P1[2])=1 |
||
|
|
ORL C,70H ;(C)=1, |
||
|
|
;в РПД (2EH)=12H |
||
|
|
|
|
|
|
|
|
|
|
ORL C,/bit |
1 0 1 0 0 0 0 0 |
bit |
|
Команда "логическое ИЛИ" выполняет дизъюнкцию содержимого флага переноса C с инвертированным значением бита из области ячеек резидентной памяти данных или регистров специальных функций, допускающей побитовое обращение, при этом содержимое используемого бита, 8-разрядный адрес которого определяется символическим именем bit, не изменяется. Результат помещается в С. Команда на состояние других флагов не влияет и имеет время выполнения 2 цикла.
|
Алгоритм |
|
|
Пример |
|||
|
|
|
|
;(C)=0, (AC)=0 |
|||
(C) (C) (bit) |
|||||||
|
ORL C,/AC ;(C)=1, (AC)=0 |
||||||
|
|
|
|
||||
|
|
|
|
|
|||
|
|
|
|
||||
POP direct |
1 1 0 1 0 0 0 0 |
direct |
|
Команда "чтение из стека" копирует содержимое ячейки резидентной памяти данных (РПД), адресуемой содержимым указателя стека SP, в ячейку, адрес которой определяется символическим именем direct в области РПД или в среде регистров специальных функций. При этом содержимое указателя стека уменьшается на единицу. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.
Алгоритм |
|
|
Пример |
|
(direct) ((SP)) |
|
;(SP)=32H, (DPH)=0AAH, |
||
(SP) (SP)-1 |
|
;в РПД (32H)=55H |
||
|
|
POP DPH ;(SP)=31H,(DPH)=55H |
||
|
|
|
|
|
PUSH direct |
1 1 0 0 0 0 0 0 |
direct |
|
Команда "запись в стек" увеличивает содержимое указателя стека SP на единицу и после этого копирует содержимое ячейки, адрес которой определяется символическим именем direct в области резидентной памяти данных (РПД) или в среде регистров специальных функций, в ячейку РПД, адресуемую содержимым SP. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.
Алгоритм |
|
|
Пример |
(SP) (SP)+1 |
|
;(SP)=44H, (DPL)=33H, |
|
((SP)) (direct) |
|
;в РПД (45H)=0CEH |
|
|
|
PUSH DPL ;(SP)=45H, в РПД (45H)=33H |
|
|
|
|
|
|
|
|
|
RET |
|
0 0 1 0 0 0 1 0 |
|
Команда "возврат из подпрограммы" последовательно копирует содержимое двух ячеек, адресуемых содержимым указателя стека SP в резидентной памяти данных (РПД), в программный счетчик PC. При этом содержимое SP уменьшается на два. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.
Алгоритм |
Пример |
(PC[15-8]) ((SP)) |
;(SP)=32H, (PC)=3DFH, |
(SP) (SP)-1 |
;в РПД (31H)=23H, (32H)=01H |
(PC[7-0])((SP)) |
|
RET ;(SP)=30H, (PC)=123H, |
|
(SP)(SP)-1 |
|
;в РПД (31H)=23H, (32H)=01H |
|
|
|
|
|
RETI |
0 0 1 1 0 0 1 0 |
|
Команда "возврат из прерывания" последовательно копирует содержимое двух ячеек, адресуемых содержимым указателя стека SP в резидентной памяти данных (РПД), в программный счетчик PC и разрешает прерывания с уровнем приоритета, равным уровню приоритета только что обработанного прерывания. При этом содержимое SP уменьшается на два. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.
Алгоритм |
|
|
Пример |
(PC[15-8])((SP)) |
|
;(SP)=23H, (PC)=0D3FH, |
|
(SP)(SP)-1 |
|
;в РПД (22H)=34H, (23H)=02H |
|
(PC[7-0])((SP)) |
|
RETI ;(SP)=21H, (PC)=234H, |
|
(SP)(SP)-1 |
|
;в РПД (22H)=34H, (23H)=02H |
|
|
|
|
|
RL A |
0 0 1 0 0 0 1 1 |
|
Команда "сдвиг аккумулятора влево" сдвигает содержимое аккумулятора A на один бит влево, причем содержимое бита 7 пересылается в бит 0. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.
Алгоритм |
|
|
Пример |
(A[M+1])(A[M]), где M=0-6 |
|
;(A)=85H, (C)=0 |
|
(A[0])(A[7]) |
|
RL A |
|
|
|
RL A ;(A)=16H, (C)=0 |
|
|
|
|
|
|
|
|
|
RLC A |
0 0 1 1 0 0 1 1 |
|
Команда "сдвиг аккумулятора влево через флаг переноса" сдвигает содержимое аккумулятора A на один бит влево, причем содержимое бита 7 аккумулятора пересылается во флаг переноса C, а содержимое C - в бит 0 аккумулятора. Команда на состояние других флагов не влияет и имеет время выполнения 1 цикл.
Алгоритм |
|
|
Пример |
(A[M+1])(A[M]), где M=0-6 |
|
;(A)=85H, (C)=0 |
|
(A[0])(С), (С)(A[7]) |
|
RLC A ;(A)=0AH, (C)=1 |
|
|
|
|
|
RR A |
0 0 0 0 0 0 1 1 |
|
Команда "сдвиг аккумулятора вправо" сдвигает содержимое аккумулятора A на один бит вправо, причем содержимое бита 0 пересылается в бит 7. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.
Алгоритм |
|
|
Пример |
(A[M])(A[M+1]), где M=0-6 |
|
;(A)=85H, (C)=1 |
|
(A[7])(A[0]) |
|
RR A |
|
|
|
RR A ;(A)=61H, (C)=1 |
|
|
|
|
|
RRC A |
0 0 0 1 0 0 1 1 |
|
Команда "сдвиг аккумулятора вправо через флаг переноса" сдвигает содержимое аккумулятора A на один бит вправо, причем содержимое бита 0 аккумулятора пересылается во флаг переноса C, а содержимое C - в бит 7 аккумулятора. Команда на состояние других флагов не влияет и имеет время выполнения 1 цикл.
Алгоритм |
|
|
Пример |
(A[M])(A[M+1]), где M=0-6 |
|
;(A)=85H, (C)=0 |
|
(A[7])(С), (С)(A[0]) |
|
RRC A ;(A)=42H, (C)=1 |
|
|
|
|
|
SETB C |
1 1 0 1 0 0 1 1 |
|
Команда "установить бит" устанавливает содержимое флага переноса C в "1". Команда на состояние других флагов не влияет и имеет время выполнения 1 цикл.
Алгоритм |
|
|
|
Пример |
|
(C)1 |
|
;(C)=0 |
|
|
|
|
|
SETB C ;(C)=1 |
|||
|
|
|
|
|
|
SETB bit |
1 1 0 1 0 0 1 0 |
|
bit |
|
Команда "установить бит" устанавливает в "1" содержимое бита, 8-разрядный адрес которого определяется символическим именем bit в области ячеек резидентной памяти данных или регистров специальных функций, допускающей побитовое обращение. Команда имеет время выполнения 1 цикл и на состояние флагов не влияет, за исключением случая, когда флаг является операндом команды.
Алгоритм |
|
|
|
Пример |
|
(bit) 1 |
|
;(P2)=38H |
|
|
|
|
|
SETB P2.0 |
;(P2)=39H |
||
|
|
|
|
|
|
|
|
|
|
|
|
SJMP addr |
1 0 0 0 0 0 0 0 |
|
rel |
|
Команда "короткий переход" выполняет безусловный переход по адресу addr, определяемому при помощи сложения 8-битового числа rel (со знаком), размещенного в младшем байте команды, с содержимым счетчика команд PC после увеличения его на 2. Таким образом, указанный переход возможен в пределах от - 128 до +127 относительно начального адреса следующей команды, при этом отрицательное значение rel представляется двоичным числом в дополнительном коде. Команда на флаги не влияет и имеет время выполнения 2 цикла.
Алгоритм |
|
|
|
Пример |
(PC) (PC)+2+rel |
|
;MT4 |
соответствует адресу 104H, |
|
|
|
;(PC)=165H, rel=9DH |
||
|
|
SJMP |
MT4 ;(PC)=104H |
|
|
|
|
|
|
|
|
|
||
SUBB A,Rn ;где n=0-7 |
1 0 0 1 1 r r r |
где rrrB=000B-111B |
Команда "вычитание с заемом" вычитает содержимое заданного регистра Rn выбранного банка вместе с содержимым флага переноса С из содержимого аккумулятора A, помещая результат в A. Содержимое используемого регистра не изменяется. При появлении заема в разрядах 7 и 3 аккумулятора устанавливаются в "1" флаг переноса C и флаг дополнительного переноса AC соответственно, в противном случае эти флаги сбрасываются в "0". Содержимое флага переполнения OV устанавливается, если есть заем в бите 6 и нет заема в бите 7, или есть заем в бите 7 и нет - в бите 6, в противном случае флаг OV сбрасывается. Время выполнения команды 1 цикл.
Алгоритм |
|
|
Пример |
(A) (A)-(C)-(Rn), где n=0-7 |
|
;(A)=0C9H, (R2)=54H, (C)=1 |
|
(С) x, (OV) =x, (AC) =x, где x {0,1} |
SUBB A,R2 ;(A)=74H,(R2)=54H, |
||
|
|
;(AC)=0, (C)=0, (OV)=1 |
|
|
|
|
|
SUBB A,@Ri ;где i {0,1} |
|
|
|
1 0 0 1 0 1 1 i |
|
Команда "вычитание с заемом" вычитает содержимое флага переноса С вместе с содержимым ячейки резидентной памяти данных (РПД), адресуемой содержимым заданного регистра Ri выбранного банка, из содержимого аккумулятора A, помещая результат в A. Содержимое используемой ячейки не изменяется. Логика установки (сброса) флагов и время выполнения такие же, как у рассмотренной выше команды с аналогичной мнемоникой.
Алгоритм |
|
|
Пример |
|
(A) (A)-(C)-((Ri)), где i {0,1} |
;(A)=49H, (R0)=3AH, |
|||
(С) x, (OV) =x, (AC) =x, где x {0,1} |
;в РПД (3AH)=68H, (C)=1 |
|||
|
|
SUBB A,@R0 ;(A)=0E0H, |
||
|
|
;(AC)=0, (C)=1, (OV)=0 |
||
|
|
|
|
|
|
|
|
|
|
SUBB A,direct |
1 0 0 1 0 1 0 1 |
direct |
|
Команда "вычитание с заемом" вычитает из содержимого аккумулятора A содержимое флага переноса С вместе с содержимым ячейки резидентной памяти данных (либо регистра специальных функций), 8- разрядный адрес которой (которого) определяется символическим именем direct. Результат помещается в A. Содержимое используемой ячейки или используемого регистра не изменяется. Логика установки (сброса) флагов и время выполнения такие же, как у рассмотренной выше команды с аналогичной мнемоникой.
Алгоритм |
|
|
|
Пример |
|
(A) (A)-(C)-(direct) |
|
;(A)=97H, (C)=0, (B)=25H |
|||
(С) x, (OV) =x, (AC) =x, где x {0,1} |
SUBB A,B |
;(A)=72H, (B)=25H, |
|||
|
|
;(AC)=0, |
(C)=0, (OV)=1 |
||
|
|
|
|
||
SUBB A,#data8 |
1 0 0 1 0 1 0 0 |
data8 |
|
Команда "вычитание с заемом" вычитает содержимое флага переноса С вместе с байтом данных data8, непосредственно указанным в команде, из содержимого аккумулятора A, помещая результат в A. Логика установки (сброса) флагов и время выполнения такие же, как у рассмотренной выше команды с аналогичной мнемоникой.
Алгоритм |
Пример |
(A) (A)-(C)-data8 |
;(A)=0BEH, (C)=0 |
(С) x, (OV) =x, (AC) =x, где x {0,1} |
SUBB A,#3FH ;(A)=7FH, |
|
;(AC)=1, (C)=0, (OV)=1 |
|
|
SWAP A |
1 1 0 0 0 1 0 0 |
Команда "обмен тетрадой" осуществляет обмен содержимым младших четырех и старших четырех битов аккумулятора A. Команда на флаги не влияет и имеет время выполнения 1 цикл.
Алгоритм |
|
|
Пример |
(A[3-0]) (A[7-4]) |
|
;(A)=49H |
|
(A[7-4]) (A[3-0]) |
|
SWAP A ;(A)=94H |
|
|
|
|
|
XCH A,Rn ;где n=0-7 |
1 1 0 0 1 r r r |
где rrrB=000B-111B |
Команда "обмен байтом" выполняет обмен содержимого аккумулятора A с содержимым заданного регистра Rn выбранного банка. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.
Алгоритм |
|
|
Пример |
(A) (Rn), где n=0-7 |
|
;(A)=0FAH, (R6)=93H |
|
(Rn) (A) |
|
XCH A,R6 ;(A)=93H, (R6)=0FAH |
|
XCH A,@Ri ;где i {0,1} |
|
|
|
1 1 0 0 0 1 1 i |
|
Команда "обмен байтом" выполняет обмен содержимого аккумулятора A с содержимым ячейки резидентной памяти данных (РПД), адресуемой содержимым заданного регистра Ri выбранного банка. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.
Алгоритм |
|
|
Пример |
|
(A) ((Ri)), где i {0,1} |
|
;(A)=0FDH, (R1)=30H, |
||
((Ri)) (A) |
|
;в РПД (30H)=17H |
||
|
|
XCH A,@R1 ;(A)=17H, (R1)=30H, |
||
|
|
;в РПД (30H)=0FDH |
||
|
|
|
|
|
XCH A,direct |
1 1 0 0 0 1 0 1 |
direct |
|
Команда "обмен байтом" выполняет обмен содержимого аккумулятора A с содержимым ячейки, адрес которой определяется символическим именем direct в области резидентной памяти данных или в среде регистров специальных функций. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.
Алгоритм |
|
|
Пример |
(A) (direct) |
|
;(A)=24H, (DPL)=3DH |
|
(direct) (A) |
|
XCH A,DPL ;(A)=3DH, |
|
|
|
;(DPL)=24H |
|
|
|
|
|
XCHD A,@Ri ;где i {0,1} |
|
|
|
1 1 0 1 0 1 1 i |
|
Команда "обмен тетрадой" выполняет обмен содержимого младшей тетрады (биты 3-0) аккумулятора A с содержимым младшей тетрады ячейки резидентной памяти данных (РПД), при этом содержимое старших тетрад A и используемой ячейки, адресуемой содержимым заданного регистра Ri выбранного банка, не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.
Алгоритм |
|
|
Пример |
(A[3-0]) ((Ri))[3-0], где i {0,1} |
;(A)=0FDH, (R1)=30H, |
||
((Ri))[3-0] (A[3-0]) |
|
;в РПД (30H)=17H |
|
|
|
XCHD A,@R1 ;в РПД (30H)=1DH, |
|
|
|
;(A)=0F7H, (R1)=30H |
|
|
|
|
|
|
|
|
|
XRL A,Rn ;где n=0-7 |
0 1 1 0 1 r r r |
где rrrB=000B-111B |
Команда "логическое ИСКЛЮЧАЮЩЕЕ ИЛИ" выполняет поразрядное сложение по модулю 2 содержимого аккумулятора A с содержимым заданного регистра Rn выбранного банка, помещая результат в A. При этом содержимое используемого регистра не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.
Алгоритм |
|
|
Пример |
(A) (A) (Rn), где n=0-7 |
|
;(A)=0FH, (R4)=0F3H |
|
|
|
XRL A,R4 ;(A)=0FCH, (R4)=0F3H |
|
XRL A,@Ri ;где i {0,1} |
|
|
|
0 1 1 0 0 1 1 i |
|
Команда "логическое ИСКЛЮЧАЮЩЕЕ ИЛИ" выполняет поразрядное сложение по модулю 2 содержимого аккумулятора A с содержимым ячейки резидентной памяти данных (РПД), адресуемой содержимым заданного регистра Ri выбранного банка. Результат размещается в A. Содержимое используемой ячейки не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.
Алгоритм |
Пример |
(A) (A) ((Ri)), где i {0,1} |
;(A)=22H, (R0)=55H, |
;в РПД (55H)=33H XRL A,@R0 ;(A)=11H,
;(R0)=55H, в РПД (55H)=33H
XRL A,direct |
0 1 1 0 0 1 0 1 |
direct |
Команда "логическое ИСКЛЮЧАЮЩЕЕ ИЛИ" выполняет поразрядное сложение по модулю 2 содержимого аккумулятора A с содержимым ячейки резидентной памяти данных (либо регистра специальных функций), 8-разрядный адрес которой (которого) определяется символическим именем direct. Результат помещается в A. Содержимое используемой ячейки или используемого регистра не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.
Алгоритм |
|
|
Пример |
|
(A)(A)(direct) |
|
;(A)=23H, (PSW)=34H |
||
|
|
XRL A,PSW ;(A)=17H, (PSW)=34H |
||
|
|
|
|
|
|
|
|
|
|
XRL A,#data8 |
0 1 1 0 0 1 0 0 |
data8 |
|
Команда "логическое ИСКЛЮЧАЮЩЕЕ ИЛИ" выполняет поразрядное сложение по модулю 2 содержимого аккумулятора A с байтом данных data8, непосредственно указанным в команде. Результат размещается в A. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.
Алгоритм |
|
|
Пример |
|
(A)(A)data8 |
|
;(A)=36H |
||
|
|
XRL A,#22H ;(A)=14H |
||
|
|
|
|
|
XRL direct,A |
0 1 1 0 0 0 1 0 |
direct |
|
Команда "логическое ИСКЛЮЧАЮЩЕЕ ИЛИ" выполняет поразрядное сложение по модулю 2 содержимого аккумулятора A с содержимым ячейки резидентной памяти данных (либо регистра специальных функций), 8-разрядный адрес которой (которого) определяется символическим именем direct. Результат помещается соответственно в используемую ячейку или используемый регистр. Содержимое A не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.
Алгоритм |
|
|
Пример |
|
|
|
(direct)(A)(direct) |
|
;(A)=55H, (P2)=63H |
|
|
||
|
|
XRL P2,A ;(A)=55H, (P2)=36H |
||||
|
|
|
|
|
|
|
XRL direct,#data8 |
0 1 1 0 0 0 1 1 |
direct |
|
data8 |
|
Команда "логическое ИСКЛЮЧАЮЩЕЕ ИЛИ" выполняет поразрядное сложение по модулю 2 байта данных data8, непосредственно указанного в команде, с содержимым ячейки резидентной памяти данных (либо регистра специальных функций), 8-разрядный адрес которой (которого) определяется символическим именем direct. Результат помещается соответственно в используемую ячейку или используемый регистр. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.
Алгоритм |
Пример |
(direct)(direct)data8 |
;(P1)=0FFH |
|
XRL P1,#11H ;(P1)=0EEH |
|
|