Материал: kniga_mikroprotsessory

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
Пример
;(A)=50H=80, (B)=0A0H=160, ;(C)=1, (OV)=0
MUL AB ;(C)=0, (OV)=1, ;(A)=00H, (B)=32H
0 0 0 0 0 0 0 0

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

0 1 0 0 0 1 1 i

помещая результат в 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

Источник: https://studfile.net/preview/15934500/