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


