Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




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

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

Количество байт: 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

Пример:

адрес команда исходный текст

1000 7111 ACALL 311h

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

до команды после команды

PC=1000 PC=0311

*SP=35 *SP=1002

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

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

Для команды сложения разрешены следующие режимы адресации:

1) Первый операнд - неявная, второй операнд - регистровая;

Количество байт: 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

Пример:

адрес команда исходный текст

0000 2F ADD A, R7

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

до команды после команды

PC=0000 PC=0001

A=35 A=7A

R7=46 R7=46

C=0 C=0

2) Первый операнд - неявная, второй операнд - косвенно-регистровая;

Количество байт: 1
Количество циклов: 1
Действие команды
:
(PC) = (PC) + 1
(A) = (A) + ((Ri)), i=0,1
Машинный код:

0 0 1 0 0 1 1 i

Пример:

адрес команда исходный текст

0010 26 ADD A, @R0

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

до команды после команды

PC=0010 PC=0011

R0=15 R0=15

A=95 A=16

*15=81 *15=81

C=0 C=1

3) Первый операнд - неявная, второй операнд - прямая;

Количество байт: 2
Количество циклов: 1
Действие команды
:
(PC) = (PC) + 2
(A) = (A) + (direct)
Машинный код:

0 0 1 0 0 1 0 1

d d d d d d d d

Пример:

адрес команда исходный текст

0012 2564 ADD A, 100

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

до команды после команды

PC=0012 PC=0014

A=95 A=96

*100=01 *100=81

C=1 C=0

4) Первый операнд - неявная, второй операнд - непосредственная.

Пример: 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

Пример:

адрес команда исходный текст

0014 2564 ADD A, #38h

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

до команды после команды

PC=0014 PC=0016

A=95 A=CD

C=1 C=0

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




Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 266; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.134 сек.