Алгоритм

Пример

(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 цикла.

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