Микропроцессоры

Описание машинных команд

ACALL <addr 11> - абсолютный вызов подпрограммы.

Описание: вызывает подпрограмму, размещенную по указанному адресу <addr 11>. Команда увеличивает содержимое счетчика команд на 2 и затем помещает полученный результат в стек (младший байт первым). После это содержимое указателя стека SP увеличивается на 2. Т.к. в команде используется 11-разрядный адрес, полученный соединением пяти старших бит счетчика команд и второго байта команды, то подпрограмма должна начинаться в пределах той же 2K-байтной страницы. Команда не воздействует на флаги.

Пример: ACALL 311h

Количество байт: 2

Количество циклов: 2

Действие команды:

(PC) = (PC) + 2

(SP) = (SP) + 1

((SP)) = (PC7-0)

(SP) = (SP) + 1

((SP)) = (PC15-8)

(PC10-0) = адрес подпрограммы (метки)

Машинный код:

a10 a9 a8 1 0 0 0 1

a7 a6 a5 a4 a3 a2 a1 a0


ADD A, <байт-источник> - сложение.

Описание: складывает содержимое аккумулятора А с содержимым байта- источника. Результат операции помещается в аккумулятор. Флаг переноса C устанавливается при переносе из 7го разряда. Флаг вспомогательного переноса AC устанавливается при переносе из 3го разряда. При сложении знаковых чисел флаг переполнения OV устанавливается при превышении максимального положительного числа или при получении числа меньшего минимально возможного. Для команды сложения разрешены следующие режимы адресации байта - источника:

Пример: ADD A, R7

Количество байт: 1

Количество циклов: 1

Действие команды:

(PC) = (PC) + 1

(A) = (A) + (Rn) , n=0,1,2,3,4,5,6,7

Машинный код:

0 0 1 0 1 r r r

Пример: ADD A, @R0

Количество байт: 1

Количество циклов: 1

Действие команды:

(PC) = (PC) + 1

(A) = (A) + ((Ri)) , i=0,1

Машинный код:

0 0 1 0 0 1 1 i

Пример: ADD A, 100

Количество байт: 2

Количество циклов: 1

Действие команды:

(PC) = (PC) + 2

(A) = (A) + (direct)

Машинный код:

0 0 1 0 0 1 0 1

d d d d d d d d

Пример: ADD A, #38h

Количество байт: 2

Количество циклов: 1

Действие команды:

(PC) = (PC) + 2

(A) = (A) + (date 8)

Машинный код:

0 0 1 0 0 1 0 0

i i i i i i i i


ADDC A, <байт-источник> - сложение с учетом переноса.

Описание: складывает содержимое аккумулятора А с содержимым байта-источника, к получившемуся результату прибавляется значение флага переноса. Результат операции помещается в аккумулятор. Флаг переноса C устанавливается при переносе из 7го разряда. Флаг вспомогательного переноса AC устанавливается при переносе из 3го разряда. При сложении знаковых чисел флаг переполнения OV устанавливается при превышении максимального положительного числа или при получении числа меньшего минимально возможного. Для команды сложения разрешены следующие режимы адресации байта - источника:

Пример: ADDC A, R3

Количество байт: 1

Количество циклов: 1

Действие команды:

(PC) = (PC) + 1

(A) = (A) + (C) + (Rn) , n=0, : ,7

Машинный код: 0 0 1 1 1 r r r

Пример: ADDC A, @R0

Количество байт: 1

Количество циклов: 1

Действие команды:

(PC) = (PC) + 1

(A) = (A) + (C) + ((Ri)) , i=0,1

Машинный код: 0 0 1 1 0 1 1 i

Пример: ADDC A, 30h

Количество байт: 2

Количество циклов: 1

Действие команды:

(PC) = (PC) + 2

(A) = (A) + (C) + (direct)

Машинный код:

0 0 1 1 0 1 0 1

d d d d d d d d

Пример: ADDC A, #100

Количество байт: 2

Количество циклов: 1

Действие команды:

(PC) = (PC) + 2

(A) = (A) + (C) + (date 8)

Машинный код:

0 0 1 1 0 1 0 0

i i i i i i i i


AJMP <addr 11> - абсолютный переход в пределах 2K-байтной страницы.

Описание: передает управление команде, размещенной по указанному адресу <addr 11>. Команда увеличивает содержимое счетчика команд на 2 и затем заменяет младший байт счетчика команд на содержимое второго байта команды. Три младших бита старшего байта заменяются тремя старшими битами первого байта команды. Т.к. в команде используется 11- разрядный адрес, то адрес перехода должен начинаться в пределах той же 2K-байтной страницы памяти программ.

Пример: AJMP 1024

Количество байт: 2

Количество циклов: 2

Действие команды:

(PC) = (PC) + 2

(PC10-0) = адрес метки

Машинный код:

a10 a9 a8 0 0 0 0 1

a7 a6 a5 a4 a3 a2 a1 a0


ANL <байт приемник>,<байт источник> - команда "логическое И" для байтовых переменных.

Описание: выполняет операцию побитового "логического И" над указанными переменными и помещает результат в байт приемник. Команда не воздействует на флаги.

Для команды ANL с аккумулятором в качестве байта назначения разрешены следующие режимы адресации байта - источника:

Пример: ANL A, R3

Количество байт: 1

Количество циклов: 1

Действие команды:

(PC) = (PC) + 1

(A) = (A) & (Rn) , n=0,1,2,3,4,5,6,7

Машинный код: 0 1 0 1 1 r r r

Пример: ANL A, @R0

Количество байт: 1

Количество циклов: 1

Действие команды:

(PC) = (PC) + 1

(A) = (A) & ((Ri)) , i=0,1

Машинный код: 0 1 0 1 0 1 1 i

Пример: ANL A, 30h

Количество байт: 2

Количество циклов: 1

Действие команды:

(PC) = (PC) + 2

(A) = (A) & (direct)

Машинный код:

0 1 0 1 0 1 0 1

d d d d d d d d

Пример: ANL A, #100

Количество байт: 2

Количество циклов: 1

Действие команды:

(PC) = (PC) + 2

(A) = (A) & (date 8)

Машинный код:

0 1 0 1 0 1 0 0

i i i i i i i i

Для команды ANL с произвольным адресом ячейки внутренней памяти данных в качестве байта назначения разрешены следующие режимы адресации байта - источника:

Пример: ANL 30h,A

Количество байт: 2

Количество циклов: 1

Действие команды:

(PC) = (PC) + 2

(direct) = (A) & (direct)

Машинный код:

0 1 0 1 0 0 1 0

d d d d d d d d

Пример: ANL direct, #100

Количество байт: 3

Количество циклов: 2

Действие команды: (PC) = (PC) + 3

(direct) = (A) & (date 8)

Машинный код:

0 1 0 1 0 0 1 1

d d d d d d d d

i i i i i i i i

Примечание: при выполнении команды ANL над содержимым внешнего порта используется значение из внутреннего регистра, а не данные, присутствующие на выводах микросхемы!


ANL C,<бит источника> - "логическое И" битовой переменной и флага переноса C.

Описание: Если бит источника равен 0, то происходит сброс флага переноса, в противном случае флаг переноса не изменяет текущего значения. На остальные флаги команда не воздействует.

Пример: ANL С, 20h

Количество байт: 2

Количество циклов: 2

Действие команды: (PC) = (PC) + 2

(C) = (C) & (bit)

Машинный код:

0 1 0 1 0 0 1 0

b b b b b b b b

Знак '/' перед операндом в языке ассемблера указывает на то, что в качестве значения используется логическое отрицание адресуемого бита, при этом сам бит источника не изменяется.


CJNE <байт назначения>,<байт источника>,<смещение> - сравнение и переход, если не равно.

Описание: сравнивает значения первых двух операндов и выполняет переход, если операнды не равны. Если значение байта назначения без учета знака меньше байта источника без учета знака, то флаг переноса C устанавливается в '1', иначе сбрасывается в '0'. Ни один из операндов после выполнения команды не изменяется. Новое значение программного счетчика при переходе вычисляется суммирование содержимого программного счетчика со вторым операндом (третьим байтом команды). Перед выполнением суммирования в программный счетчик заносится адрес первого байта следующей команды. Суммирование производится с учетом знака третьего байта команды, представленного в дополнительном коде.

Первые два операнда допускают четыре вида адресации:

  1. байт назначения - аккумулятор

Пример: CJNE A, 30h, 15; direct=30h, rel=15

Количество байт: 3

Количество циклов: 2

Действие команды:

(PC) = (PC) + 3

IF (A) < > (direct) THEN

(PC) = (PC) + rel

IF (A) < (direct) THEN

(C) = 1

ELSE

(C) = 0

Машинный код:

1 0 1 1 0 1 0 1

d d d d d d d d

R e l A d r e s

Пример: CJNE A, #100, -78; data=100, rel=-78

Количество байт: 3

Количество циклов: 2

Действие команды: (PC) = (PC) + 3

IF (A) < > data THEN

(PC) = (PC) + rel

IF (A) < data THEN

(C) = 1

ELSE

(C) = 0

Машинный код:

1 0 1 1 0 1 0 0

i i i i i i i i

R e l A d r e s

  1. байт назначения - ячейка ОЗУ с косвенно-регистровой или регистровой адресацией

Пример: CJNE R5, #100, 78; Rn=R5 data=100, rel=78

Количество байт: 3

Количество циклов: 2

Действие команды: (PC) = (PC) + 3

IF (Rn) < > data THEN

(PC) = (PC) + rel

IF (Rn) < data THEN

(C) = 1

ELSE

(C) = 0

Машинный код:

1 0 1 1 1 r r r

i i i i i i i i

R e l A d r e s

Пример: CJNE @R0, #100, 78; Ri=R0 data=100, rel=78

Количество байт: 3

Количество циклов: 2

Действие команды: (PC) = (PC) + 3

IF ((Ri)) < > data, i=0,1 THEN

(PC) = (PC) + rel

IF ((Ri)) < data, i=0,1 THEN

(C) = 1

ELSE

(C) = 0

Машинный код:

1 0 1 1 0 1 1 i

i i i i i i i i

R e l A d r e s


CLR A - сброс аккумулятора

Описание: сбрасывает (записывает '0' во все биты аккумулятора). Команда не изменяет содержимое флагов.

Пример: CLR A      ;Записывает в аккумулятор число 00h

Количество байт: 1

Количество циклов: 1

Действие команды: (PC) = (PC) + 1

(A) = 0

Машинный код:

1 1 1 0 0 1 0 0


CLR <bit> - сбрасывает указанный бит в нуль.

Описание: сбрасывает (записывает '0') в указанный во втором байте команды бит. Команда не изменяет содержимое флагов.

Пример: CLR C ;Записывает во флаг переноса '0'

Количество байт: 1

Количество циклов: 1

Действие команды: (PC) = (PC) + 1

(C) = 0

Машинный код:

1 1 0 0 0 0 1 1

Пример: CLR P1.2       ;Записывает во второй бит порта 1 '0'

Количество байт: 2

Количество циклов: 1

Действие команды: (PC) = (PC) + 2

(bit) = 0

Машинный код:

1 1 0 0 0 0 1 0

b b b b b b b b


CPL A - каждый бит аккумулятора инвертируется.

Описание: каждый бит аккумулятора инвертируется, т.е. если в каком-либо из восьми бит аккумулятора записана '1', то в этот бит записывается '0' и наоборот.

Пример: CPL A

Количество байт: 1

Количество циклов: 1

Действие команды: (PC) = (PC) + 1

(A) = not(A)

Машинный код: 1 1 1 1 0 1 0 0


CPL <bit> - инвертируется указанный бит.

Описание: бит адрес, которого указан во втором байте команды инвертируется, т.е. если бит содержит '1', то в этот бит записывается '0' и наоборот.

Пример: CPL 27

Количество байт: 2

Количество циклов: 1

Действие команды: (PC) = (PC) + 1

(bit) = not(bit)

Машинный код:

1 0 1 1 0 0 1 0

b b b b b b b b


CPL C - инвертируется флаг переноса 'C'.

Описание: флаг переноса 'C' инвертируется, т.е. если флаг переноса 'C' содержит '1', то в него записывается '0' и наоборот.

Пример: CPL C

Количество байт: 1

Количество циклов: 1

Действие команды: (PC) = (PC) + 1

(C) = not(C)

Машинный код: 1 0 1 1 0 0 1 1


DA A - десятичная коррекция аккумулятора при сложении двоично-десятичных чисел.

Описание: команда десятичной коррекции позволяет вести сложение чисел, представленных в упакованном двоично-десятичном коде. Команда применяется после инструкций ADD или ADDC. Инструкции (команды) ADD или ADDC позволяют суммировать сразу две тетрады, расположенные в одном байте.

Если биты аккумулятора с 0 по 3 содержат число большее 9 (xxxx1010:xxxx1111) или флаг вспомогательного переноса AC содержит '1', то к аккумулятору прибавляется число 6 для того, чтобы получить правильную двоично-десятичную цифру в младшей тетраде.

Если старшие биты аккумулятора (с 4 по 7) содержат число большее 9 (1010xxxx :1111xxxx) или флаг переноса C содержит '1', то к аккумулятору прибавляется число 60h для того, чтобы получить правильную двоично-десятичную цифру в старшей тетраде.

Если в результате операции DA A возникнет перенос, то флаг переноса C будет установлен в 1. Единичный флаг переноса после операции DA A означает, что результат суммирования больше 100 и этим можно воспользоваться для суммирования многоразрядных двоично-десятичных чисел. Команда десятичной коррекции не воздействует на флаг переполнения OV.

Примечание: команда DA A не может преобразовать двоичное число из аккумулятора в двоично-десятичный вид или правильно скорректировать двоично-десятичное вычитание.

Пример: DA A

Количество байт: 1

Количество циклов: 1

Действие команды: (PC) = (PC) + 1

IF [[(A3-0) > 9] or [(AC) = 1]] THEN

(A3-0) = (A3-0) + 6

AND

IF [[(A7-4) > 9] or [(C) = 1]] THEN

(A7-4) = (A7-4) + 6

Машинный код:

1 1 0 1 0 1 0 0


DEC <байт> - производит вычитание 1 из указанного операнда.

Описание: ячейка памяти адрес, которой указан во втором байте команды уменьшается на 1. Если первоначально в ячейке было записано значение 00h, то в нее заносится значение 0FFh. Команда не воздействует на флаги.

Примечание: при выполнении команды DEC над содержимым внешнего порта используется значение из внутреннего регистра, а не данные, присутствующие на выводах микросхемы!

Для команды DEC разрешены следующие режимы адресации байта - источника:

Пример: DEC A

Количество байт: 1

Количество циклов: 1

Действие команды: (PC) = (PC) + 1

(A) = (A) - 1

Машинный код:

0 0 0 1 0 1 0 0

Пример: DEC R3

Количество байт: 1

Количество циклов: 1

Действие команды: (PC) = (PC) + 1

(Rn) = (Rn) - 1, n=0,1,2,3,4,5,6,7

Машинный код:

0 0 0 1 1 r r r

Пример: DEC @R0

Количество байт: 1

Количество циклов: 1

Действие команды: (PC) = (PC) + 1

((Ri)) = ((Ri)) - 1, i=0,1

Машинный код:

0 0 0 1 0 1 1 i

Пример: DEC 30h

Количество байт: 2

Количество циклов: 1

Действие команды: (PC) = (PC) + 2

(direct) = (direct) - 1

Машинный код:

0 0 0 1 0 1 0 1

d d d d d d d d


DIV AB - деление.

Описание: делит 8-битовое беззнаковое целое число из аккумулятора А на 8-битовое целое без знака в регистре В. В аккумулятор A заносится целая часть результата деления, а в регистр В - остаток. Флаги переноса C и переполнения OV будут очищены (записан '0'). Если в регистре B перед операцией деления содержится '0', то в аккумуляторы A и B будут занесены неопределенные значения, а флаг переполнения будет установлен (записана '1').

Количество байт: 1

Количество циклов: 4

Действие команды: (PC) = (PC) + 1

(A) = (A) div (B)

(A) = (A) mod (B)

Машинный код:

0 1 0 0 0 1 0 0


DJNZ <байт>,<смещение> - вычитание 1 из указанной ячейки и переход, если результат не равен 0.

Описание: вычитание 1 из указанной во втором байте команды ячейки памяти и переход к вычисляемому по третьему байту команды адресу, если результат вычитания не равен 0. Если первоначально в ячейке памяти содержится '0', то в результате выполнения операции туда будет записано число '0FFH'. Команда не воздействует на флаги. Новое значение программного счетчика при переходе вычисляется суммирование содержимого программного счетчика со вторым операндом (третьим байтом команды). Перед выполнением суммирования в программный счетчик заносится адрес первого байта следующей команды. Суммирование производится с учетом знака третьего байта команды, представленного в дополнительном коде.

Примечание: при выполнении команды DJNZ над содержимым внешнего порта используется значение из внутреннего регистра, а не данные, присутствующие на выводах микросхемы!

Для команды DJNZ разрешены следующие режимы адресации байта - источника:

Пример: DJNZ R3 ,LABEL1;

Количество байт: 2

Количество циклов: 2

Действие команды: (PC) = (PC) + 2

(Rn) = (Rn) - 1, n=0,1,2,3,4,5,6,7

IF (Rn) < > 0, THEN n=0,1,2,3,4,5,6,7

(PC) = (PC) + rel

Машинный код:

1 1 0 1 1 r r r

R e l A d r e s

Пример: DJNZ 30h,LABEL1;

Количество байт: 3

Количество циклов: 2

Действие команды: (PC) = (PC) + 3

(direct) = (direct) - 1

IF (direct) < > 0 THEN

(PC) = (PC) + rel

Машинный код:

1 1 0 1 0 1 0 1

d d d d d d d d

R e l A d r e s


INC <байт> - производит прибавление 1 к указанному операнду.

Описание: ячейка памяти адрес, которой указан во втором байте команды увеличивается на 1. Если первоначально в ячейке было записано значение 0FFh, то в нее заносится значение 00h. Команда не воздействует на флаги.

Примечание: при выполнении команды INC над содержимым внешнего порта используется значение из внутреннего регистра, а не данные, присутствующие на выводах микросхемы!

Для команды INC разрешены следующие режимы адресации байта - источника:

Пример: INC A

Количество байт: 1

Количество циклов: 1

Действие команды: (PC) = (PC) + 1

(A) = (A) + 1

Машинный код:

0 0 0 0 0 1 0 0

Пример: INC R3

Количество байт: 1

Количество циклов: 1

Действие команды: (PC) = (PC) + 1

(Rn) = (Rn) + 1, n=0,1,2,3,4,5,6,7

Машинный код:

0 0 0 0 1 r r r

Пример: INC @R0

Количество байт: 1

Количество циклов: 1

Действие команды: (PC) = (PC) + 1

((Ri)) = ((Ri)) + 1, i=0,1

Машинный код:

0 0 0 0 0 1 1 i

Пример: INC 30h

Количество байт: 2

Количество циклов: 1

Действие команды: (PC) = (PC) + 2

(direct) = (direct) + 1

Машинный код:

0 0 0 0 0 1 0 1

d d d d d d d d


INC DPTR - увеличивает на 1 содержимое указателя данных.

Описание: увеличивает на 1 содержимое 16-разрядного указателя данных. Если первоначально в младшем байте DPTR (ячейка DPL) было записано значение 0FFh, то в него заносится значение 00h и увеличивается на 1 содержимое старшего байта DPTR (ячейка DPH). Команда не воздействует на флаги.

Количество байт: 1

Количество циклов: 2

Действие команды: (PC) = (PC) + 1

(DPTR) = (DPTR) + 1

Машинный код:

0 1 0 1 0 0 1 1


JB <bit>,<rel8> - переход если бит установлен.

Описание: Если указанный во втором байте команды бит равен единице, то производится переход к вычисляемому по третьему байту команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется суммирование содержимого программного счетчика со вторым операндом (третьим байтом команды). Перед выполнением суммирования в программный счетчик заносится адрес первого байта следующей команды. Суммирование производится с учетом знака третьего байта команды, представленного в дополнительном коде. Команда не воздействует на флаги и не изменяет содержимое проверяемого бита.

Пример: JB 30h, LABEL1

Количество байт: 3

Количество циклов: 2

Действие команды: (PC) = (PC) + 3

IF (bit) = 1

THEN

(PC) = (PC) + rel

Машинный код:

0 0 1 0 0 0 0 0

b b b b b b b b

R e l A d r e s


JBC <bit>,<rel8> - переход, если бит установлен и сброс этого бита.

Описание: Если указанный во втором байте команды бит равен единице, то производится переход к вычисляемому по третьему байту команды адресу. Бит не очищается, если он уже содержит ноль. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется суммированием содержимого программного счетчика со вторым операндом (третьим байтом команды). Перед выполнением суммирования в программный счетчик заносится адрес первого байта следующей команды. Суммирование производится с учетом знака третьего байта команды, представленного в дополнительном коде. Команда не воздействует на флаги.

Пример: JBС 78h, LABEL1

Количество байт: 3

Количество циклов: 2

Действие команды: (PC) = (PC) + 3

IF (bit) = 1 THEN

(bit) = 0

(PC) = (PC) + rel

Машинный код:

0 0 0 1 0 0 0 0

b b b b b b b b

R e l A d r e s


JC <rel8> - переход, если бит переноса установлен.

Описание: Если бит переноса равен единице, то производится переход к вычисляемому по второму байту команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется суммированием содержимого программного счетчика со вторым байтом команды. Перед выполнением суммирования в программный счетчик заносится адрес первого байта следующей команды. Суммирование производится с учетом знака второго байта команды, представленного в дополнительном коде. Команда не воздействует на флаги.

Пример: JС LABEL1

Количество байт: 2

Количество циклов: 2

Действие команды: (PC) = (PC) + 2

IF (С) = 1 THEN

(PC) = (PC) + rel

Машинный код: 0 1 0 0 0 0 0 0

R e l A d r e s


JMP @A+DPTR - косвенный переход.

Описание: складывает 8- битовое содержимое аккумулятора без учета знака с 16- битовым указателем данных (DPTR) и загружает полученный результат в счетчик команд. Это будет адрес следующей исполняемой команды. Команда не воздействует на флаги.

Пример:

MOV      DPTR, #JMP_TBL

JMP       @A+DPTR

JMP_TBL:   AJMP     LABEL0

AJMP     LABEL1

AJMP     LABEL2

AJMP     LABEL3

Количество байт: 1

Количество циклов: 2

Действие команды: (PC) = (A) + (DPTR)

Машинный код:

0 1 1 1 0 0 1 1


JNB <bit>, <rel8> - переход если бит сброшен.

Описание: Если указанный во втором байте команды бит равен нолю, то производится переход к вычисляемому по третьему байту команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется суммирование содержимого программного счетчика со вторым операндом (третьим байтом команды). Перед выполнением суммирования в программный счетчик заносится адрес первого байта следующей команды. Суммирование производится с учетом знака третьего байта команды, представленного в дополнительном коде. Команда не воздействует на флаги и не изменяет содержимое проверяемого бита.

Пример: JNB     P1.3,   LABEL1

Количество байт: 3

Количество циклов: 2

Действие команды: (PC) = (PC) + 3

IF (bit) = 0 THEN

(PC) = (PC) + rel

Машинный код:

0 0 1 1 0 0 0 0

b b b b b b b b

R e l A d r e s


JNC <rel8> - переход, если бит переноса сброшен.

Описание: Если бит переноса равен нолю, то производится переход к вычисляемому по второму байту команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется суммированием содержимого программного счетчика со вторым байтом команды. Перед выполнением суммирования в программный счетчик заносится адрес первого байта следующей команды. Суммирование производится с учетом знака второго байта команды, представленного в дополнительном коде. Команда не воздействует на флаги.

Пример: JNС     LABEL1

Количество байт: 2

Количество циклов: 2

Действие команды: (PC) = (PC) + 2

IF (С) = 0 THEN

(PC) = (PC) + rel

Машинный код:

0 1 0 1 0 0 0 0

R e l A d r e s


JNZ <rel8> - переход, если содержимое аккумулятора не равно нулю.

Описание: Если любой бит аккумулятора равен единице, то производится переход к вычисляемому по второму байту команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется суммированием содержимого программного счетчика со вторым байтом команды. Перед выполнением суммирования в программный счетчик заносится адрес первого байта следующей команды. Суммирование производится с учетом знака второго байта команды, представленного в дополнительном коде. Содержимое аккумулятора не изменяется. Команда не воздействует на флаги.

Пример: JNZ     LABEL1

Количество байт: 2

Количество циклов: 2

Действие команды: (PC) = (PC) + 2

IF (A) <> 0 THEN

(PC) = (PC) + rel

Машинный код:

0 1 1 1 0 0 0 0

R e l A d r e s


JZ <rel8> - переход, если содержимое аккумулятора равно.

Описание: Если все биты аккумулятора равны нулю, то производится переход к вычисляемому по второму байту команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется суммированием содержимого программного счетчика со вторым байтом команды. Перед выполнением суммирования в программный счетчик заносится адрес первого байта следующей команды. Суммирование производится с учетом знака второго байта команды, представленного в дополнительном коде. Содержимое аккумулятора не изменяется. Команда не воздействует на флаги.

Пример: JZ     LABEL1

Количество байт: 2

Количество циклов: 2

Действие команды: (PC) = (PC) + 2

IF (A) = 0 THEN

(PC) = (PC) + rel

Машинный код:

0 1 1 0 0 0 0 0

R e l A d r e s


LCALL <addr 16> - дальний вызов подпрограммы.

Описание: вызывает подпрограмму, размещенную по указанному адресу <addr 16>. Команда увеличивает содержимое счетчика команд на 3 и помещает полученный результат в стек (младший байт первым). После этого содержимое указателя стека SP увеличивается на 2. Затем старший и младший байты счетчика команд PC загружаются вторым и третьим байтами команды LCALL соответственно. Выполнение программы продолжается с команды, расположенной с этого адреса. Команда не воздействует на флаги.

Пример: LCALL Podprogramma

Количество байт: 3

Количество циклов: 2

Действие команды: (PC) = (PC) + 3

(SP) = (SP) + 1

((SP)) = (PC7-0)

(SP) = (SP) + 1

((SP)) = (PC15-8)

(PC15-0) = адрес подпрограммы (метки)

Машинный код:

0 0 0 1 0 0 1 0

а15 a14 a13 a12 a11 a10 a9 a8

a7 a6 a5 a4 a3 a2 a1 a0


LJMP <addr 16> - дальний переход.

Описание: передает управление команде, размещенной по указанному адресу <addr 16> загрузкой старшего и младшего байтов счетчика команд PC вторым и третьим байтами команды LJMP соответственно. Команда позволяет передавать управление в любую точку адресного пространства. Команда не воздействует на флаги.

Пример: LJMP     Label

Количество байт: 3

Количество циклов: 2

Действие команды: (PC) = (PC) + 3

(PC15-0) = адрес метки

Машинный код:

0 0 0 0 0 0 1 0

а15 a14 a13 a12 a11 a10 a9 a8

a7 a6 a5 a4 a3 a2 a1 a0


MOV <байт приемник>,<байт-источник> - переслать байтовую переменную.

Описание: переменная, указанная во втором операнде, копируется в ячейку, указываемую первым операндом. Байт источник не изменяется. Другие регистры и флаги не изменяются.

Команда допускает 15 комбинаций адресации байта- источника и байта приемника:

Пример: MOV A, R3

Количество байт: 1

Количество циклов: 1

Действие команды: (PC) = (PC) + 1

(A) = (Rn) , n=0,1,2,3,4,5,6,7

Машинный код:

1 1 1 0 1 r r r

Пример: MOV A, @R0

Количество байт: 1

Количество циклов: 1

Действие команды: (PC) = (PC) + 1

(A) = ((Ri)) , i=0,1

Машинный код:

1 1 1 0 0 1 1 i

Пример: MOV A, 100

Количество байт: 2

Количество циклов: 1

Действие команды: (PC) = (PC) + 2

(A) = (direct)

Машинный код:

1 1 1 0 0 1 0 1

d d d d d d d d

Пример: MOV A, #38h

Количество байт: 2

Количество циклов: 1

Действие команды: (PC) = (PC) + 2

(A) = (data 8)

Машинный код: 0 1 1 1 0 1 0 0

i i i i i i i i

Пример: MOV R3, A

Количество байт: 1

Количество циклов: 1

Действие команды: (PC) = (PC) + 1

(Rn) = (A) , n=0,1,2,3,4,5,6,7

Машинный код: 1 1 1 1 1 r r r

Пример: MOV R3, 120

Количество байт: 2

Количество циклов: 2

Действие команды: (PC) = (PC) + 2

(Rn) = (direct) , n=0,1,2,3,4,5,6,7

Машинный код:

1 0 1 0 1 r r r

d d d d d d d d

Пример: MOV R3, 120

Количество байт: 2

Количество циклов: 1

Действие команды: (PC) = (PC) + 2

(Rn) = (data 8) , n=0,1,2,3,4,5,6,7

Машинный код:

0 1 1 1 1 r r r

i i i i i i i i

Пример: MOV 20, A

Количество байт: 2

Количество циклов: 1

Действие команды: (PC) = (PC) + 2

(direct) = (A)

Машинный код:

1 1 1 1 0 1 0 1

d d d d d d d d

Пример: MOV 59, R5

Количество байт: 2

Количество циклов: 2

Действие команды: (PC) = (PC) + 2

(direct) = (Rn), n=0,1,2,3,4,5,6,7

Машинный код: 1 0 0 0 1 r r r

d d d d d d d d

Пример: MOV 20, 80

Количество байт: 3

Количество циклов: 2

Действие команды: (PC) = (PC) + 2

(direct) = (direct)

Машинный код: 1 1 1 1 0 1 0 1

d d d d d d d d (источник)

d d d d d d d d (приемник)

Пример: MOV 35, @R0

Количество байт: 2

Количество циклов: 2

Действие команды: (PC) = (PC) + 2

(direct) = ((Ri)), i=0,1

Машинный код:

1 0 0 0 0 1 1 i

d d d d d d d d

Пример: MOV 31, #120

Количество байт: 3

Количество циклов: 2

Действие команды: (PC) = (PC) + 3

(direct) = (data 8)

Машинный код:

0 1 1 1 0 1 0 1

d d d d d d d d

i i i i i i i i

Пример: MOV @R0, A

Количество байт: 1

Количество циклов: 1

Действие команды: (PC) = (PC) + 1

((Ri)) = (A), i=0,1

Машинный код:

1 1 1 1 0 1 1 i

Пример: MOV @R0, 80

Количество байт: 2

Количество циклов: 2

Действие команды: (PC) = (PC) + 2

((Ri)) = (direct), i=0,1

Машинный код:

1 0 1 0 0 1 1 i

d d d d d d d d

Пример: MOV @R0, #80

Количество байт: 2

Количество циклов: 1

Действие команды: (PC) = (PC) + 2

((Ri)) = (direct), i=0,1

Машинный код:

0 1 1 1 0 1 1 i

i i i i i i i i


MOV <бит приемник>,<бит- источник> - переслать битовую переменную.

Описание: переменная, указанная во втором операнде, копируется по адресу, указываемом первым операндом. Бит источник не изменяется. Одним битом обязательно должен быть флаг переноса C, другим битом может быть любой прямо адресуемый бит. Другие регистры и флаги не изменяются.

Пример: MOV C, 87

Количество байт: 2

Количество циклов: 1

Действие команды: (PC) = (PC) + 2

(C) = (bit)

Машинный код:

0 1 0 1 0 0 1 0

b b b b b b b b

Пример: MOV 87, C

Количество байт: 2

Количество циклов: 1

Действие команды: (PC) = (PC) + 2

(bit) = (C)

Машинный код:

1 0 0 1 0 0 1 0

b b b b b b b b


MOV DPTR, #data16 - загрузить указатель данных DPTR 16-битной константой.

Описание: загружает указатель данных DPTR 16- битной константой. Команда не воздействует на флаги.

Пример: MOV DPTR, #Label

Количество байт: 3

Количество циклов: 2

Действие команды: (PC) = (PC) + 3

(DPTR) = (data16)

Машинный код:

1 0 0 1 0 0 0 0

i15 i14 i13 i12 i11 i10 i9 i8

i7 i6 i5 i4 i3 i2 i1 i0


MOVC A, @A+(<R16>) - переслать байт из памяти программ.

Описание: загружает аккумулятор константой из памяти программ. Адрес считываемого байта вычисляется как сумма 8-битного исходного содержимого аккумулятора без знака и содержимого 16-битного регистра. В качестве 16- битового регистра может быть использован либо указатель данных DPTR, либо счетчик команд РС При использовании программного счетчика его содержимое перед суммированием увеличивается на 1. Команда не воздействует на флаги.

Пример: MOVC A, @A+DPTR

Количество байт: 1

Количество циклов: 2

Действие команды: (PC) = (PC) + 1

(A) = ((A)+(DPTR))

Машинный код:

1 0 0 1 0 0 1 1

Пример: MOVC A, @A+PC

Количество байт: 1

Количество циклов: 2

Действие команды: (PC) = (PC) + 1

(A) = ((A)+(PC))

Машинный код:

1 0 0 0 0 0 1 1


MOVX <байт приемник>,<байт источник> - переслать байтовую переменную во внешнюю память (из внешней памяти)

Описание: пересылает данные между аккумулятором и байтом внешней памяти. Имеется два типа команд, которые отличаются тем, что обеспечивают 8-битный или 16-битный доступ к внешней памяти данных.

В первом случае регистр R0 или R1 текущего банка регистров обеспечивает 8- битный адрес, который мультиплексируется с данными на выводах порта P0.

Во втором случае, при выполнении команды 16- битный адрес, берется из указателя данных DPTR. При этом через порт P2 выводятся старшие 8 бит адреса, а через порт P0 младшие 8 бит адреса, мультиплексируемые с байтом данных. Команда не воздействует на флаги.

Пример: MOVX A, @Ri

Количество байт: 1

Количество циклов: 2

Действие команды: (PC) = (PC) + 1

(A) = ((Ri)), i=0,1

Машинный код:

1 1 1 0 0 0 1 i

Пример: MOVX A, @DPTR

Количество байт: 1

Количество циклов: 2

Действие команды: (PC) = (PC) + 1

(A) = ((DPTR))

Машинный код:

1 1 1 0 0 0 0 0

Пример: MOVX @Ri, A

Количество байт: 1

Количество циклов: 2

Действие команды: (PC) = (PC) + 1

((Ri)) = (A), i=0,1

Машинный код:

1 1 1 1 0 0 1 i

Пример: MOVX @DPTR, A

Количество байт: 1

Количество циклов: 2

Действие команды: (PC) = (PC) + 1

((DPTR)) = (A)

Машинный код:

1 1 1 1 0 0 0 0


MUL AB - умножение.

Описание: перемножает целые восьмибитовые беззнаковые числа, хранящиеся в аккумуляторе и регистре В. Старший байт 16-битового произведения помещается в регистр В, а младший байт - в регистр А.

Пример: MUL AB

Количество байт: 1

Количество циклов: 4

Действие команды: (PC) = (PC) + 1

(A) = Low((A)*(B))

(B) = High(A)*(B)

Машинный код:

1 0 1 0 0 1 0 0


NOP - нет операции

Описание: Кроме программного счетчика не изменяет ни одного регистра, на флаги не воздействует.

Пример: NOP

Количество байт: 1

Количество циклов: 1

Действие команды: (PC) = (PC) + 1

Машинный код:

0 0 0 0 0 0 0 0


ORL <байт приемник>,<байт источник> - "логическое ИЛИ" для байтовых переменных

Описание: выполняет операцию побитового "логического ИЛИ" между указанными переменными. Результат сохраняется в приемнике. Команда не воздействует на флаги.

Для команды ORL с аккумулятором в качестве байта назначения разрешены следующие режимы адресации байта - источника:

Пример: ORL A, R3

Количество байт: 1

Количество циклов: 1

Действие команды: (PC) = (PC) + 1

(A) = (A) V (Rn) , n=0,1,2,3,4,5,6,7

Машинный код:

0 1 0 0 1 r r r

Пример: ORL A, @R0

Количество байт: 1

Количество циклов: 1

Действие команды: (PC) = (PC) + 1

(A) = (A) V ((Ri)), i=0,1

Машинный код:

0 1 0 0 0 1 1 i

Пример: ORL A, 30h

Количество байт: 2

Количество циклов: 1

Действие команды: (PC) = (PC) + 2

(A) = (A) V (direct)

Машинный код:

0 1 0 0 0 1 0 1

d d d d d d d d

Пример: ORL A, #100

Количество байт: 2

Количество циклов: 1

Действие команды: (PC) = (PC) + 2

(A) = (A) V (date 8)

Машинный код:

0 1 0 0 0 1 0 0

i i i i i i i i

Для команды ORL с произвольным адресом ячейки внутренней памяти данных в качестве байта назначения разрешены следующие режимы адресации байта - источника:

Пример: ORL 30h,A

Количество байт: 2

Количество циклов: 1

Действие команды: (PC) = (PC) + 2

(direct) = (A) V (direct)

Машинный код: 0 1 0 0 0 0 1 0

d d d d d d d d

Пример: ORL direct, #100

Количество байт: 3

Количество циклов: 2

Действие команды: (PC) = (PC) + 3

(direct) = (A) V (date 8)

Машинный код:

0 1 0 0 0 0 1 1

d d d d d d d d

i i i i i i i i

Примечание: при выполнении команды ORL над содержимым внешнего порта используется значение из внутреннего регистра, а не данные, присутствующие на выводах микросхемы!


ORL C,<бит источника> - логическое ИЛИ битовых переменных.

Описание: Если бит источника равен 1, то происходит запись во флаг переноса единицы, в противном случае флаг переноса не изменяет текущего значения. На остальные флаги команда не воздействует.

Пример: ORL С, 20h

Количество байт: 2

Количество циклов: 2

Действие команды: (PC) = (PC) + 2

(C) = (C) V (bit)

Машинный код:

0 1 1 1 0 0 1 0

b b b b b b b b

Знак '/' перед операндом в языке ассемблера указывает на то, что в качестве значения используется логическое отрицание адресуемого бита, при этом сам бит источника не изменяется.

Пример: ORL С, /20h

Количество байт: 2

Количество циклов: 2

Действие команды: (PC) = (PC) + 2

(C) = (C) V not(bit)

Машинный код:

1 0 1 0 0 0 0 0

b b b b b b b b


РОР <direct> - чтение из стека.

Описание: Считывает содержимое ячейки внутренней памяти, на которую указывает регистр указателя стека, после этого содержимое указателя стека уменьшается на 1. Считанная величина помещается во внутреннюю память по адресу, указанному во втором байте команды.

Пример: POP 30h

Количество байт: 2

Количество циклов: 2

Действие команды: (PC) = (PC) + 2

(direct) = ((SP))

(SP) = (SP) - 1

Машинный код:

1 1 0 1 0 0 0 0

d d d d d d d d


PUSH <direct> - запись в стек.

Описание: Содержимое указателя стека увеличивается на 1. Содержимое ячейки внутренней памяти по адресу, указанному во втором байте команды копируется в ячейку внутренней памяти, на которую указывает регистр указателя стека.

Пример: PUSH 30h

Количество байт: 2

Количество циклов: 2

Действие команды: (PC) = (PC) + 2

((SP)) = (direct)

(SP) = (SP) + 1

Машинный код:

1 1 0 0 0 0 0 0

d d d d d d d d


RET - возврат из подпрограммы.

Описание: последовательно выгружает старший и младший байты счетчика команд из стека, уменьшая содержимое указателя стека на 2. Выполнение программы продолжается с нового, только что загруженного в счетчик команд адреса. Команда не воздействует на флаги.

Пример: RET

Количество байт: 1

Количество циклов: 2

Действие команды: (PC) = (PC) + 2

(PC15-8) = ((SP))

(SP) = (SP) - 1

(PC7-0) = ((SP))

SP) = (SP) - 1

Машинный код: 0 0 1 0 0 0 1 0=


RETI - возврат из подпрограммы обслуживания прерывания.

Описание: последовательно выгружает старший и младший байты счетчика команд из стека, уменьшая содержимое указателя стека на 2. Кроме того, команда восстанавливает состояние логики прерываний, разрешая обработку следующего прерывания того же уровня приоритета. Выполнение программы продолжается с того же адреса, что был в программном счетчике (PC) до начала обработки прерывания (следующий за командой, во время выполнения которой был обнаружен запрос на прерывание). Команда не воздействует на флаги и не восстанавливает состояние PSW, бывшее до обработки прерывания. Если к этому моменту обнаруживается новый запрос на прерывание, то до нового вызова подпрограммы обслуживания прерывания выполняется одна команда из основной программы.

Пример: RETI

Количество байт: 1

Количество циклов: 2

Действие команды: (PC) = (PC) + 2

(PC15-8) = ((SP))

(SP) = (SP) - 1

(PC7-0) = ((SP))

(SP) = (SP) - 1

Машинный код:

0 0 1 1 0 0 1 0


RL A - сдвиг содержимого аккумулятора влево.

Описание: сдвигает восемь бит аккумулятора на один бит влево, бит 7 засылается на место бита 0. Команда не воздействует на флаги.

Пример: RL A

Количество байт: 1

Количество циклов: 1

Действие команды: (An+1) = (An) n=0..6

(A0) = (A7)

Машинный код:

0 0 1 0 0 0 1 1


RLC A - сдвиг содержимого аккумулятора влево через флаг переноса.

Описание: сдвигает восемь бит аккумулятора и флаг переноса на один бит влево. Содержимое флага переноса помещается на место бита 0 аккумулятора, а содержимое бита 7 аккумулятора переписывается во флаг переноса. На остальные флаги команда не воздействует.

Пример: RLC A

Количество байт: 1

Количество циклов: 1

Действие команды: (An+1) = (An) n=0..6

(A0) = (C)

(C) = (A7)

Машинный код:

0 0 1 1 0 0 1 1


RR A - сдвиг содержимого аккумулятора вправо.

Описание: сдвигает восемь бит аккумулятора на один бит вправо, бит 0 засылается на место бита 7. Команда не воздействует на флаги.

Пример: RR A

Количество байт: 1

Количество циклов: 1

Действие команды: (An) = (An+1) n=0..6

(A7) = (A0)

Машинный код: 0 0 0 0 0 0 1 1


RRC A - сдвиг содержимого аккумулятора через флаг переноса.

Описание: сдвигает восемь бит аккумулятора и флаг переноса на один бит вправо. Содержимое флага переноса помещается на место бита 7 аккумулятора, а содержимое бита 0 аккумулятора переписывается во флаг переноса. На остальные флаги команда не воздействует.

Пример: RRC A

Количество байт: 1

Количество циклов: 1

Действие команды: (An) = (An+1) n=0..6

(A7) = (C)

(C) = (A0)

Машинный код:

0 0 0 1 0 0 1 1


SETB <bit> - установить бит.

Описание: устанавливает указанный бит в 1. Команда может воздействовать на флаг переноса или любой другой прямо адресуемый бит. На остальные флаги команда не воздействует.

Пример: SETB C

Количество байт: 1

Количество циклов: 1

Действие команды: (PC) = (PC) + 1

(C) = 1

Машинный код:

1 1 0 1 0 0 1 1

Пример: SETB 27

Количество байт: 2

Количество циклов: 1

Действие команды: (PC) = (PC) + 2

(bit) = 1

Машинный код:

1 1 0 1 0 0 1 0

b b b b b b b b


SJMP <rel8> - короткий переход

Описание: команда выполняет безусловный относительный короткий переход по указанному адресу. Адрес назначения вычисляется суммированием второго байта команды и программного счетчика предварительно увеличенного на два. Т.е. переход может осуществляться на метку, стоящую на 128 байт выше команды, следующей за SJMP и 127 байт ниже.

Пример: SJMP Label

Количество байт: 2

Количество циклов: 2

Действие команды: (PC) = + 2

(PC) = (PC) + rel8

Машинный код:

1 0 0 0 0 0 0 0

R e l A d r e s


SUBB A,<байт источник> - вычитание с заемом.

Описание: команда вычитает указанную переменную вместе с флагом переноса из содержимого аккумулятора, результат помещается в аккумулятор. SUBB устанавливает флаг переноса C, если требуется заем для 7 бита, и обнуляет его в противном случае. (Если флаг переноса C перед выполнением команды содержал 1, то перенос вычитается из аккумулятора, содержащего операнд источник). Флаг переноса C устанавливается, если требуется заем для 3 бита, и очищается в противном случае. Флаг переполнения OV устанавливается, если требуется заем для 7 бита, но не требуется для 6 или нужен заем для 6 бита, но не требуется для 7. Операнд источника допускает четыре режима адресации:

Пример: SUBB A, R7

Количество байт: 1

Количество циклов: 1

Действие команды: (PC)= (PC) + 1

(A) = (A) - (С) - (Rn) , n=0,1,2,3,4,5,6,7

Машинный код:

1 0 0 1 1 r r r

Пример: SUBB A, @R0

Количество байт: 1

Количество циклов: 1

Действие команды: (PC) = (PC) + 1

(A) = (A) - (С) - ((Ri)) , i=0,1

Машинный код: 1 0 0 1 0 1 1 i

Пример: SUBB A, 30h

Количество байт: 2

Количество циклов: 1

Действие команды: (PC) = (PC) + 2

(A) = (A) - (C) - (direct)

Машинный код:

1 0 0 1 0 1 0 1

d d d d d d d d

Пример: SUBB A, #100

Количество байт: 2

Количество циклов: 1

Действие команды: (PC) = (PC) + 2

(A) = (A) - (C) - (date 8)

Машинный код:

1 0 0 1 0 1 0 0

i i i i i i i i


SWAP A - обмен тетрадами внутри аккумулятора.

Описание: команда осуществляет обмен между младшей (биты 0..3) и старшей (биты 4..7) тетрадами аккумулятора. (Тетрада это четырехбитная переменная). Команду можно интерпретировать как циклический сдвиг на четыре бита. Команда не воздействует на флаги.

Пример: SWAP A

Количество байт: 1

Количество циклов: 1

Действие команды: (PC) = (PC) + 1

(A3..A0) <=> (A7..A4)

Машинный код:

1 1 0 0 0 1 0 0


XCH A,<байт> - обмен содержимого аккумулятора с переменной байтом.

Описание: команда загружает аккумулятор содержимым указанной переменной, в то же самое время первоначальное содержимое аккумулятора заносится по указанному адресу. Команда не воздействует на флаги.

Допускается три режима адресации:

Пример: XCH A, R7

Количество байт: 1

Количество циклов: 1

Действие команды: (PC) = (PC) + 1

(A) <=> (Rn) , n=0,1,2,3,4,5,6,7

Машинный код:

1 1 0 0 1 r r r

Пример: XCH A, 30h

Количество байт: 2

Количество циклов: 1

Действие команды: (PC) = (PC) + 2

(A) <=> (direct)

Машинный код:

1 1 0 0 0 1 0 1

d d d d d d d d

Пример: XCH A, @R0

Количество байт: 1

Количество циклов: 1

Действие команды: (PC)= (PC) + 1

(A) <=> ((Ri)) , i=0,1

Машинный код:

1 1 0 0 0 1 1 i


XCDH A, @Ri - обмен цифры.

Описание: команда осуществляет обмен между младшей (биты 0..3) тетрадой (тетрада это четырехбитная переменная) аккумулятора, где обычно хранится двоично-десятичная цифра с тетрадой ячейки внутреннего ОЗУ. Используется косвенно регистровая адресация. Старшие тетрады (биты 4..7) обоих операндов не изменяются. Команда не воздействует на флаги.

Пример: XCH A, @R0

Количество байт: 1

Количество циклов: 1

Действие команды: (PC) = (PC) + 1

(A3..A0) <=> ((Ri3..Ri0)) , i=0,1

Машинный код: 1 1 0 1 0 1 1 i


XRL <байт приемник>,<байт источник> - исключающее ИЛИ для переменных байтов.

Описание: выполняет операцию побитового "исключающее логического ИЛИ" между указанными переменными. Результат сохраняется в приемнике. Команда не воздействует на флаги.

Для команды XRL с аккумулятором в качестве байта назначения разрешены следующие режимы адресации байта - источника:

Пример: XRL A, R3

Количество байт: 1

Количество циклов: 1

Действие команды: (PC) = (PC) + 1

(A) = (A) xor (Rn) , n=0,1,2,3,4,5,6,7

Машинный код:

0 1 1 0 1 r r r

Пример: XRL A, @R0

Количество байт: 1

Количество циклов: 1

Действие команды: (PC) = (PC) + 1

(A) = (A) xor ((Ri)) , i=0,1

Машинный код: 0 1 1 0 0 1 1 i

Пример: XRL A, 30h

Количество байт: 2

Количество циклов: 1

Действие команды: (PC) = (PC) + 2

(A) = (A) xor (direct)

Машинный код:

0 1 1 0 0 1 0 1

d d d d d d d d

Пример: XRL A, #100

Количество байт: 2

Количество циклов: 1

Действие команды: (PC)= (PC) + 2

(A) = (A) xor (date 8)

Машинный код:

0 1 1 0 0 1 0 0

i i i i i i i i

Для команды XRL с произвольным адресом ячейки внутренней памяти данных в качестве байта назначения разрешены следующие режимы адресации байта - источника:

Пример: XRL 30h,A

Количество байт: 2

Количество циклов: 1

Действие команды: (PC) = (PC) + 2

(direct) = (A) xor (direct)

Машинный код:

0 1 1 0 0 0 1 0

d d d d d d d d

Пример: XRL direct, #100

Количество байт: 3

Количество циклов: 2

Действие команды: (PC) = (PC) + 3

(direct) = (A) xor (date 8)

Машинный код:

0 1 1 0 0 0 1 1

d d d d d d d d

i i i i i i i i

Примечание: при выполнении команды XRL над содержимым внешнего порта используется значение из внутреннего регистра, а не данные, присутствующие на выводах микросхемы!


[Назад] [Содержание]