Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Основные методы проектирования микропроцессорных устройств

Таблица 2

Мнемоника Флаги
C AC F0 F1 TF BS DBF
ADD, ADDC + + - - - - -
DA + + - - - - -
CLR C   - - - - - -
CPL C + - - - - - -
CLR F0 - -   - - - -
CPL F0 - - + - - - -
CLR F1 - - -   - - -
CPL F1 - - - + - - -
JTF - - - -   - -
RRC + - - - - - -
RLC + - - - - - -
MOV A, PSW + + + - - + -
RETR + + + - - + -
SEL MB0, SEL MB1 - - - - - - +
SEL RB0, SEL RB1 - - - - - + -

 

Арифметические команды

В наборе команд микроконтроллера имеются следующие арифметические операции:

· сложение ADD,

· сложение с учетом флага переноса ADDC,

· инкрементирование (увеличение на 1) INC,

· декрементирование (уменьшение на 1) DEC,

· десятичная коррекция DA,

Действия производятся над целыми числами без знака. Команды сложения ADD позволяют сформировать перенос в следующий разряд. Команды сложения с учётом знака переноса позволяют выполнять многобайтное сложение. Вычитание может быть реализовано переводом одного из операндов в дополнительный код с последующим выполнением операции суммирования. Более сложные операции такие как умножение или деление могут быть реализованы только программным способом.

 

Логические команды.

Система команд микроконтроллера позволяет реализовать логические операции:

· И (ANL ANLD),

· ИЛИ (ORL ORLD),

· ИСКЛЮЧАЮЩЕЕ ИЛИ (XRL).

· сброс и инвертирование всех восьми разрядов аккумулятора (CPL A; CLR A);

· сброс и инвертирование флагов микроконтроллера (CLR C; CLR F0; CLR F1; CPL C; CPL F0; CPL F1);

· циклический сдвиг влево и вправо с учетом переноса и без (RR A; RRC A; RL A; RLC A);

· обмен местами старшей и младшей тетрад внутри аккумулятора (SWAP A).

Команды пересылки данных.

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

· обмен данными во внутреннем ОЗУ: MOV, XCH

· обмен данными из внешней памяти данных: MOVX

· копирование данных из памяти программ: MOVP

· обмен данными параллельных портов IN, OUTL, MOVD

Примеры использования команд пересылки данных:

Любая ячейка 256- байтового блока внутреннего ОЗУ данных может быть выбрана с использованием косвенно-регистровой адресации через регистры указатели R0 и R1 (выбранного банка рабочих регистров):

MOV A, @R0;Скопировать число из ячейки памяти с адресом, хранящемся в R0, в аккумулятор MOV @R1, A;Скопировать число из аккумулятора, в ячейку памяти с адресом, хранящемся в R1

Таблицы символов (кодов), записанные в ПЗУ программы могут быть скопированы в аккумулятор с помощью команд передачи данных с косвенной адресацией:

MOVP A, @A;Скопировать символ из текущей страницы памяти программ в аккумулятор MOVP3 A, @A;Скопировать символ из третьей страницы памяти программ в аккумулятор

Ячейка адресного пространства 256 байт внешнего ОЗУ также может быть выбрана с использованием косвенно-регистровой адресации через регистры R0 или R1:

MOVX A, @R0;Скопировать число из внешней ячейки памяти с адресом,;хранящемся в R0, в аккумулятор MOVX @R1, A;Скопировать число из аккумулятора, в ячейку памяти с адресом, хранящемся в R1

Содержимое аккумулятора может быть обменено с содержимым рабочих регистров выбранного банка:

XCH A, R0.

Для работы с параллельными портами используется отдельные команды пересылки данных IN и OUTL:

IN A, P0;Скопировать число из порта P0, в аккумулятор OUTL P1, A;Скопировать число из аккумулятора, в порт P1

Команды ветвления и передачи управления.

Команды ветвления позволяют реализовывать условные операторы и операторы циклов. В микроконтроллерах семейства MCS-48 доступны следующие команды:

· безусловный переход: JMP

· Вызов и возврат из подпрограммы: CALL, RET, RETR

· проверка содержимого аккумулятора: JZ, JNZ, JMPP, JB0... JB7

· проверка флага переноса С: JC, JNC

· проверка сигнала на ножке T0: JT0, JNT0

· проверка сигнала на ножке T1: JT1, JNT1

· проверка сигнала на ножке INT: JNI

· Проверка состояния флагов пользователя JF0, JF1

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

JMP Metka;Переход к команде, расположенной по адресу обозначенному меткой ‘Metka’ CALL Podprogramma;Вызов подпрограммы по адресу, обозначенному меткой ‘Podprogramma’

В системе команд имеются команды условных переходов. Эти команды позволяют осуществлять переход в пределах страницы 256 байт.

Примеры использования команд условного перехода:

JB5 TstNxtUsl;Если в 6 бите аккумулятора нулевое значение,CALL Podprogramma;то вызвать подпрограмму, обозначенную меткой ‘Podprogramma’JNZ A, #5, TstNxtUsl;Если в аккумуляторе содержится нулевое значение,CALL Podprogramma;то вызвать подпрограмму, обозначенную меткой ‘Podprogramma’

Команды проверки содержимого аккумулятора и флага переноса C могут быть использованы для реализации проверки различных условий:

MOV A, 34;Если в переменной, хранящейся в ячейке внутренней памяти 34 JB7 TstNxtUsl;число меньше нуля,CALL Podprogramma;то вызвать подпрограмму, обозначенную меткой ‘Podprogramma’;---------------------------------------------------------------------------------MOV A, 34;Если в переменной, ADD A, -5;хранящейся в ячейке внутренней памяти 34JZ TstNxtUsl;занесено число 5,CALL Podpr5;то вызвать подпрограмму, обозначенную меткой ‘Podpr5’;---------------------------------------------------------------------------------MOV A, 34;Если в переменной, ADD A, -5;хранящейся в ячейке внутренней памяти 34JNС TstNxtUsl;занесено число, меньшее 5,CALL PodprLT5;то вызвать подпрограмму, обозначенную меткой ‘PodprLT5’;---------------------------------------------------------------------------------MOV A, 34;Если в переменной, ADD A, -6;хранящейся в ячейке внутренней памяти 34JC TstNxtUsl;занесено число, большее 5,CALL PodprGT5;то вызвать подпрограмму, обозначенную меткой ‘PodprGT5’;---------------------------------------------------------------------------------MOV A, 34;Если в переменной, ADD A, -5;хранящейся в ячейке внутренней памяти 34JC TstNxtUsl;занесено число, большее или равное 5,CALL PodprGE5;то вызвать подпрограмму, обозначенную меткой ‘PodprGE5’;---------------------------------------------------------------------------------MOV A, 34;Если в переменной, ADD A, -6;хранящейся в ячейке внутренней памяти 34 JNC TstNxtUsl;занесено число, меньшее или равное 5,CALL PodprLE5;то вызвать подпрограмму, обозначенную меткой ‘PodprLE5’

Косвенный переход JMPP @A в системе команд микроконтроллера обеспечивает ветвление программы по содержимому аккумулятора А. Это позволяет реализовывать операцию перехода по заданному коду, эквивалентное оператору case в языке программирования pascal, но намного быстрее (за два машинных цикла). Пример реализации команды выбора варианта:

ORG 256;Разместить команды переходов по границе страницыJMP Case0;Перейти к выполнению кода по числу 0 JMP Case1;Перейти к выполнению кода по числу 1 JMP EndCase;Это число в ячейке 33 в список разрешённых не входит JMP EndCase;Это число в ячейке 33 в список разрешённых не входит JMP Case4;Перейти к выполнению кода по числу 4 BeginOpCase:;Сюда нужно перейти командой JMP BeginOpCase MOV A, 33;В этой ячейке хранится переменная, по которой необходимо осуществить переход на обслуживающую программу CLR C;Осуществить арифметический сдвиг аккумулятора вправо RLC A;(умножить на 2) т.к. команды переходов занимают два байта JMPP @A;Перейти к выполнению заданного в 25 ячейке кодаEndCase:

Команды управления режимами работы микроконтроллера.

Команды управления микроконтроллером позволяют:

· запускать и останавливать таймер/счётчик (STRT CNT STRT T, STOP TCNT),

· разрешать и запрещать прерывания (EN I, EN TCNTI, DIS I, DIS TCNTI),

· выбирать рабочий банк регистров (SEL RB0, SEL RB1),

· выбирать страницы памяти программ (SEL MB0, SEL MB1),

· разрешать выдачу синхросигнала на ножке T0 (ENT0 CLC).

Способы адресации операндов.

Наибольшее количество видов адресации используется в командах пересылки данных. При определении способа адресации операндов в команде необходимо учитывать, что адресация для каждого операнда команды своя. В общем случае адресация определяется для каждого операнда отдельно.

Неявная адресация При неявной адресации регистр источник или регистр приёмник подразумевается в самом коде операции. Например:

RR A;сдвиг содержимого аккумулятора вправо DA A;десятичная коррекция аккумулятора

Регистровая адресация используется для обращения к восьми рабочим регистрам выбранного банка рабочих регистров. Номер регистра записывается в трех младших битах команды. Например:

MOV A, R7;Во втором операнде использована регистровая адресация (в первом операнде неявная адресация)

Косвенно-регистровая адресация используется для обращения к ячейкам внутреннего ОЗУ данных. В качестве регистров-указателей используются регистры R0, R1 выбранного банка регистров. Примеры использования косвенно-регистровой адресации:

MOV A, @R0;Косвенно-регистровая адресация использована во втором операнде MOV @R1, A;Косвенно-регистровая адресация использована в первом операнде

Косвенно - регистровая адресация используется также для обращения к внешней памяти данных. В этом случае с помощью регистров- указателей R0 и R1 (рабочего банка рабочих регистров) выбирается ячейка из блока 256 байт внешней памяти данных. Номер блока предварительно задается содержимым порта Р2. Например:

MOVX A, @R0;Косвенно-регистровая адресация использована во втором операнде MOVX @R1, A;Косвенно-регистровая адресация использована в первом операнде

Косвенно- регистровая адресация по содержимому аккумулятора А упрощает просмотр таблиц, записанных в памяти программ. Любой байт из таблицы может быть выбран по адресу, определяемому содержимым аккумулятора А, например:

MOVP3 A, @A

Непосредственная адресация позволяет выбрать из адресного пространства памяти программ константы, явно указанные в команде, например:

MOV A, #11h;помещает в аккумулятор число 11h MOV R5, #48;помещает в регистр R5 число 48

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

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 1 1 0 1 r r r

· косвенно-регистровая;

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

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

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

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

(PC) = (PC) + 1

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

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

0 1 1 0 0 0 0 i

· непосредственная.

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

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

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

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

(PC) = (PC) + 2

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

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

0 0 0 0 0 0 1 1i 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 1 1 1 1 r r r

· косвенно-регистровая;

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

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

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

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

(PC) = (PC) + 1

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

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

0 1 1 1 0 0 0 i

· непосредственная.

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

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

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

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

(PC) = (PC) + 2

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

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

0 0 0 1 0 0 1 1i i i i i i i i

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 0 0 i

· непосредственная.

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

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

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

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

(PC) = (PC) + 2

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

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

0 1 0 1 0 0 1 1i i i i i i i i

Для команды ANL возможна работа с портами и шиной данный в качестве приёмника информации. При этом источник информации использует непосредственную адресацию:

Пример: ANL BUS, #00010010B

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

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

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

(PC) = (PC) + 2

(BUS) = (BUS) & (direct)

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

1 0 0 1 1 0 0 0d d d d d d d d

Пример: P1, #10000000b

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

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

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

(PC) = (PC) + 2

(Pp) = (Pp) & (date 8), pp=1,2

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

1 0 0 1 1 0 p pd d d d d d d d

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

ANLD P, A - "логическое И" порта внешней микросхемы расширителя портов и аккумулятора A.

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

Пример: ANLD P6, A

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

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

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

(PC) = (PC) + 2

(Pp) = (Pp) & (A), pp=4,5,6,7

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

1 0 0 1 1 1 p p

CALL <addr 11> - вызов подпрограммы.

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

Пример: CALL 311h

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

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

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

(PC) = (PC) + 2

((SP)) = (PC), (PSW4-7)

(SP) = (SP) + 1

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

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

a10 a9 a8 1 0 1 0 0a7 a6 a5 a4 a3 a2 a1 a0

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

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

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

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

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

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

(PC) = (PC) + 1

(A) = 0

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

0 0 1 0 0 1 1 1

CLR C - сбрасывает флаг переноса в нулевое значение.

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

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

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

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

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

(PC) = (PC) + 1

(C) = 0

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

1 0 0 1 0 1 1 1

CLR F0 - сбрасывает флаг пользователя F0 в нулевое значение.

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

Пример: CLR F0;Записывает во флаг пользователя F0 '0'

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

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

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

(PC) = (PC) + 1

(F0) = 0

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

1 0 0 0 0 1 0 1

CLR F1 - сбрасывает флаг пользователя F1 в нулевое значение.

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

Пример: CLR F1;Записывает во флаг пользователя F0 '0'

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

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

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

(PC) = (PC) + 1

(F1) = 0

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

1 0 1 0 0 1 0 1

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

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

Пример: CPL A

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

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

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

(PC) = (PC) + 1

(A) = not(A)

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

0 0 1 1 0 1 1 1

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

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

Пример: CPL C

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

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

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

(PC) = (PC) + 1

(C) = not(C)

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

1 0 1 0 0 1 1 1

CPL F0 - инвертируется флаг пользователя F0 в нулевое значение.

Описание: флаг пользователя 'F0' инвертируется, т.е. если флаг пользователя 'F0' содержит '1', то в него записывается '0' и наоборот. Команда использует неявную адресацию:

Пример: CLR F0;Инвертирует флаг пользователя F0

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

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

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

(PC) = (PC) + 1

(F0) = 0

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

1 0 0 0 0 1 0 1

CPL F1 - инвертируется флаг пользователя F1 в нулевое значение.

Описание: флаг пользователя 'F1' инвертируется, т.е. если флаг пользователя 'F1' содержит '1', то в него записывается '0' и наоборот. Команда использует неявную адресацию:

Пример: CLR F1;Инвертирует флаг пользователя F0

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

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

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

(PC) = (PC) + 1

(F1) = 0

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

1 0 1 0 0 1 0 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

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

0 1 0 1 0 1 1 1

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

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

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

· неявная.

Пример: DEC A

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

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

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

(PC) = (PC) + 1

(A) = (A) - 1

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

0 0 0 0 0 1 1 1

· регистровая;

Пример: DEC R3

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

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

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

(PC) = (PC) + 1

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

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

1 1 0 0 1 r r r

DIS I - запрет внешнего прерывания.

Описание: запрещает прерывание выполнения программы по сигналу низкого уровня на внешней ножке INT.

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

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

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

(PC) = (PC) + 1

Запретить прерывания от внешней ножки INT

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

0 0 0 1 0 1 0 1

DIS TCNTI - запрет прерывания от таймера/счётчика.

Описание: запрещает прерывание выполнения программы по переполнению таймера/счётчика.

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

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

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

(PC) = (PC) + 1

Запретить прерывания по переполнению таймера/счётчика

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

0 0 1 1 0 1 0 1

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

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

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

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

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

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

(PC) = (PC) + 2

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

IF (Rn) < > 0, THEN (PC0..7) = Address

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

1 1 1 0 1 r r rA d d r e s s

EN I - разрешение внешнего прерывания.

Описание: разрешает прерывание выполнения программы по сигналу низкого уровня на внешней ножке INT.

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

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

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

(PC) = (PC) + 1

Разрешить прерывания от внешней ножки INT

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

0 0 0 0 0 1 0 1

EN TCNTI - разрешение прерываний от таймера/счётчика.

Описание: разрешает прерывание выполнения программы по переполнению таймера/счётчика.

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

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

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

(PC) = (PC) + 1

Разрешить прерывания от таймера/счётчика

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

0 0 1 0 0 1 0 1

ENT0 CLK - разрешение выдачи синхросигнала на вывод T0.

Описание: разрешает выдачу синхросигнала на вывод микросхемы T0.

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

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

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

(PC) = (PC) + 1

Разрешить выдачу синхросигнала на вывод T0

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

0 1 1 1 0 1 0 1

IN Pp - пересылка данных из порта в аккумулятор.

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

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

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

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

(PC) = (PC) + 1

(A) = (Pp), p=1,2

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

0 0 0 0 1 0 p p

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

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

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

· неявная.

Пример: INC A

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

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

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

(PC) = (PC) + 1

(A) = (A) + 1

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

0 0 0 1 0 1 1 1

· регистровая;

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

· косвенно-регистровая;

Пример: INC @R0

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

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

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

(PC) = (PC) + 1

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

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

0 0 0 1 0 0 0 i

JB0 <адрес> - переход если нулевой бит аккумулятора установлен.

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

Пример: JB0 LABEL1

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

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

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

(PC) = (PC) + 2

IF (ACC.0) = 1 THEN (PC0..7) = Address

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

0 0 0 1 0 0 1 0A d d r e s s

JB1 <адрес> - переход если первый бит аккумулятора установлен.

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

Пример: JB1 LABEL1

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

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

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

(PC) = (PC) + 2

IF (ACC.1) = 1 THEN (PC0..7) = Address

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

0 0 1 1 0 0 1 0A d d r e s s

JB2 <адрес> - переход если второй бит аккумулятора установлен.

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

Пример: JB2 LABEL1

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

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

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

(PC) = (PC) + 2

IF (ACC.2) = 1 THEN (PC0..7) = Address

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

0 1 0 1 0 0 1 0A d d r e s s

JB3 <адрес> - переход если третий бит аккумулятора установлен.

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

Пример: JB3 LABEL1

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

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

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

(PC) = (PC) + 2

IF (ACC.3) = 1 THEN (PC0..7) = Address

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

0 1 1 1 0 0 1 0A d d r e s s

JB4 <адрес> - переход если четвёртый бит аккумулятора установлен.

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

Пример: JB4 LABEL1

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

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

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

(PC) = (PC) + 2

IF (ACC.4) = 1 THEN (PC0..7) = Address

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

1 0 0 1 0 0 1 0A d d r e s s

JB5 <адрес> - переход если пятый бит аккумулятора установлен.

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

Пример: JB5 LABEL1

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

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

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

(PC) = (PC) + 2

IF (ACC.5) = 1 THEN (PC0..7) = Address

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

1 0 1 1 0 0 1 0A d d r e s s

JB6 <адрес> - переход если шестой бит аккумулятора установлен.

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

Пример: JB6 LABEL1

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

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

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

(PC) = (PC) + 2

IF (ACC.6) = 1 THEN (PC0..7) = Address

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

1 1 0 1 0 0 1 0A d d r e s s

JB7 <адрес> - переход если седьмой бит аккумулятора установлен.

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

Пример: JB7 LABEL1

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

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

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

(PC) = (PC) + 2

IF (ACC.7) = 1 THEN (PC0..7) = Address

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

1 1 1 1 0 0 1 0A d d r e s s

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

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

Пример: JС LABEL1

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

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

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

(PC) = (PC) + 2

IF (С) = 1 THEN (PC0..7) = Address

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

1 1 1 1 0 1 1 0A d d r e s s

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

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

Пример: JF0 LABEL1

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

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

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

(PC) = (PC) + 2

IF (F0) = 1 THEN (PC0..7) = Address

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

1 0 1 1 0 1 1 0A d d r e s s

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

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

Пример: JF0 LABEL1

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

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

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

(PC) = (PC) + 2

IF (F1) = 1 THEN (PC0..7) = Address

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

0 1 1 1 0 1 1 0A d d r e s s

JMP <addr 11> - переход на метку.

Описание: осуществляет переход на метку, размещенную по указанному адресу <addr 11>. Команда не воздействует на флаги.

Пример: JMP 311h

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

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

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

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

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

a10 a9 a8 0 0 1 0 0a7 a6 a5 a4 a3 a2 a1 a0

JMPP @A - косвенный переход в текущей странице.

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

Пример: JMPP @A

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

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

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

(PC7-0) = ((A))

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

a10 a9 a8 0 0 1 0 0a7 a6 a5 a4 a3 a2 a1 a0

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

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

Пример: JNС LABEL1

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

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

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

(PC) = (PC) + 2

IF (С) = 0 THEN (PC0..7) = Address

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

1 1 1 0 0 1 1 0A d d r e s s

Описание машинных команд (продолжение).

JNI <адрес> - переход, если сигнал на ножке запроса прерывания равен нулю.

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

Пример: JNI LABEL1

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

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

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

(PC) = (PC) + 2

IF (INT) = 0 THEN (PC0..7) = Address

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

1 0 0 0 0 1 1 0A d d r e s s

JNT0 <адрес> - переход, если сигнал ножке микроконтроллера T0 равен нулю.

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

Пример: JNT0 LABEL1

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

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

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

(PC) = (PC) + 2

IF (T0) = 0 THEN (PC0..7) = Address

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

0 0 1 0 0 1 1 0A d d r e s s

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

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

Пример: JNT1 LABEL1

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

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

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

(PC) = (PC) + 2

IF (T1) = 0 THEN (PC0..7) = Address

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

0 1 0 0 0 1 1 0A d d r e s s

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

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

Пример: JNZ LABEL1

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

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

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

(PC) = (PC) + 2

IF (A) <> 0 THEN (PC0..7) = Address

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

1 0 0 1 0 1 1 0A d d r e s s

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

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

Пример: JTF LABEL1

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

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

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

(PC) = (PC) + 2

IF (A) <> 0 THEN (PC0..7) = Address

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

0 0 0 1 0 1 1 0A d d r e s s

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

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

Пример: JT0 LABEL1

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

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

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

(PC) = (PC) + 2

IF (T0) = 1 THEN (PC0..7) = Address

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

0 0 1 1 0 1 1 0A d d r e s s

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

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

Пример: JT1 LABEL1

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

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

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

(PC) = (PC) + 2

IF (T1) = 1 THEN (PC0..7) = Address

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

0 1 0 1 0 1 1 0A d d r e s s

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

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

Пример: JZ LABEL1

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

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

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

(PC) = (PC) + 2

IF (A) = 0 THEN (PC0..7) = Address

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

1 1 0 0 0 1 1 0A d d r e s s

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

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

Команда допускает следующие виды адресации:

первый операнд - неявная, второй операнд - неявная адресация;

Пример: MOV A, PSW

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

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

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

(PC) = (PC) + 1

(A) = (PSW)

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

1 1 0 0 0 1 1 1

Пример: MOV A, T

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

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

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

(PC) = (PC) + 1

(A) = (T)

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

0 1 0 0 0 0 1 0

Пример: MOV PSW, A

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

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

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

(PC) = (PC) + 1

(PSW) = (A)

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

1 1 0 1 0 1 1 1

Пример: MOV T, A

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

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

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

(PC) = (PC) + 1

(T) = (A)

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

0 1 1 0 0 0 1 0

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

Пример: MOV A, R3

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

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

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

(PC) = (PC) + 1

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

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

1 1 1 1 1 r r r

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

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

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

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

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

(PC) = (PC) + 1

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

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

1 1 1 1 0 0 0 i

первый операнд - неявная, второй операнд - непосредственная адресация;

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

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

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

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

(PC) = (PC) + 2

(A) = (data 8)

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

0 0 1 0 0 0 1 1i 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 0 1 0 1 r r r

первый операнд - неявная, второй операнд - непосредственная адресация;

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

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

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

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

(PC) = (PC) + 2

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

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

1 0 1 1 1 r r ri i i i i i i i

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

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

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

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

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

(PC) = (PC) + 1

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

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

1 0 1 0 0 0 0 i

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

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

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

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

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

(PC) = (PC) + 2

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

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

1 0 1 1 0 0 0 ii i i i i i i i

MOVD A,<источник> - считать порт микросхемы расширителя портов.

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

Пример: MOVD A, P4

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

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

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

(PC) = (PC) + 2

(A) = (Pp), p=4,5,6,7

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

0 0 0 0 1 1 p p

MOVP A, @A - переслать байт из текущей страницы памяти программ в аккумулятор.

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

Пример: MOVP A, @A

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

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

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

(PC0..PC7) = (A)

(A) = ((PC))

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

1 0 1 0 0 0 1 1

MOVP3 A, @A - переслать байт из третьей страницы памяти программ в аккумулятор.

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

Пример: MOVP3 A, @A

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

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

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

(PC0..PC7) = (A)

(PC8..PC11) = 0011

(A) = ((PC))

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

1 1 1 0 0 0 1 1

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

Описание: пересылает данные между аккумулятором и байтом внешней памяти.

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

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

Пример: MOVX A, @R1;Скопировать данные из внешней памяти данных в аккумулятор

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

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

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

(PC) = (PC) + 1

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

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

1 0 0 0 0 0 0 i

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

Пример: MOVX @R0, A;Скопировать данные из аккумулятора во внешнюю память

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

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

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

(PC) = (PC) + 1

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

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

1 0 0 1 0 0 0 i

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 0 0 i

первый операнд - неявная, второй операнд - непосредственная адресация;

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

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

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

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

(PC) = (PC) + 2

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

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

0 1 0 0 0 0 1 1i i i i i i i i

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

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

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

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

(PC) = (PC) + 2

(BUS) = (BUS) V (date 8)

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

1 0 0 1 1 0 0 0i i i i i i i i

Пример: ORL P1, #10010000b

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

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

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

(PC) = (PC) + 2

(Pp) = (Pp) V (date 8)

<== предыдущая лекция | следующая лекция ==>
Архитектура микроЭВМ | Базовые концепции
Поделиться с друзьями:


Дата добавления: 2013-12-13; Просмотров: 491; Нарушение авторских прав?; Мы поможем в написании вашей работы!


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



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




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