Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПМПУ / andr.doc
Скачиваний:
40
Добавлен:
20.04.2015
Размер:
710.14 Кб
Скачать

2.2.1. Система команд языка асм51

Система команд языка АСМ51 содержит 111 команд, которые обеспечивают реализацию широкой номенклатуры арифметических и логических операций, а также операций пересылки данных и передачи управления. В табл.2.9 приведены обозначения, используемые в описании команд.

Таблица 2.9

Обозначение

Назначение

addr

Символическое имя вычисляемого адреса ячейки памяти программ.

addr11

Символическое имя 11-битового адреса ячейки памяти программ.

addr16

Символическое имя 16-битового адреса ячейки памяти программ.

bit

Символическое имя 8-разрядного адреса бита в области ячеек резидентной памяти данных или регистров специальных функций, допускающей побитовое обращение (см. рис.2).

data8

Символическое имя байта данных.

Продолжение табл.2.9

Обозначение

Назначение

data16

Символическое имя 16-битовых данных.

direct

Символическое имя 8-разрядного адреса ячейки резидентной памяти данных или регистра специальных функций.

rel

Значение байта смещения, используемое при вычислении адреса addr.

(X)

Содержимое элемента X.

((X))

Содержимое по адресу, хранящемуся в элементе X.

X[M]

Разряд M элемента X.

X[3-0]

Группа разрядов элемента X.



Оператор присваивания.

Дизъюнкция.

Конъюнкция.

Сложение по модулю 2.

XY

Целочисленное деление элемента X на элемент Y.

mod[XY]

Остаток при целочисленном делении.

Время выполнения рассматриваемых команд указывается в машинных циклах. Напомним, что длительность одного машинного цикла определяется выражением , гдеfесть частота синхронизации микроконтроллера.

ACALL addr11

addr11[10-8] 1 0 0 0 1

addr11[7-0]

Команда "абсолютный вызов подпрограммы" вызывает безусловно подпрограмму, размещенную по адресу addr11. При этом содержимое счетчика командPC увеличивается на 2 для получения адреса следующей команды, после чего полученное 16-разрядное значениеPCпомещается в стек, и содержимое указателя стекаSPтакже увеличивается на 2. Адрес перехода образуется с помощью конкатенации (сцепления) 5-ти старших бит увеличенного содержимого счетчика командPC, содержимого 7-5 битов старшего байта команды и содержимого второго байта команды. Адрес перехода и указанная команда должны находиться внутри одной страницы памяти программ (ПП) объемом 2 Кбайт, определяемой содержимым пяти старших битPC.Время выполнения команды 2 цикла.

Алгоритм

Пример

(PC)(PC)+2, (SP)(SP)+1

((SP))(PC[7-0]), (SP)(SP)+1

((SP))(PC[15-8])

(PC[10-0])addr11[10-8] addr11[7-0],

где есть знак конкатенации

;(SP)=07H, (PC)=28DH,

;MT1 соответствует адресу ;345H в ПП

ACALL MT1 ;(PC)=345H, ;(SP)=09H,

;в РПД (09H)=02H, (08H)=8FH

ADD A,Rn ;гдеn=0-7

0 0 1 0 1 r r r

где rrrB=000B-111B

Команда "сложение" складывает содержимое аккумулятора Aс содержимым заданного регистраRnвыбранного банка, помещая результат вA. Содержимое используемого регистра не изменяется. При появлении переносов из разрядов 7 и 3 результата устанавливаются в "1" флаг переносаCи флаг дополнительного переносаACсоответственно, в противном случае эти флаги сбрасываются в "0". Флаг переполненияOVустанавливается, если есть перенос из бита 6 и нет переноса из бита 7, или есть перенос из бита 7 и нет - из бита 6, в противном случае флагOVсбрасывается. Время выполнения команды 1 цикл.

Алгоритм

Пример

(A)(A)+(Rn), где n=0-7

(С)x, (OV)=x, (AC)=x, где x{0,1}

;(A)=0C3H, (R6)=0AAH

ADD A,R6 ;(A)=6DH,(R6)=0AAH,

;(AC)=0, (C)=1, (OV)=1

ADD A,@Ri ;гдеi{0,1}

0 0 1 0 0 1 1 i

Команда "сложение" складывает содержимое аккумулятора Aс содержимым ячейки резидентной памяти данных (РПД), адресуемой содержимым заданного регистраRi выбранного банка. Результат размещается вA. Содержимое используемой ячейки не изменяется. Логика установки (сброса) флагов и время выполнения такие же, как у рассмотренной выше команды с аналогичной мнемоникой.

Алгоритм

Пример

(A)(A)+((Ri)), где i{0,1}

(С)x, (OV)=x, (AC)=x, где x{0,1}

;(A)=95H, (R1)=31H,

;в РПД (31H)=4CH

ADD A,@R1 ;(A)=0E1H, (C)=0, ;(AC)=1, (OV)=0, (31H)=4CH

ADD A,direct

0 0 1 0 0 1 0 1

direct

Команда "сложение" складывает содержимое аккумулятора Aс содержимым ячейки резидентной памяти данных (либо регистра специальных функций), 8-разрядный адрес которой (которого) определяется символическим именемdirect. Результат помещаетсяв A.Содержимое используемой ячейки или используемого регистра не изменяется. Логика установки (сброса) флагов и время выполнения такие же, как у рассмотренной выше команды с аналогичной мнемоникой.

Алгоритм

Пример

(A)(A)+(direct)

(С)x, (OV)=x, (AC)=x, где x{0,1}

;(A)=77H, (P1)=0FFH

ADD A,P1 ;(A)=76H,

;(AC)=1, (C)=1, (OV)=0

;(P1)=0FFH

ADD A,#data8

0 0 1 0 0 1 0 0

data8

Команда "сложение" складывает содержимое аккумулятора Aс байтом данных data8, непосредственно указанным в команде. Результат размещаетсяв A.Логика установки (сброса) флагов и время выполнения такие же, как у рассмотренной выше команды с аналогичной мнемоникой.

Алгоритм

Пример

(A)(A)+data8

(С)x, (OV)=x, (AC)=x, где x{0,1}

;(A)=09H

ADD A,#0D3H ;(A)=0DCH,

;(AC)=0, (C)=0, (OV)=0

ADDC A,Rn ;гдеn=0-7

0 0 1 1 1 r r r

где rrrB=000B-111B

Команда "сложение с переносом" одновременно складывает содержимое аккумулятораA, содержимое флага переноса С и содержимое заданного регистраRnвыбранного банка, помещая результат вA. Содержимое используемого регистра не изменяется. При появлении переносов из разрядов 7 и 3 результата устанавливаются в "1" флаг переносаCи флаг дополнительного переносаACсоответственно, в противном случае эти флаги сбрасываются в "0". Флаг переполненияOVустанавливается, если есть перенос из бита 6 и нет переноса из бита 7, или есть перенос из бита 7 и нет - из бита 6, в противном случае флагOVсбрасывается. Время выполнения команды 1 цикл.

Алгоритм

Пример

(A)(A)+(C)+(Rn), где n=0-7

(С)x, (OV)=x, (AC)=x, где x{0,1}

;(A)=0B2H, (R3)=99H, (C)=1

ADDC A,R3 ;(A)=4CH,(R3)=99H,

;(AC)=0, (C)=1, (OV)=1

ADDC A,@Ri ;гдеi{0,1}

0 0 1 1 0 1 1 i

Команда "сложение с переносом" одновременно складывает содержимое аккумулятораA,содержимое флага переносаCи содержимое ячейки резидентной памяти данных (РПД), адресуемой содержимым заданного регистраRi выбранного банка.Результат помещается вA. Содержимое используемой ячейки не изменяется. Логика установки (сброса) флагов и время выполнения такие же, как у рассмотренной выше команды с аналогичной мнемоникой.

Алгоритм

Пример

(A)(A)+(C)+((Ri)), где i{0,1}

(С)x, (OV)=x, (AC)=x, где x{0,1}

;(A)=0D5H, (R0)=3AH,

;в РПД (3AH)=1AH, (C)=1

ADDC A,@R0 ;(A)=0F0H,

;(AC)=1, (C)=0, (OV)=0,

;(3AH)=1AH

ADDC A,direct

0 0 1 1 0 1 0 1

direct

Команда "сложение с переносом" одновременно складывает содержимое аккумулятораA, содержимое флага переносаCи содержимое ячейки резидентной памяти данных (либо регистра специальных функций), 8-разрядный адрес которой (которого) определяется символическим именемdirect. Результат помещаетсяв A.Содержимое используемой ячейки или используемого регистра не изменяется. Логика установки (сброса) флагов и время выполнения такие же, как у рассмотренной выше команды с аналогичной мнемоникой.

Алгоритм

Пример

(A)(A)+(C)+(direct)

(С)x, (OV)x, (AC)x,

где x{0,1}

;(A)=11H, (C)=1,

;(DPH)=0DFH

ADDC A,DPH ;(A)=0F1H,

;(AC)=1, (C)=0, (OV)=0,

;(DPH)=0DFH

ADDC A,#data8

0 0 1 1 0 1 0 0

data8

Команда "сложение с переносом" одновременно складывает содержимое аккумулятораA, содержимое флага переносаCи байт данныхdata8, непосредственно указанный в команде. Результат размещаетсяв A.Логика установки (сброса) флагов и время выполнения такие же, как у рассмотренной выше команды с аналогичной мнемоникой.

Алгоритм

Пример

(A)(A)+(C)+data8

(С)x, (OV)x, (AC)x, где x{0,1}

;(A)=55H, (C)=0

ADDC A,#55H ;(A)=0AAH,

;(AC)=0, (C)=0, (OV)=1

AJMP addr11

addr11[10-8] 0 0 0 0 1

addr11[7-0]

Команда "абсолютный переход" передает управление по адресу с символическим именем addr11, который образуется с помощью конкатенации (сцепления) 5-ти старших бит содержимого счетчика командPC (после увеличения егона 2), содержимого 7-5 битов старшего байта команды и содержимого второго байта команды. Адрес перехода и указанная команда должны находиться внутри одной страницы памяти программ (ПП) объемом 2 Кбайт, определяемой содержимым пяти старших битPC.Время выполнения команды 2 цикла.

Алгоритм

Пример

(PC)(PC)+2

(PC[10-0])addr11[10-8] addr11[7-0],

где есть знак конкатенации

;(PC)=28FH,

;MT2 соответствует адресу ;34AH в ПП

AJMP MT2 ;(PC)=34AH

ANL A,Rn ;гдеn=0-7

0 1 0 1 1 r r r

где rrrB=000B-111B

Команда "логическое И" выполняет поразрядную конъюнкцию содержимого аккумулятора Aс содержимым заданного регистраRnвыбранного банка, помещая результат вA. Содержимое используемого регистра не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

Пример

(A)(A)(Rn), где n=0-7

;(A)=0FH, (R2)=0C5H

ANL A,R2 ;(A)=05H,(R2)=0C5H

ANL A,@Ri ;гдеi{0,1}

0 1 0 1 0 1 1 i

Команда "логическое И" выполняет поразрядную конъюнкцию содержимого аккумулятора Aс содержимым ячейки резидентной памяти данных (РПД), адресуемой содержимым заданного регистраRi выбранного банка.Результат размещается вA. Содержимое используемой ячейки не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

Пример

(A)(A)((Ri)), где i{0,1}

;(A)=0BCH, (R0)=35H,

;в РПД (35H)=47H

ANL A,@R0 ;(A)=04H,

;в РПД (35H)=47H

ANL A,direct

0 1 0 1 0 1 0 1

direct

Команда "логическое И" выполняет поразрядную конъюнкцию содержимого аккумулятора Aс содержимым ячейки резидентной памяти данных (либо регистра специальных функций), 8-разрядный адрес которой (которого) определяется символическим именемdirect. Результат помещаетсяв A.Содержимое используемой ячейки или используемого регистра не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

Пример

(A)(A)(direct)

;(A)=0A3H, (PSW)=85H

ANL A,PSW ;(A)=81H,(PSW)=85H

ANL A,#data8

0 1 0 1 0 1 0 0

data8

Команда "логическое И" выполняет поразрядную конъюнкцию содержимого аккумулятора Aс байтом данных data8, непосредственно указанным в команде. Результат размещаетсяв A.Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

Пример

(A)(A)data8

;(A)=36H

ANL A,#0DDH ;(A)=14H

ANL direct,A

0 1 0 1 0 0 1 0

direct

Команда "логическое И" выполняет поразрядную конъюнкцию содержимого аккумулятора Aс содержимым ячейки резидентной памяти данных (либо регистра специальных функций), 8-разрядный адрес которой (которого) определяется символическим именемdirect. Результат помещается соответственно в используемую ячейку или используемый регистр.СодержимоеAне изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

Пример

(direct)(direct)(A)

;(A)=55H, (P2)=0AAH

ANL P2,A ;(A)=55H,(P2)=00H

ANL direct,#data8

0 1 0 1 0 0 1 1

direct

data8

Команда "логическое И" выполняет поразрядную конъюнкцию байта данных data8, непосредственно указанного в команде, с содержимым ячейки резидентной памяти данных (либо регистра специальных функций), 8-разрядный адрес которой (которого) определяется символическим именемdirect. Результат помещается соответственно в используемую ячейку или используемый регистр.Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.

Алгоритм

Пример

(direct)(direct)data8

;(P1)=0FFH

ANL P1,#73H ;(P1)=73H

ANL C,bit

1 0 0 0 0 0 1 0

bit

Команда "логическое И" выполняет конъюнкцию содержимого флага переноса Cс содержимым бита, 8-разрядный адрес которого определяется символическим именемbit в области ячеек резидентной памяти данных (РПД) или регистров специальных функций, допускающей побитовое обращение. Результат помещаетсяв С.Содержимое используемого бита не изменяется. Команда на состояние других флагов не влияет и имеет время выполнения 2 цикла.

Алгоритм

Пример

(C)(C)(bit)

;(C)=1, (P1[0])=0,

;в РПД (24H)=0FH

ANL C,P1.0 ;(C)=0, (P1[0])=0

ANL C,20H ;(C)=0, (24H)=0FH

ANL C,/bit

1 0 1 1 0 0 0 0

bit

Команда "логическое И" выполняет конъюнкцию содержимого флага переноса Cс инвертированным значением бита из области ячеек резидентной памяти данных или регистров специальных функций, допускающей побитовое обращение, при этом содержимое используемого бита, 8-разрядный адрес которого определяется символическим именемbit, не изменяется. Результат помещаетсяв С.Команда на состояние других флагов не влияет и имеет время выполнения 2 цикла.

Алгоритм

Пример

(C)(C) 

;(C)=1, (AC)=0

ANL C,/AC ;(C)=1, (AC)=0

CJNE A,direct,addr

1 0 1 1 0 1 0 1

direct

rel

Команда "сравнение и переход, если не равно" сравнивает содержимое аккумулятора Aс содержимым ячейки резидентной памяти данных (либо регистра специальных функций), 8-разрядный адрес которой (которого) определяется символическим именемdirect, и выполняет переход по адресуaddr, если содержимоеA не равно содержимому используемой ячейки или используемого регистра, в противном случае выполняется следующая команда. Адрес переходаaddr определяется при помощи сложения 8-битового числаrel(со знаком), размещенного в последнем байте команды, с содержимым счетчика командPCпосле увеличения его на три. Таким образом, указанный переход возможен в пределах от -128 до+127 относительно начального адреса следующей команды, при этом отрицательное значениеrelпредставляется двоичным числом в дополнительном коде. Флаг переносаCсбрасывается в "0", если содержимоеAбольше (равно) содержимого (содержимому) используемой ячейки или используемого регистра, в противном случае флаг устанавливается в "1". Команда не изменяет (A) и (direct) и имеет время выполнения2 цикла.

Алгоритм

Пример

если (direct)(A), то (PC)(PC)+3+rel и (C)0

если (direct)(A), то (PC)(PC)+3+rel и (C)1

если (direct)=(A), то (PC)(PC)+3 и

(C)0

;(A)=97H, (P2)=0F0H, (C)=0,

;(PC)=3FFH, MT3 соответству-

;ет адресу 41FH, rel=1DH

CJNE A,P2,MT3 ;(C)=1,

;(A)=97H, (P2)=0F0H,

;(PC)=41FH

CJNE A,#data8,addr

1 0 1 1 0 1 0 0

data8

rel

Команда "сравнение и переход, если не равно" сравнивает содержимое аккумулятора A с байтом данныхdata8, непосредственно указанным в команде,и выполняет переход по адресуaddr, если содержимоеA не равноdata8, в противном случае выполняется следующая команда. Процедура вычисления адреса перехода, влияние на(A)и время выполнения такие же, как у рассмотренной выше команды с аналогичной мнемоникой.Флаг переносаCсбрасывается в "0", если содержимоеAбольше (равно)data8, в противном случае флаг устанавливается в "1".

Алгоритм

Пример

если data8(A), то (PC)(PC)+3+rel и (C)0

если data8(A), то (PC)(PC)+3+rel и (C)1

если data8=(A), то (PC)(PC)+3 и

(C)0

;(A)=0FCH, (C)=1, (PC)=3FFH, ;MT4 соответствует адресу

;3F0H, rel=0EEH

CJNE A,#0BFH,MT4 ;(C)=0,

;(A)=0FCH, (PC)=3F0H

CJNE Rn,#data8,addr

1 0 1 1 1 r r r

data8

rel

где n=0-7

где rrrB=000B-111B

Команда "сравнение и переход, если не равно" сравнивает содержимое заданного регистра Rnвыбранного банка с байтом данныхdata8, непосредственно указанным в команде,и выполняет переход по адресуaddr, если содержимоеRn не равноdata8, в противном случае выполняется следующая команда. Процедура вычисления адреса перехода и время выполнения такие же, как у рассмотренной выше команды с аналогичной мнемоникой.Флаг переносаCсбрасывается в "0", если содержимоеRnбольше (равно)data8, в противном случае флаг устанавливается в "1". Команда не влияет на (Rn).

Алгоритм

Пример

если data8(Rn), то (PC)(PC)+3+rel и (C)0

если data8(Rn), то (PC)(PC)+3+rel и (C)1

если data8=(Rn), то (PC)(PC)+3 и

(C)0

;(R7)=80H, (C)=0, (PC)=300H, ;MT5 соответствует адресу

;30FH, rel=0CH

CJNE R7,#81H,MT5 ;(C)=1,

;(R7)=80H, (PC)=30FH

CJNE @Ri,#data8,addr

1 0 1 1 0 1 1 i

data8

rel

где i{0,1}

Команда "сравнение и переход, если не равно" сравнивает содержимое ячейки резидентной памяти данных (РПД), адресуемой содержимым заданного регистраRi выбранного банка,с байтом данныхdata8, непосредственно указанным в команде,и выполняет переход по адресуaddr, если содержимое используемой ячейки не равноdata8, в противном случае выполняется следующая команда. Процедура вычисления адреса перехода и время выполнения такие же, как у рассмотренной выше команды с аналогичной мнемоникой.Флаг переносаCсбрасывается в "0", если содержимое используемой ячейкибольше (равно)data8, в противном случае флаг устанавливается в "1". Команда не влияет на ((Ri)).

Алгоритм

Пример

если data8((Ri)), то (PC)(PC)+3+rel и (C)0

если data8((Ri)), то (PC)(PC)+3+rel и (C)1

если data8=((Ri)), то

(PC)(PC)+3 и (C)0

;(R0)=41H, (C)=1, (PC)=200H,

;в РПД (41H)=57H,

;MT6 соответствует адресу

;22AH, rel=27H

CJNE @R0,#29H,MT6 ;(C)=0,

;(PC)=22AH,

;в РПД (41H)=57H

CLR A

1 1 1 0 0 1 0 0

Команда "сброс аккумулятора" сбрасывает (обнуляет) содержимое аккумулятора A,на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

Пример

(A)0

;(A)=6CH, (C)=0, (AC)=1

CLR A ;(A)=00H, (C)=0, (AC)=1

CLR C

1 1 0 0 0 0 1 1

Команда "сброс флага переноса" сбрасывает (обнуляет) содержимое флага переноса C,на состояние других флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

Пример

(C)0

;(C)=1

CLR C ;(C)=0

CLR bit

1 1 0 0 0 0 1 0

bit

Команда "сброс бита" сбрасывает (обнуляет) содержимое бита, 8-разрядный адрес которого определяется символическим именем bit в области ячеек резидентной памяти данных (РПД) или регистров специальных функций, допускающей побитовое обращение. Команда на состояние не используемых флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

Пример

(bit)0

;(P1)=5EH=01011110B

;в РПД (28H)=31H

CLR P1.3 ;(P1)=56H=01010110B

CLR 40H ;(28H)=30H

CPL A

1 1 1 1 0 1 0 0

Команда "инверсия аккумулятора" инвертирует содержимое каждого бита аккумулятора A,на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

Пример

(A)

;(A)=65H=01100101B

CPL A ;(A)=9AH=10011010B

CPL C

1 0 1 1 0 0 1 1

Команда "инверсия флага переноса" инвертирует содержимое флага переноса C,на состояние других флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

Пример

(C)

;(C)=1, (AC)=1, (OV)=0

CPL C ;(C)=0, (AC)=1, (OV)=0

CPL bit

1 0 1 1 0 0 1 0

bit

Команда "инверсия бита" инвертирует содержимое бита, 8-разрядный адрес которого определяется символическим именем bit в области ячеек резидентной памяти данных или регистров специальных функций, допускающей побитовое обращение. Команда на состояние не используемых флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

Пример

(bit)

;(P1)=39H=00111001B

CPL P1.1

CPL P1.3 ;(P1)=33H=00110011B

DA A

1 1 0 1 0 1 0 0

Команда "десятичная коррекция аккумулятора" упорядочивает 8-битовую величину в аккумуляторе A, полученную в результате выполненной ранее команды сложения двух переменных, представленных в двоично-десятичном формате. Для выполнения сложения может использоваться любая из типов командADDилиADDC. Если значение битов 3-0 аккумулятора превышает 9 (xxxx1010B-xxxx1111B)или, если содержимое флагаACустановлено в "1", то к содержимомуAприбавляется 06H, при этом получается соответствующая двоично-десятичная цифра в младшем полубайтеA. Указанное сложение не изменяет содержимое флагаAC, но устанавливает в "1" содержимое флага переносаC, если перенос из поля младших четырех бит распространяется через все старшие битыA, в противном случае - не изменяет(C). Далее, если содержимое флагаCравно "1", или если значение битов 7-4 аккумулятора превышает 9 (1010xxxxB-1111xxxxB), то это значение увеличивается на 6, создавая соответствующую двоично-десятичную цифру в старшем полубайтеA. При этом флагCустанавливается (не изменяется), если имеется (отсутствует) перенос из бита 7 аккумулятора. Время выполнения команды 1 цикл.

Алгоритм

Пример

если (A[3-0])9 или (AC)=1,

то (A)(A)+6

если (A[7-4])9 или (C)=1,

то (A[7-4])(A[7-4])+6

;(A)=30H, (R3)=99H

ADD A,R3 ;(A)=0C9H,

;(AC)=0, (C)=0

DA A ;(C)=1, (A)=29H, (AC)=0

DEC A

0 0 0 1 0 1 0 0

Команда "декремент" производит вычитание "1" из содержимого аккумулятора A, на флаги не влияет и имеет время выполнения 1 цикл.

Алгоритм

Пример

(A)(A)-1

;(A)=00H, (C)=1, (AC)=1

DEC A ;(A)=0FFH, (C)=1, (AC)=1

DEC Rn ;гдеn=0-7

0 0 0 1 1 r r r

где rrrB=000B-111B

Команда "декремент" производит вычитание "1" из содержимого заданного регистра Rnвыбранного банка, на флаги не влияет и имеет время выполнения 1 цикл.

Алгоритм

Пример

(Rn)(Rn)-1, где n=0-7

;(R1)=35H, (C)=0, (AC)=1

DEC R1 ;(R1)=34H, (C)=0, (AC)=1

DEC direct

0 0 0 1 0 1 0 1

direct

Команда "декремент" производит вычитание "1" из содержимого ячейки, 8-разрядный адрес которой определяется символическим именем direct в области резидентной памяти данных или в среде регистров специальных функций. Команда на флаги не влияет и имеет время выполнения 1 цикл.

Алгоритм

Пример

(direct)(direct)-1

;(SCON)=0A0H, (C)=1, (AC)=0

DEC SCON ;(SCON)=9FH,

;(C)=1, (AC)=0

DEC @Ri ;гдеi{0,1}

0 0 0 1 0 1 1 i

Команда "декремент" производит вычитание "1" из содержимого ячейки резидентной памяти данных (РПД), адресуемой содержимым заданного регистра Ri выбранного банка, на флаги не влияет и имеет время выполнения 1 цикл.

Алгоритм

Пример

((Ri))((Ri))-1, где i{0,1}

;(R1)=7FH, в РПД (7FH)=40H

DEC @R1 ;(R1)=7FH,

;в РПД (7FH)=3FH

DIV AB

1 0 0 0 0 1 0 0

Команда "деление" делит 8-битовую переменную из аккумулятора Aна 8-битовую переменную из регистраB. Аккумулятору присваивается целая часть частного (старшие разряды), а региструB- остаток. Содержимое флага переносаCсбрасывается в "0". Содержимое флага переполненияOVтакже сбрасывается, а в случае деления на нуль - устанавливается в "1". Содержимое флагаACне изменяется. Команда имеет время выполнения 4 цикла.

Алгоритм

Пример

(A)(A):(B), (B)mod[(A):(B)], (C)0

если (В)0, то (OV)0

если (В)=0, то (OV)1

;(A)=0FBH=251, (B)=12H=18,

;(C)=1, (OV)=1

DIV AB ;(C)=0, (OV)=0,

;(A)=0DH=13, (B)=11H=17

DJNZ Rn,addr ;гдеn=0-7

1 1 0 1 1 r r r

rel

где rrrB=000-111B

Команда "декремент и переход, если не равно нулю" выполняет вычитание "1" из содержимого заданного регистра Rnвыбранного банка и осуществляет переход по адресуaddr, если содержимоеRn не равно нулю, в противном случае выполняется следующая команда. Адрес переходаaddr определяется при помощи сложения 8-битового числаrel(со знаком), размещенного в последнем байте команды, с содержимым счетчика командPCпосле увеличения его на 2. Таким образом, указанный переход возможен в пределах от -128 до+127 относительно начального адреса следующей команды, при этом отрицательное значениеrel представляется двоичным числом в дополнительном коде. КомандаDJNZ Rn,addr на состояние флагов не влияет и имеет время выполнения 2 цикла.

Алгоритм

Пример

(Rn)(Rn)-1, где n=0-7

если (Rn)0, то (PC)(PC)+2+rel

если (Rn)0, то (PC)(PC)+2

;(R3)=0AH, rel=0FEH

MT5: DJNZ R3,MT5 ;команда ;выполнится 10 раз

DJNZ direct,addr

1 1 0 1 0 1 0 1

direct

rel

Команда "декремент и переход, если не равно нулю" выполняет вычитание "1" из содержимого ячейки, 8-разрядный адрес которой определяется символическим именем direct в области резидентной памяти данных или в среде регистров специальных функций, и осуществляет переход по адресуaddr, если содержимое используемой ячейки не равно нулю, в противном случае выполняется следующая команда.Адрес переходаaddr определяется при помощи сложения 8-битового числаrel(со знаком), размещенного в последнем байте команды, с содержимым счетчика командPCпосле увеличения его на 3. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.

Алгоритм

Пример

(direct)(direct)-1

если (direct)0, то (PC)(PC)+3+rel

если (direct)0, то (PC)(PC)+3

;(P1)=0AH, rel=0FDH

MT5: DJNZ P1,MT5 ;команда ;выполнится 10 раз

INC A

0 0 0 0 0 1 0 0

Команда "инкремент байта" производит прибавление "1" к содержимому аккумулятора A, на флаги не влияет и имеет время выполнения 1 цикл.

Алгоритм

Пример

(A)(A)+1

;(A)=0FFH, (C)=1, (AC)=1

INC A ;(A)=00H, (C)=1, (AC)=1

INC Rn ;гдеn=0-7

0 0 0 0 1 r r r

где rrrB=000B-111B

Команда "инкремент байта" производит прибавление "1" к содержимому заданного регистра Rnвыбранного банка, на флаги не влияет и имеет время выполнения 1 цикл.

Алгоритм

Пример

(Rn)(Rn)+1, где n=0-7

;(R1)=35H, (C)=0, (AC)=1

INC R1 ;(R1)=36H, (C)=0, (AC)=1

INC direct

0 0 0 0 0 1 0 1

direct

Команда "инкремент байта" производит прибавление "1" к содержимому ячейки, 8-разрядный адрес которой определяется символическим именем direct в области резидентной памяти данных (РПД) или в среде регистров специальных функций. Команда на флаги не влияет и имеет время выполнения 1 цикл.

Алгоритм

Пример

(direct)(direct)+1

;(TMOD)=0A5H, (C)=1, (AC)=0

;в РПД (23H)=0FFH

INC TMOD ;(TMOD)=0A6H,

;(C)=1, (AC)=0

INC 23H ;в РПД (23H)=00H,

;(C)=1, (AC)=0

INC @Ri ;гдеi{0,1}

0 0 0 0 0 1 1 i

Команда "инкремент байта" производит прибавление "1" к содержимому ячейки резидентной памяти данных (РПД), адресуемой содержимым заданного регистра Ri выбранного банка, на флаги не влияет и имеет время выполнения 1 цикл.

Алгоритм

Пример

((Ri))((Ri))+1, где i{0,1}

;(R0)=44H, в РПД (44H)=55H

INC @R0 ;(R0)=44H,

;в РПД (44H)=56H

INC DPTR

1 0 1 0 0 0 1 1

Команда "инкремент двух байтов" производит прибавление "1" к содержимому 16-битового указателя данныхDPTR, причем переполнение младшего байтаDPTR (DPL) приводит к увеличению на "1" содержимого старшего байтаDPTR (DPH).Команда на флаги не влияет и имеет время выполнения 2 цикла.

Алгоритм

Пример

(DPTR)(DPTR)+1

;(DPH)=12H, (DPL)=0FFH,

INC DPTR ;(DPH)=13H, ;(DPL)=00H

JB bit,addr

0 0 1 0 0 0 0 0

bit

rel

Команда "переход, если бит установлен" выполняет переход по адресу addr, если содержимое бита, 8-разрядный адрес которого определяется символическим именемbit в области ячеек резидентной памяти данных или в среде регистров специальных функций, установлено в "1", в противном случае выполняется следующая команда. Содержимое используемого бита не изменяется. Адрес переходаaddr определяется при помощи сложения 8-битового числаrel(со знаком), размещенного в последнем байте команды, с содержимым счетчика командPCпосле увеличения его на 3. Таким образом, указанный переход возможен в пределах от -128 до+127 относительно начального адреса следующей команды, при этом отрицательное значениеrel представляется двоичным числом в дополнительном коде. Команда на флаги не влияет и имеет время выполнения 2 цикла.

Алгоритм

Пример

если (bit)1, то (PC)(PC)+3+rel

если (bit)0, то (PC)(PC)+3

;MT6 соответствует

;адресу 2FFH,

;(PC)=2F0H, rel=0CH, (A)=96H

JB A.2,MT6 ;(PC)=2FFH, ;(A)=96H

JBC bit,addr

0 0 0 1 0 0 0 0

bit

rel

Команда "переход, если бит установлен и сброс этого бита" выполняет переход по адресуaddr, если содержимое бита, 8-разрядный адрес которого определяется символическим именемbit в области ячеек резидентной памяти данных или в среде регистров специальных функций, установлено в "1", в противном случае выполняется следующая команда. Содержимое используемого бита сбрасывается в "0". Процедура вычисления адреса переходаaddr, влияние на флаги и время выполнения такие же, как у рассмотренной выше командыJB bit,addr.

Алгоритм

Пример

если (bit)1, то (PC)(PC)+3+rel

и (bit)0

если (bit)0, то (PC)(PC)+3

;MT8 соответствует адресу 400H,

;(PC)=3F1H, rel=0CH, (A)=78H

JBС A.3,MT8 ;(PC)=400H, (A)=70H

JC addr

0 1 0 0 0 0 0 0

rel

Команда "переход, если флаг переноса установлен" выполняет переход по адресу addr, если содержимое флага переносаCустановлено в "1", в противном случае выполняется следующая команда. Адрес переходаaddr определяется при помощи сложения 8-битового числаrel(со знаком), размещенного в младшем байте команды, с содержимым счетчика командPCпосле увеличения его на 2. Таким образом, указанный переход возможен в пределах от -128 до+127 относительно начального адреса следующей команды, при этом отрицательное значениеrel представляется двоичным числом в дополнительном коде. Команда на флаги не влияет и имеет время выполнения 2 цикла.

Алгоритм

Пример

если (С)1, то (PC)(PC)+2+rel

если (C)0, то (PC)(PC)+2

;MT1 соответствует адресу 1F0H,

;(PC)=1FFH, rel=0EFH, (C)=1

JС MT1 ;(PC)=1F0H, (C)=1

JMP @A+DPTR

0 1 1 1 0 0 1 1

Команда "косвенный переход" складывает 8-битовое содержимое аккумулятора Aс 16-битовым содержимым указателя данныхDPTR и загружает полученный результат в счетчик командPC. Указанное сложение выполняется таким образом, что перенос из младших 8-ми бит распространяется на старшие биты результата. СодержимоеA и DPTR не изменяется. Команда на флаги не влияет и имеет время выполнения 2 цикла.

Алгоритм

Пример

(PC)(DPTR[15-0])+(A[7-0])

;(PC)=34EH, (DPTR)=329H, (A)=86H

JMP @A+DPTR ;(PC)=3AFH

JNB bit,addr

0 0 1 1 0 0 0 0

bit

rel

Команда "переход, если бит не установлен" выполняет переход по адресу addr, если содержимое бита, 8-разрядный адрес которого определяется символическим именемbit в области ячеек резидентной памяти данных или в среде регистров специальных функций, сброшено в "0", в противном случае выполняется следующая команда. Содержимое используемого бита не изменяется. Процедура вычисления адреса переходаaddr, влияние на флаги и время выполнения такие же, как у рассмотренной выше командыJB bit,addr.

Алгоритм

Пример

если (bit)0, то (PC)(PC)+3+rel

если (bit)1, то (PC)(PC)+3

;MT2 соответствует адресу 2FFH,

;(PC)=2F0H, rel=0CH, (A)=96H

JNB A.0,MT2 ;(PC)=2FFH, (A)=96H

JNC addr

0 1 0 1 0 0 0 0

rel

Команда "переход, если флаг переноса не установлен" выполняет переход по адресу addr, если содержимое флага переносаCсброшено в "0", в противном случае выполняется следующая команда. Процедура вычисления адреса переходаaddr, влияние на флаги и время выполнения такие же, как у рассмотренной выше командыJC addr.

Алгоритм

Пример

если (С)0, то (PC)(PC)+2+rel

если (C)1, то (PC)(PC)+2

;MT1 соответствует адресу 200H,

;(PC)=1F0H, rel=0EH, (C)=0

JNС MT1 ;(PC)=200H, (C)=0

JNZ addr

0 1 1 1 0 0 0 0

rel

Команда "переход, если содержимое аккумулятора не равно нулю" выполняет переход по адресу addr, если содержимоеA не ноль, в противном случае выполняется следующая команда. Адрес переходаaddr определяется при помощи сложения 8-битового числаrel(со знаком), размещенного в младшем байте команды, с содержимым счетчика командPCпосле увеличения его на 2. Таким образом, указанный переход возможен в пределах от -128 до+127 относительно начального адреса следующей команды, при этом отрицательное значениеrel представляется двоичным числом в дополнительном коде. Команда на флаги и(A) не влияет и имеет время выполнения 2 цикла.

Алгоритм

Пример

если (A)0, то (PC)(PC)+2+rel

если (A)0, то (PC)(PC)+2

;MT4 соответствует адресу 183H,

;(PC)=200H, rel=81H, (A)=01H

JNZ MT4 ;(PC)=183H, (A)=01H

JZ addr

0 1 1 0 0 0 0 0

rel

Команда "переход, если содержимое аккумулятора равно нулю" выполняет переход по адресу addr, если все биты аккумулятора равны нулю, в противном случае выполняется следующая команда. СодержимоеAне изменяется. Процедура вычисления адреса переходаaddr, влияние на флаги и время выполнения такие же, как у рассмотренной выше командыJNZ addr.

Алгоритм

Пример

если (A)0, то (PC)(PC)+2+rel

если (A)0, то (PC)(PC)+2

;MT4 соответствует адресу 231H,

;(PC)=200H, rel=2FH, (A)=00H

JZ MT4 ;(PC)=231H, (A)=00H

LCALL addr16

0 0 0 1 0 0 1 0

addr16[15-8]

addr16[7-0]

Команда "длинный вызов подпрограммы" вызывает безусловно подпрограмму с начальным адресом addr16. При этом 16-разрядное содержимое счетчика командPC увеличивается на 3 для получения адреса следующей команды и помещается в стек (сначала следует младший байт), а содержимое указателя стекаSPувеличивается на 2. Адресaddr16 получается с помощью второго и третьего байтов команды, которые загружаются соответственно в старший и младший байтыPC.Выполнение программы продолжается командой, находящейся по полученному адресу. Подпрограмма, следовательно, может начинаться в любом месте адресного пространства памяти программ объемом до 64 Кбайт. Команда на флаги не влияет и имеет время выполнения 2 цикла.

Алгоритм

Пример

(PC)(PC)+3

(SP)(SP)+1, ((SP))(PC[7-0])

(SP)(SP)+1, ((SP))(PC[15-8])

(PC)addr16[15-0]

;(SP)=10H, (PC)=135H,

;MT соответствует адресу 300H

LCALL MT ;(SP)=12H, (PC)=300H,

;в РПД (11H)=38H, (12H)=01H

LJMP addr16

0 0 0 0 0 0 1 0

addr16[15-8]

addr16[7-0]

Команда "длинный переход" выполняет безусловный переход по адресу addr16. Этот адрес получается с помощью второго и третьего байтов команды, которые загружаются соответственно в старший и младший байты программного счетчикаPC.Переход, таким образом, может осуществляться по любому адресу пространства памяти программ объемом до 64 Кбайт. Команда на флаги не влияет и имеет время выполнения 2 цикла.

Алгоритм

Пример

(PC)addr16[15-0]

;(PC)=234H

LJMP 12CH ;(PC)=12CH

MOV A,Rn ;гдеn=0-7

1 1 1 0 1 r r r

где rrrB=000B-111B

Команда "переслать байт" выполняет загрузку аккумулятора 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]

Команда "переслать два байта" загружает указатель данных DPTR16-битовой константой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)data16[7-0], (B)data16[15-8]

(C)0

если data16  0FFH, то (OV)0

если data16  0FFH, то (OV)1

;(A)=50H=80, (B)=0A0H=160,

;(C)=1, (OV)=0

MUL AB ;(C)=0, (OV)=1,

;(A)=00H, (B)=32H

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)(C)

;(C)=0, (AC)=0

ORL C,/AC ;(C)=1, (AC)=0

POP direct

1 1 0 1 0 0 0 0

direct

Команда "чтение из стека" копирует содержимое ячейки резидентной памяти данных (РПД), адресуемой содержимым указателя стека SP, в ячейку, адрес которой определяется символическим именемdirectв области РПД или в среде регистров специальных функций. При этом содержимое указателя стека уменьшается на единицу. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.

Алгоритм

Пример

(direct)((SP))

(SP)(SP)-1

;(SP)=32H, (DPH)=0AAH,

;в РПД (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))(direct)

;(SP)=44H, (DPL)=33H,

;в РПД (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)(SP)-1

(PC[7-0])((SP))

(SP)(SP)-1

;(SP)=32H, (PC)=3DFH,

;в РПД (31H)=23H, (32H)=01H

RET ;(SP)=30H, (PC)=123H,

;в РПД (31H)=23H, (32H)=01H

RETI

0 0 1 1 0 0 1 0

Команда "возврат из прерывания" последовательно копирует содержимое двух ячеек, адресуемых содержимым указателя стека SP в резидентной памяти данных (РПД), в программный счетчикPC и разрешает прерывания с уровнем приоритета, равным уровню приоритета только что обработанного прерывания. При этом содержимоеSPуменьшается на два. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.

Алгоритм

Пример

(PC[15-8])((SP))

(SP)(SP)-1

(PC[7-0])((SP))

(SP)(SP)-1

;(SP)=23H, (PC)=0D3FH,

;в РПД (22H)=34H, (23H)=02H

RETI ;(SP)=21H, (PC)=234H,

;в РПД (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[0])(A[7])

;(A)=85H, (C)=0

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[0])(С), (С)(A[7])

;(A)=85H, (C)=0

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[7])(A[0])

;(A)=85H, (C)=1

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[7])(С), (С)(A[0])

;(A)=85H, (C)=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

(С)x, (OV)=x, (AC)=x, где x{0,1}

;(A)=0C9H, (R2)=54H, (C)=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}

(С)x, (OV)=x, (AC)=x, где x{0,1}

;(A)=49H, (R0)=3AH,

;в РПД (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)

(С)x, (OV)=x, (AC)=x, где x{0,1}

;(A)=97H, (C)=0, (B)=25H

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

(С)x, (OV)=x, (AC)=x, где x{0,1}

;(A)=0BEH, (C)=0

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[7-4])(A[3-0])

;(A)=49H

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

(Rn)(A)

;(A)=0FAH, (R6)=93H

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}

((Ri))(A)

;(A)=0FDH, (R1)=30H,

;в РПД (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)

(direct)(A)

;(A)=24H, (DPL)=3DH

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}

((Ri))[3-0](A[3-0])

;(A)=0FDH, (R1)=30H,

;в РПД (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