Алгоритм | Пример |
(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 |


