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) data16[7-0], (B) data16[15-8]
(C) 0
если data16 0FFH, то (OV) 0
если data16 0FFH, то (OV) 1
NOP
Команда "нет операции" увеличивает содержимое программного счетчика PC
на единицу, при этом состояние всех остальных программно доступных элементов микроконтроллера не изменяется. Команда имеет время выполнения
1 цикл.
Алгоритм |
|
|
Пример |
|
|
|
|
(PC) (PC)+1 |
|
;(PC)=1FFH |
|
|
|
NOP |
|
|
|
NOP ;(PC)=201H |
|
|
|
|
|
ORL A,Rn ;где n=0-7 |
|
где rrrB=000B-111B. |
|
0 1 0 0 1 r r r |
|||
|
|
|
|
Команда "логическое ИЛИ" выполняет поразрядную дизъюнкцию содержимого аккумулятора A с содержимым заданного регистра Rn выбранного банка,
77
помещая результат в 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}
Команда "логическое ИЛИ" выполняет поразрядную дизъюнкцию содержимого аккумулятора A с содержимым ячейки резидентной памяти данных (РПД),
адресуемой содержимым заданного регистра Ri выбранного банка. Результат размещается в A. Содержимое используемой ячейки не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.
|
|
Алгоритм |
|
|
Пример |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;(A)=22H, (R0)=55H, |
|
|
|
(A) |
(A) |
((Ri)), где i {0,1} |
|
|
|
|
|
|
|
|
|
;в РПД (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, |
|
|
78
;(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-
разрядный адрес которой (которого) определяется символическим именем
79
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)=0, (P1[2])=1, |
|
|
|
(C) |
(C) (bit) |
|
|
|
|
|
|
|
|
;в РПД (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 цикла.
80
|
|
Алгоритм |
Пример |
|
|
|
|
|
|
(C) (C) |
|
|
|
;(C)=0, (AC)=0 |
(bit) |
||||
|
|
|
|
ORL C,/AC ;(C)=1, (AC)=0 |
|
|
|
||
RL A |
|
|
||
|
0 0 1 0 0 0 1 1 |
|||
|
|
|
|
|
Команда "сдвиг аккумулятора влево" сдвигает содержимое аккумулятора A на один бит влево, причем содержимое бита 7 пересылается в бит 0. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.
Алгоритм |
Пример |
|
|
|
|
|
;(A)=85H, (C)=0 |
|
(A[M+1]) (A[M]), где M=0-6 |
|
|
(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 цикл.
81