Система команд языка АСМ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]

Команда "переслать два байта" загружает указатель данных 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):=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)&Uacu

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow