Алгоритм

Пример

(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.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22