Микроконтроллеры MCS–51: программная модель, структура, команды. Микроконтроллеры MCS–51

Система команд ОМЭВМ предоставляет большие возможности обработки данных, обеспечивает реализацию логических, арифметических операций, а также управление в режиме реалиного времени. Реализована побитовая, потетрадная (4 бита), побайтовая (8 бит) и 16-разрядная обработка данных.

БИС семейства MCS-51 - 8-разрядная ОМЭВМ: ПЗУ, ОЗУ, регистры специального назначения, АЛУ и внешние шины имеют байтовую организацию. Двухбайтовые данные используются только регистром-указателем (DPTR) и счетчиком команд (РС). Следует отметить, что регистр-указатель данных может быть использован как двухбайтовый регистр DPTR или как два однобайтовых регистра специального назначения DPH и DPL. Счетчик команд всегда используется как двухбайтовый регистр.

Набор команд ОМЭВМ имеет 42 мнемонических обозначения команд для конкретизации 33 функций этой системы.

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

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

Существуют следующие типы адресации операндов-источников:

  • Косвенно-регистровая адресация по сумме базового и индексного регистров

Таблица обозначений и символов, используемых в системе команд

Обозначение, символ Назначение
А Аккумулятор
Rn Регистры текущего выбранного банка регистров
r Номер загружаемого регистра, указанного в команде
direct Прямо адресуемый 8-битовый внутренний адрес ячейка данных, который может быть ячейкой внутреннего ОЗУ данных (0-127) или SFR (128-255)
@Rr Косвенно адресуемая 8-битовая ячейка внутреннего ОЗУ данных
data8 8-битовое непосредственное данное, входящее в КОП
dataH Старшие биты (15-8) непосредственных 16-битовых данных
dataL Младшие биты (7-0) непосредственных 16-битовых данных
addr11 11-битовый адрес назначения
addrL Младшие биты адреса назначения
disp8 8-битовый байт смещения со знаком
bit Бит с прямой адресацией, адрес которого содержит КОП, находящийся во внутреннем ОЗУ данных или SFR
a15, a14...a0 Биты адреса назначения
(Х) Содержимое элемента Х
((Х)) Содержимое по адресу, хранящемуся в элементе Х
(Х)[M] Разряд М элемента Х

+
-
*
AND
OR
XOR
/X
Операции:
сложения
вычитания
умножения
деления
логического умножения (операция И)
логического сложения (операция ИЛИ)
сложения по модулю 2 (исключающее ИЛИ)
инверсия элемента Х

Мнемонические обозначения функций однозначно связаны с конкретными комбинациями способов адресации и типами данных. Всего в системе команд возможно 111 таких сочетаний. В таблице приведен перечень команд, упорядоченных по алфавиту.

Мнемоника Функция Флаги
Команда ACALL Абсолютный вызов подпрограммы
Сложение AC, C, OV
Сложение с переносом AC, C, OV
Команда AJMP Абсолютный переход
Логическое "И"
Логическое "И" для переменных-битов C
Сравнение и переход, если не равно C
Команда CLR A Сброс аккумулятора
Команда CLR Сброс бита C, bit
Команда CPL A Инверсия аккумулятора
Команда CPL Инверсия бита C, bit
Команда DA A Десятичная коррекция аккумулятора для сложения AC, C
Команда DEC <байт> Декремент
Команда DIV AB Деление C, OV
Команда DJNZ <байт>, <смещение> Декремент и переход, если не равно нулю
Команда INC <байт> Инкремент
Команда INC DPTR Инкремент указателя данных
Команда JB , Переход, если бит установлен
Команда JBC , Переход, если бит установлен и сброс этого бита
Команда JC Переход, если перенос установлен
Команда JMP @A+DPTR Косвенный переход
Команда JNB , Переход, если бит не установлен
Команда JNC Переход, если перенос не установлен
Команда JNZ Переход, если содержимое аккумулятора не равно нулю
Команда JZ Переход, если содержимое аккумулятора равно 0
Команда LCALL Длинный вызов
Команда LJMP Длинный переход
Переслать переменную-байт
Переслать бит данных C
Команда MOV DPTR,#data16 Загрузить указатель данных 16-битовой константой
Команда MOVC A,@A+() Переслать байт из памяти программ
Переслать во внешнюю память (из внешней памяти) данных

Микроконтроллеры семейства МСS-51 построены по гарвардской архитектуре, в которой память программ и память данных разделе-ны, имеют собственные адресные пространства и способы доступа к ним.

Память программ


Максимальный объем памяти составляет 64К байт, из них 4К, 8К, 16К или 32К байт памяти (табл.7.3.1) располагаются на кристалле, остальной объем — вне кристалла.
При напряжении на выводе ЕА = V CC использу-ется как внутренняя, так и внешняя память, при ЕА = V CC = 0 — только внешняя па-мять.
В табл.7.3.1 приведены адреса обращения к памяти программ для указан-ных случаев.
Нижняя область памяти программ отводится для начала работы микроконт-роллера (стартовый адрес 0000h после сброса) и под обработку прерываний (ад-реса прерываний расположены с интервалом 8 байт: 0003h, 000Bh, 0013h и т.д.).


Память программ доступна только для чтения, причем при обращении:

● к внешней памяти программ вырабатывается сигнал ¯PSEN и всегда формиру-ется 16-разрядный адрес.
Младший байт адреса передается через порт P0 в первой половине машинного цикла и фиксируется по срезу строба ALE в регистре.
Во второй половине цикла порт P0 используется для ввода в МК байта данных из внешней памяти.
Старший байт адреса передается через порт P2 в течение всего времени обращения к памяти (рис.7.1.11);

● к внутренней памяти сигнал чтения не формируется и используются циклы обмена по внутренней шине микроконтроллера.

Память данных

Внутреннюю память данных можно условно разделить на три блока (табл.7.3.2).

Внутренняя память всегда адресуется байтом, который обеспечивает адреса-цию только к 256 ячейкам памяти.
Поэтому, как видно из табл.7.3.2, для адреса-ции к верхним 8-битным ячейкам внутреннего ОЗУ и регистрам специальных фун-кций SFR, занимающим одно и то же адресное пространство, в командах исполь-зуются разные способы адресации: косвенный и прямой.

Особенности организации нижней области внутреннего ОЗУ отражены в табл.7.3.3.

Младшие 32 байта внутреннего ОЗУ с адресами 00h.
1Fh сгруппированы в че-тыре банка по восемь регистров (R0.R7).
Следующие 16 байтов ОЗУ с адресами 20h.
2Fh представляют собой область памяти объемом 8×16= 128 бит, которая допускает обращение к каждому отдельному биту.
Для выбора адреса регистра банка используется его имя R0.
R7, для выбора банка — биты RS0, RS1 регистра слова состояния PSW.

Адреса битов

Адреса битов приведены в табл.7.3.3.

Адресация осуществляется прямым способом.

Список всех регистров специальных функций SFR с их адресами дан в табл.7.2.2.
Для наглядности в табл.7.3.

4 приведена карта адресов ре-гистров SFR рассматриваемых микросхем семейства MCS-51.
Адрес SFR опреде-ляется совокупностью цифр столбца и строки в шестнадцатеричной системе счисления.

Например, регистр CMOD имеет адрес D9h.

Для регистров SFR, адреса которых оканчиваются на 0h или 8h (они выделены полужирным шрифтом), помимо байтовой допускается побитовая адресация.

При этом адрес бита, занимающего в регистре N-й разряд, определяется как XXh + 0Nh, где XXh — адрес регистра SFR, N = 0.7.
Битовые адреса в этой облас-ти имеют значения от 80Н до FFH.
Например, адреса битов аккумулятора АСС ле-жат в пределах E0h-E7h.

Внешняя память данных (объемом до 64 Кбайт) создается дополнительными микросхемами памяти, подключаемыми к МК.
Для работы с внешней памятью данных используются специальные команды, поэтому адресные пространства внешней и внутренней памяти не пересекаются и, следовательно, оба вида памя-ти данных можно задействовать одновременно.

Для обращения к ячейкам внеш-ней памяти данных используются (рис.7.1.8):
● команды с косвенной адресацией;
● сигналы чтения ¯RD и записи ¯WR;
● порт P0 для передачи младшего байта адреса и приема/передачи байта данных;
● порт P2 для передачи старшего байта адреса.
Способы адресации.
В системе команд используется:
● прямая, косвенная, регистровая, косвенно-регистровая, непосредственная и индексная адресация (косвенная адресация по сумме базового и индексно-го регистров) операндов-источников;
● прямая, регистровая и косвенно-регистровая адресация операндов назначения.
Сочетание указанных способов (адресации) обеспечивает 21 режим адресации.
В этой и в приведенных ниже таблицах системы команд использованы следу-ющие обозначения:

Прямая адресация.

При этом способе адресации место расположения байта или бита данных определяется 8-битным адресом второго (и третьего) бай-та команды.
Прямая адресация используется только для обращения к внутренней памяти данных (нижним 128 байтам ОЗУ) и регистрам специальных функций.

Регистровая адресация.


Этот способ адресации обеспечивает доступ к данным, которые хранятся в одном из восьми регистров R0.
R7 текущего банка рабочих регистров.
Его также можно использовать для обращения к регистрам A, В, АВ (сдвоенному регистру), регистру-указателю DPTR и флагу переноса С.
Адрес указанных регистров заложен в код операции, благодаря чему сокращает-ся число байт команды.

Косвенно-регистровая адресация.


В этом случае адрес данных хра-нится в регистре-указателе, место расположения которого определено кодом операции.
Данный способ адресации используется для обращения к внешнему ОЗУ и верхней половине внутреннего ОЗУ.
Регистрами-указателями 8-битных ад-ресов могут служить регистры R0, R1 выбранного банка рабочих регистров или указатель стека SР, для 16-битной адресации используется только регистр указа-теля данных DPTR.

Непосредственная адресация.


При этом способе адресации данные непосредственно указаны в команде и находятся во втором (или во втором и тре-тьем) байтах команды, т.е.
не требуется адресация к памяти.
Например, по ко-манде МОV A,#50 в аккумулятор A загружается число 50.

Индексная адресация.


Этот способ представляет собой косвенно-реги-стровую адресацию, при котором адрес байта данных определяется как сумма содержимого базового (DPTR или РС) и индексного (А) регистров.
Способ ис-пользуется только для доступа к программной памяти и только в режиме чтения; он упрощает просмотр таблиц, зашитых в памяти программ.

Структура команд.

Длина команды составляет один (49 команд), два (45 ко-манд) или три (17 команд) байта.
Первый байт команды всегда содержит код опе-рации (КО), A второй и третий байты — адреса операндов или непосредственные значения данных.

В качестве операндов могут быть использованы отдельные биты, тетрады, байты и двухбайтные слова.
Можно выделить 13 типов команд, ко-торые приведены в табл.7.3.5:

● A, PC, SP, DPTR, Rn (n = 0, 7) — аккумулятор, счетчик команд, указатель стека, регистр указателя данных и регистр текущего банка;
● Rm (m = 0, 1) — регистр текущего банка, используемый при косвенной адре-сации;
● direct — 8-разрядный адрес прямо адресуемого операнда;
● bit — адрес прямо адресуемого бита;
● rel — относительный адрес перехода;
● addr11, addr16 — 11- и 16-разрядный абсолютный адрес перехода;
● #data8, #data16 — непосредственные данные (операнды) 8- и 16-разрядной длины;
● A10, A9, A0 — отдельные разряды 11-разрядного адреса;
● (.) — содержимое ячейки памяти по адресу, указанному в скобках;
● СБ, МБ — старший и младший байты 16-разрядного операнда.

Общие сведения о системе команд.

Система команд обеспечивает большие возможности обработки данных в виде бит, тетрад, байтов, двухбайтных слов, A также управления в режиме реального времени.
Для описания команд используется язык макроассемблера ASM51. Синтаксис большинства команд состоит из мнемонического обозначения (аббревиатуры) выполняемой операции, за которым следуют операнды.
С помощью операндов указываются различные способы адресации и типы данных.

В частности аббреви-атура MOV имеет 18 различных команд, предназначенных для обработки трех ти-пов данных (битов, байтов, адресов) в различных адресных пространствах.
Набор команд имеет 42 мнемонических обозначения 111 типов команд для конкрети-зации 33 функций МК.

Из 111 команд 64 выполняются за один машинный цикл, 45 — за два цикла и лишь две команды (MUL — умножение и DIV — деление) вы-полняются за 4 цикла. При частоте тактового генератора 12 МГц длительность машинного цикла (12 тактов) составляет 1 мкс. По функциональному признаку команды можно разбить на пять групп. Ниже приведено описание команд каждой группы, представленных в виде таблиц. Для компактности таблиц выделим группу команд (табл.7.3.6), выполнение которых влияет (помечены знаком +) на состояние флагов регистра слова состояния PSW.

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

Команды пересылки можно разбить на отдель-ные подгруппы.
Команды пересылки и обмена данными между ячейками внутрен-ней памяти (табл.7.3.7).

Команды 1-16, имеющие мнемонику MOV dest, src, предназначены для пересылки байта или двух байтов (команда 16) данных из ис-точника src в приемник dest, при этом:
● для указания источника (src) используется четыре способа адресации: регист-ровый (команды 2-4, 6, 8), прямой (команды 1, 7, 9, 11), косвенный (команды 5, 10) и непосредственный (команды 12-16);
● для указания приемника (dest) используется три способа: регистровый (команды 1, 3…5, 9, 12, 14, 16), прямой (команды 2, 7, 8, 10, 13), косвенный (команды 6, 11, 15).

Команды 17-20 обеспечивают обмен информацией между двумя ячейками внутренней памяти данных (или двустороннюю пересылку).
При выполнении ко-манд ХСН происходит обмен байтами, A команды XCHD — младшими тетрадами байтовых операндов.

Одной из ячеек всегда является аккумулятор A. В качестве другой ячейки при обмене байтами используется один из регистров Rn текущего банка, A также прямо или косвенно адресуемая ячейка внутренней памяти; при обмене тетрадами — только косвенно адресуемая ячейка внутренней памяти.

Так как во всех МК стек размещается во внутреннем ОЗУ, в эту же подгруппу включены команды (20, 21) обращения к стеку PUSH src, POP dest.
Эти команды ис-пользуют только прямой способ адресации, записывая байт в стек или восстанав-ливая его из стека.
Следует иметь в виду, что в тех МК, у которых в ОЗУ отсут-ствуют верхние 128 байт, увеличение стека за пределы 128 байт ведет к потере данных.

Команды пересылки данных между внутренней и внешней па-мятью данных (табл.7.3.8).

Эти команды используют только косвенную адре-сацию, при этом однобайтный адрес может располагаться в Р0 или R1 текущего банка регистров, A двухбайтный адрес — в регистре-указателе данных DРТR.
При любом доступе к внешней памяти роль приемника или источника операндов во внутренней памяти играет аккумулятор А.

Команды пересылки данных из памяти программ (табл.7.3.9).

Эти команды предназначены для чтения таблиц из программной памяти.

Команда MOVC A,@А + DPTR используется для обращения к таблице с числом входов от 0 до 255.

Номер требуемого входа в таблицу загружается в аккумулятор, A регистр DPTR устанавливается на точку начала таблицы. Отличительной особенностью другой команды является то, что в качестве указателя базы используется про-граммный счетчик PC и обращение к таблице производится из подпрограммы. Вначале номер требуемой точки входа загружается в аккумулятор, затем вызыва-ется подпрограмма с командой MOVC A,@А + PC. Таблица может иметь 255 вхо-дов с номерами от 1 до 255, так как 0 используется для адреса команды RET вы-хода из подпрограммы.

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

● источником одного 8-битного операнда и приемником результата служит ак-кумулятор;
● источником другого операнда — либо один из рабочих регистров Rn (n = 0-7) текущего банки, либо прямо direct или косвенно @Rm (m = 0, 1) адресуемая ячейка памяти ОЗУ, либо непосредственные данные #data.

Операции умножения MUL и деления DIV выполняются над содержимым реги-стров A и В. При умножении старшие 8 разрядов результата записываются в ре-гистр В, младшие 8 разрядов — в регистр A.
Если произведение больше 255, устанавливается флаг переполнения OV; флаг переноса С всегда сбрасывается. Команда DIV выполняет деление 8-битного операнда аккумулятора A на 8-битный операнд регистра В.
При делении частное (старшие разряды) записывается в ре-гистр в A, остаток (младшие разряды) — в B. Флаги переноса C и переполнения OV сбрасываются.
При попытке деления на 0 устанавливается флаг переполнения OV. Операция деления чаще используется для сдвигов и преобразования оснований чисел.

При делении двоичного числа на 2 N происходит его сдвиг на N бит влево.
Лишние биты переносятся в регистр В.

Операции над однобайтными операндами (табл.7.3.11).

Команда DA используется для выполнения двоично-десятичных операций. Команды INC, DEC позволяют соответственно увеличить или уменьшить на единицу содержимое ячейки памяти.
Они применимы к содержимому аккумулято-ра A, одного из рабочих регистров Rn или ячейки памяти, адресуемой как пря-мым, так и косвенным способом.
Операция увеличения на единицу применима также к содержимому 16-разрядного регистра-указателя DPTR.

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

Двуместные операции

(табл.7.3.12).

Команды AML, ORL, XRL позволяют выполнить три двуместные логические операции над 8-битными операндами: ANL — логическое умножение (AND), ORL — ло-гическое сложение (OR), XRL — исключающее ИЛИ (XOR).
Операции выполняются над отдельными битами операндов. Источником одного из операндов и одновре-менно приемником результата служит либо аккумулятор (А), либо прямо адресу-емая ячейка памяти (direct).
Для источника другого операнда используется реги-стровый, прямой, косвенный или непосредственный способ адресации.

Одноместные операции

(табл.7.3.13).
В состав группы входит также ряд одноместных операций над содержимым аккумулятора A: операции очистки (CLR), логического дополнения или инверсии (CPL), циклического и расширенного циклического сдвигов на 1 бит вправо (RL, RLC) и влево (RR, RRC), обмена тетрад или циклического сдвига байта на 4 разряда (SWAP), A также пустая операция (NOP), в результате которой состояние всех регистров МК (за исключением про-граммного счетчика) остается неизменным.

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

Команды безусловного перехода

(табл.7.3.14).

Команды 1-3 отличаются лишь форматом адреса назначения.

Ко-манда LJMP (L — Long) выполняет «длинный» безусловный переход по указанному адресу addr16, загружая счетчик PC вторым и третьим байтами команды.
Команда обеспечивает переход в любую точку 64К байтного адресного пространства.

Ко-манда AJMP (А — Absolute) обеспечивает «абсолютный» переход по адресу внутри 2К байтной страницы, начальный адрес которой задается пятью старшими разря-дами программного счетчика PC (вначале содержимое PC увеличивается на 2).

Команда SJMP (S — Short) позволяет осуществить «короткий» безусловный переход по адресу, который вычисляется сложением смещения rel со знаком во втором байте команды с содержимым счетчика PC, предварительно увеличенного на 2.

Адрес перехода находится в пределах -128+127 байт относительно адре-са команды.
Для перехода в любую другую точку 64-килобайтного адресного про-странства может быть использована также команда 4 с косвенной @A+DPTR адре-сацией.
В этом случае содержимое A интерпретируется как целое без знака.

Пустая операция (NOP), в результате которой состояние всех регистров мик-ропроцессора (за исключением программного счетчика) остается неизменным.

Команды условного перехода

(табл.7.3.15).

С помощью команд JZ и JNZ осуществляется переход, если содержимое аккумулятора соответственно равно или не равно нулю.
Адрес перехода вычисляется путем сложения относительного знакового смещения rel с содержимым счетчика команд PC после прибавления к нему числа 2 (длины команды в байтах).

Содержимое аккумулятора остается не-изменным.
Команды на флаги не влияют.

Команды CJNE (3-6) служат для реализации условного перехода по результату сравнения двух 8-разрядных операндов, расположение которых указано в коман-дах.
Если их значения не равны, осуществляется переход.

Адрес перехода вычис-ляется сложением смещения rel с содержимым счетчика PC, предварительно уве-личенным на 3.
В противном случае выполняется следующая команда.

В графе Алгоритм показано влияние значений сравниваемых 8-разрядных операндов на флаг переноса С.
Команды DJNZ (7, предназначены для организации программных циклов.

Регистр Rn или прямо (direct) адресуемая ячейка представляют собой счетчик по-вторений цикла, A смещение rel (во втором и третьем байтах команд) — относи-тельный адрес перехода к началу цикла.
При выполнении команд содержимое счетчика уменьшается на единицу и проверяется на нуль.
Если содержимое счет-чика не равно нулю, осуществляется переход на начало цикла.
В противном слу-чае выполняется следующая команда.

Адрес перехода вычисляется сложением смещения с содержимым счетчика, предварительно увеличенным на длину ко-манды (на 2 или 3).
На флаги команды не влияют.

Команды вызова подпрограмм и возврата из программ

(табл.7.3.16).
Команды LCALL «длинный вызов» и ACALL «абсолютный вызов» осуществляют безусловный вызов подпрограммы, размещенной по указанному адресу.

Отличие этих команд от рассмотренных выше команд безусловного перехода состоит в том, что они сохраняют в стеке адрес возврата (содержимое счетчика) в основ-ную программу.
Команда возврата из подпрограммы RET восстанавливает из стека значение содержимого счетчика команд, A команда RETI помимо этого разрешает преры-вания обслуживающего уровня.

В командах передачи управления широко используется относительная адреса-ция, которая поддерживает перемещаемые программные модули.
В качестве отно-сительного адреса выступает 8-разрядное смещение rel со знаком, обеспечиваю-щее ветвление от текущего положения счетчика PC в обе стороны на ±127 байт.

Для перехода в любую другую точку 64К-байтного адресного пространства может быть использован либо прямой адрес addr16, либо косвенный @A+DPTR адрес.
В последнем случае содержимое A интерпретируется как целое без знака.

Вари-ант короткой прямой адресации addr11 внутри 2К-байтной текущей страницы вве-ден для совместимости с архитектурой МК48.

Все эти типы адресации могут быть применены только к операции перехода, A для операции вызова допустимы только прямой addr16 и внутренний addr11 способы адресации.
Во всех условных операциях может использоваться только относительная адресация.

Когда МК51 опознает запрос на прерывание, он генерирует одну из команд типа LCALL addr16, что автоматически обеспечивает запоминание адреса возврата в стеке.
Однако в отличии от МК48 в МК51 нет автоматически сохраняемой ин-формации о состоянии.

При этом логика прерываний перестает срабатывать на запросы того уровня, который был принят к обслуживанию.
Для понижения уров-ня прерывания служит команда возврата из прерывания RETI, которая кроме опе-рации, эквивалентной RET, включает операцию разрешения прерывания данного уровня.
К типовым условным операциям МК51 относятся также операции JZ, JNZ.
Од-нако появилась новая операция «Сравнить и перейти» CJNE.

По данной команде операнд сначала сравнивается по правилам вычитания целых чисел с константой и в соответствии с результатом сравнения выставляется флаг CY Затем в случае несовпадения с константой выполняется ветвление. Сравнивая аккумулятор, ре-гистр или ячейку памяти с последовательностью констант, получаем удобный способ проверки на совпадения, например с целью выявления особых случаев.

По сути дела команда CJNE является элементом оператора языков высокого уров-ня типа CASE.

Дальнейшее развитие получила команда DJNZ.
Теперь программист в качестве счетчика может использовать не только один из рабочих регистров Rn, но и лю-бую ячейку памяти DSEG.

Команды битовых операций.

Группа состоит из 12 команд, позволяющих вы-полнять операции над одним или двумя битами (сброс, установку, инверсию бита, A также логические И и ИЛИ), и 5 команд, предназначенных для реализации условных переходов (табл.7.3.17).

Команды обеспечивают прямую адресацию 128 битов, расположенных в шест-надцати ячейках внутреннего ОЗУ с адресами 20h.
2Fh (табл.7.3.3), и 128 битов, расположенных в регистрах специального назначения, адреса которых кратны восьми (выделены в табл.7.3.4 полужирным шрифтом).

При выполнении опера-ций над двумя одноразрядными операндами в качестве логического аккумулято-ра используется триггер регистра PSW, хранящий флаг переноса C (табл.7.1.2).

Команды MOV (1,2) осуществляют пересылку бита из одной прямо адресу-емой битовой ячейки внутреннего ОЗУ в триггер C или в обратном направлении.
Команды CRL (3, 4), SETB (5, 6) соответственно сбрасывают в нуль или устанавли-вают в единицу флаг переноса C или указанный бит.
С помощью команд CPL, ANL, ORL (7-12) выполняются логические операции инверсии, сложения и умножения.

В группу входят также команды (13-17) для реализации операций условных переходов с относительным 8-разрядным смещением rel.
Переходы могут быть реализованы как при установленном бите или флаге переноса (команды 13, 16), так и при сброшенном (команды 14, 17).

Команда JBC помимо перехода по вычис-ляемому адресу при выполнении условия (бит) = 1 производит сброс этого бита в нулевое состояние.
При выполнении команд условных переходов адрес перехо-да вычисляется после прибавления к содержимому счетчика чисел 3 или 2 (отра-жающих число байт в команде).

Архитектура семейства MCS-51 в значительной мере предопределяется ее назначением - построение компактных и дешевых цифровых устройств. Все функции микроЭВМ реализуются с помощью единственной микросхемы. В состав семейства MCS-51 входит целый ряд микросхем от самых простых микроконтроллеров до достаточно сложных. Микроконтроллеры семейства MCS-51 позволяют выполнять как задачи управления различными устройствами, так и реализовывать отдельные узлы аналоговой схемы. Все микросхемы этого семейства работают с одной и той же системой команд MCS-51 , большинство из них выполняется в одинаковых корпусах с совпадающей цоколевкой (нумерация ножек для корпуса). Это позволяет использовать для разработанного устройства микросхемы разных фирм - Maxim, Atmel, NXP и т.д. (catalog..php?page=components_list&id=39"> с.м. Поиск по параметрам) без переделки принципиальной схемы устройства и программы .

Рисунок 1. Структурная схема контроллера I8751

Структурная схема контроллера представлена на рисунке 1. и состоит из следующих основных функциональных узлов: блока управления, арифметико-логического устройства, блока таймеров/счетчиков, блока последовательного интерфейса и прерываний, программного счетчика, памяти данных и памяти программ. Двусторонний обмен осуществляется с помощью внутренней 8-разрядной магистрали данных.

Рассмотрим подробнее назначение каждого блока. По такой схеме построены практически все представители семейства MCS-51 . Различные микросхемы этого семейства различаются только регистрами специального назначения (в том числе и количеством портов). Система команд всех контроллеров семейства MCS-51 содержит 111 базовых команд с форматом 1, 2 или 3 байта и не изменяется при переходе от одной микросхемы к другой. Это обеспечивает прекрасную переносимость программ с одной микросхемы на другую.

Блок управления и синхронизации

Блок управления и синхронизации (Timing and Control) предназначен для выработки синхронизирующих и управляющих сигналов, обеспечивающих координацию совместной работы блоков ОЭВМ во всех допустимых режимах ее работы.В состав блока управления входят:

  • - устройство формирования временных интервалов,
  • - логика ввода-вывода,
  • - регистр команд,
  • - регистр управления потреблением электроэнергии,
  • - дешифратор команд, логика управления ЭВМ.

Устройство формирования временных интервалов предназначено для формирования и выдачи внутренних синхросигналов фаз, тактов и циклов. Количество машинных циклов определяет продолжительность выполнения команд. Практически все команды ОЭВМ выполняются за один или два машинных цикла, кроме команд умножения и деления, продолжительность выполнения которых составляет четыре машинных цикла. Обозначим частоту задающего генератора через F г. Тогда длительность машинного цикла равна 12/F г или составляет 12 периодов сигнала задающего генератора. Логика ввода - вывода предназначена для приема и выдачи сигналов, обеспечивающих обмен информации с внешними устройствами через порты ввода вывода Р0-Р3.

Регистр команд предназначен для записи и хранения 8-ми разрядного кода операции выполняемой команды. Код операции, с помощью дешифратора команд и логики управления ЭВМ, преобразуется в микропрограмму выполнения команды.

Регистр управления потреблением (PCON) позволяет останавливать работу микроконтроллера для уменьшения потребления электроэнергии и уменьшения уровня помех от микроконтроллера. Еще большего уменьшения потребления электроэнергии и уменьшения помех можно добиться, остановив задающий генератор микроконтроллера. Этого можно достичь при помощи переключения бит регистра управления потреблением PCON. Для варианта изготовления по технологии n-МОП (серия 1816 или иностранных микросхем, в названии которых в середине отсутствует буква "c") регистр управления потреблением PCON содержит только один бит, управляющий скоростью передачи последовательного порта SMOD, а биты управления потреблением электроэнергией отсутствуют.

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

  • - регистров аккумулятора, регистров временного хранения TMP1 и TMP2,
  • - ПЗУ констант,
  • - сумматора,
  • - дополнительного регистра (регистра В),
  • - аккумулятора (ACC),
  • - регистра состояния программ (PSW).

Регистр аккумулятор и регистры временного хранения - восьмиразрядные регистры, предназначенные для приема и хранения операндов на время выполнения операций над ними. Эти регистры программно не доступны.

ПЗУ констант обеспечивает выработку корректирующего кода при двоично-десятичном представлении данных, кода маски при битовых операциях и кода констант.

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

Регистр B - восьмиразрядный регистр, используемый во время операций умножения и деления. Для других инструкций он может рассматриваться как дополнительный сверхоперативный регистр.

Аккумулятор - восьмиразрядный регистр, предназначенный для приема и хранения результата, полученного при выполнении арифметико-логических операций или операций сдвига

Блок последовательного интерфейса и прерываний (ПИП) предназначен для организации ввода-вывода последовательных потоков информации и организации системы прерывания программ. В состав блока входят:

  1. - буфер ПИП,
  2. - логика управления,
  3. - регистр управления,
  4. - буфер передатчика,
  5. - буфер приемника,
  6. - приемопередатчик последовательного порта,
  7. - регистр приоритетов прерываний,
  8. - регистр разрешения прерываний,
  9. - логика обработки флагов прерываний и схема выработки вектора.

Счетчик команд (Program Counter) предназначен для формирования текущего 16-разрядного адреса внутренней памяти программ и 8/16-разрядного адреса внешней памяти программ. В состав счетчика команд входят 16-разрядные буфер РС, регистр РС и схема инкремента (увеличения содержимого на 1).

Память данных (RAM) предназначена для временного хранения информации, используемой в процессе выполнения программы.

Порты P0, P1, P2, P3 являются квазидвунаправленными портами ввода - вывода и предназначены для обеспечения обмена информацией ОЭВМ с внешними устройствами, образуя 32 линии ввода- вывода.

Устройство таймеров В базовых моделях семейства имеются два программируемых 16-битных таймера/счетчика (T/C0 и T/C1), которые могут быть использованы как в качестве таймеров, так и в качестве счетчиков внешних событий

Регистр состояния программы (PSW) предназначен для хранения информации о состоянии АЛУ при выполнении программы.

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

Регистр указателя данных (DPTR) предназначен для хранения 16-разрядного адреса внешней памяти данных или памяти программ.

Указатель стека (SP) представляет собой восьмиразрядный регистр, предназначенный для организации особой области памяти данных (стека), в которой можно временно сохранить любую чейку памяти.



Архитектура семейства MCS-51 в значительной мере предопределяется ее назначением - построение компактных и дешевых цифровых устройств. Все функции микроЭВМ реализуются с помощью единственной микросхемы. В состав семейства MCS-51 входит целый ряд микросхем от самых простых микроконтроллеров до достаточно сложных. Микроконтроллеры семейства MCS-51 позволяют выполнять как задачи управления различными устройствами, так и реализовывать отдельные узлы аналоговой схемы. Все микросхемы этого семейства работают с одной и той же системой команд , большинство из них выполняется в одинаковых корпусах с совпадающей цоколевкой (нумерация ножек для корпуса). Это позволяет использовать для разработанного устройства микросхемы разных фирм — производителей (таких как Intel, Dallas, Atmel, Philips и т.д.) без переделки принципиальной схемы устройства и программы .

Рисунок 1. Структурная схема контроллера К1830ВЕ751

Структурная схема контроллера представлена на рисунке 1. и состоит из следующих основных функциональных узлов: блока управления, арифметико-логического устройства, блока таймеров/счетчиков, блока последовательного интерфейса и прерываний, программного счетчика, памяти данных и памяти программ. Двусторонний обмен осуществляется с помощью внутренней 8-разрядной магистрали данных. Рассмотрим подробнее назначение каждого блока. По такой схеме построены практически все представители семейства MCS-51 . Различные микросхемы этого семейства различаются только регистрами специального назначения (в том числе и количеством портов). Система команд всех контроллеров семейства MCS-51 содержит 111 базовых команд с форматом 1, 2 или 3 байта и не изменяется при переходе от одной микросхемы к другой. Это обеспечивает прекрасную переносимость программ с одной микросхемы на другую.

Блок управления и синхронизации

Блок управления и синхронизации (Timing and Control) предназначен для выработки синхронизирующих и управляющих сигналов, обеспечивающих координацию совместной работы блоков ОЭВМ во всех допустимых режимах ее работы.В состав блока управления входят:

  • устройство формирования временных интервалов,
  • логика ввода-вывода,
  • регистр команд,
  • регистр управления потреблением электроэнергии,
  • дешифратор команд, логика управления ЭВМ.

Устройство формирования временных интервалов предназначено для формирования и выдачи внутренних синхросигналов фаз, тактов и циклов. Количество машинных циклов определяет продолжительность выполнения команд. Практически все команды ОЭВМ выполняются за один или два машинных цикла, кроме команд умножения и деления, продолжительность выполнения которых составляет четыре машинных цикла. Обозначим частоту задающего генератора через F г. Тогда длительность машинного цикла равна 12/F г или составляет 12 периодов сигнала задающего генератора. Логика ввода - вывода предназначена для приема и выдачи сигналов, обеспечивающих обмен информации с внешними устройствами через порты ввода вывода Р0-Р3.

Регистр команд предназначен для записи и хранения 8-ми разрядного кода операции выполняемой команды. Код операции, с помощью команд и логики управления ЭВМ, преобразуется в микропрограмму выполнения команды.

Регистр управления потреблением (PCON ) позволяет останавливать работу микроконтроллера для уменьшения потребления электроэнергии и уменьшения уровня помех от микроконтроллера. Еще большего уменьшения потребления электроэнергии и уменьшения помех можно добиться, остановив задающий генератор микроконтроллера. Этого можно достичь при помощи переключения бит регистра управления потреблением PCON. Для варианта изготовления по технологии n-МОП (серия 1816 или иностранных микросхем, в названии которых в середине отсутствует буква "c") регистр управления потреблением PCON содержит только один бит, управляющий скоростью передачи последовательного порта SMOD, а биты управления потреблением электроэнергией отсутствуют.

Вместе со статьей "Архитектура микроконтроллеров MCS-51" читают:


http://сайт/MCS51/tablms.php


http://сайт/MCS51/SysInstr.php


http://сайт/MCS51/port.php

Система команд ОМЭВМ предоставляет большие возможности обработки данных, обеспечивает реализацию логических, арифметических операций, а также управление в режиме реалиного времени. Реализована побитовая, потетрадная (4 бита), побайтовая (8 бит) и 16-разрядная обработка данных. БИС семейства MCS-51 - 8-разрядная ОМЭВМ: ПЗУ, ОЗУ, регистры специального назначения, АЛУ и внешние шины имеют байтовую организацию. Двухбайтовые данные используются только регистром-указателем (DPTR) и счетчиком команд (РС). Следует отметить, что регистр-указатель данных может быть использован как двухбайтовый регистр DPTR или как два однобайтовых регистра специального назначения DPH и DPL. Счетчик команд всегда используется как двухбайтовый регистр. Набор команд ОМЭВМ имеет 42 мнемонических обозначения команд для конкретизации 33 функций этой системы. Синтаксис большинства команд ассемблерного языка состоит из мнемонического обозначения функции, всед за которым идут операнды, указывающие методы адресации и типы данных. Различные типы данных или режимы адресации определяются установленными операндами, а не изменениями мнемонических обозначений. Систему команд условно можно разбить на пять групп:
  • Арифметические команды;
  • Логические команды;
  • Команды передачи данных;
  • Команды битового процессора;
  • Команды ветвления и передачи управления.
Существуют следующие типы адресации операндов-источников:
  • Регистровая адресация
  • Прямая адресация
  • Косвенно-регистровая адресация
  • Непосредственная адресация
  • Косвенно-регистровая адресация по сумме базового и индексного регистров
Арифметические команды В наборе команд имеются следующие арифметические операции: сложение, сложение с учетом флага переноса, вычитание с заемом, инкременирование, декременирование, сравнение, десятичная коррекция, умножение и деление. В АЛУ производятся действия над целыми числами без знака. В двухоперандных операциях: сложение (ADD), сложение с переносом (ADDC) и вычитание с заемом (SUBB) аккумулятор является первым операндом и принимает результат операции. Вторым операндом может быть рабочий регистр выбранного банка рабочих регистров, регистр внутренней памяти данных с косвенно-регистровой и прямой адресацией или байт непосредственных данных. Указанные операции влияют на флаги: пеполнения, переноса, промежуточного переноса и флаг четности в слове состояния процессора (PSW). Использование разряда переноса позволяет многократно повысить точность при операциях сложения (ADDC) и вычитания (SUBB). Выполнение операций сложения и вычитания с учетом знака может быть осуществлено с помощью программного управления флагом переполнения (OV) регистра PSW. Флаг промежуточного переноса (АС) обеспечивает выполнение арифметических операций в двоично-десятичном коде. Операции инкременирования и декременирования на флаги не влияют. Операции сравнения не влияют ни на операнд назначения, ни на операнд источника, но они влияют на флаги переноса. Существуют три арифметические операции, которые выполняются только на аккумуляторе: две команды проверки содержимого аккумулятора А (JZ, JNZ), и команда десятичной коррекции при сложении двоично-десятичных кодов. При операции умножения содержимое аккумулятора А умножается на содержимое регистра В и результат размещается следующим образом: младший байт в регистре В, старший - в регистре А. В случае выполнения операции деления целое от деления помещается в аккумулятор А, остаток от деления - в регистр В. Логические команды с байтовыми переменными Система команд позволяет реализовать логические операции: "И", "ИЛИ", "ИСКЛЮЧАЮЩЕЕ ИЛИ" на регистре-аккумуляторе (А) и байте-источнике. Вторым операндом (байтом-источником) при этом может быть рабочий регистр в выбранном банке рабочих регистров; регистр внутреннего ОЗУ, адресуемый с помощью косвенно-регистровой адресации; прямоадресуемые ячейки внутреннего ОЗУ и регистры специального назначения; непосредственная величина. Указанные логические операции могут быть реализованы на любом прямоадресуемом регистре внутреннего ОЗУ или регистре специального назначения с использованием в качестве второго операнда содержимого аккумлятора А или непосредственных данных. Существуют логические операции, которые выполняются только на аккумуляторе: сброс и инвертирование всех восьми разрядов А; циклический сдвиг влево и впрво; циклический сдвиг влево и вправо с учетом флага переноса; обмен местами старшей и младшей тетрад (ниблов) внутри аккумулятора. Команды передачи данных Таблицы символов (кодов), зашитые в ПЗУ программы могут быть выбраны с помощью команд передачи данных с использованием косвенной адресации. Байт константы может быть передан в аккумулятор из ячейки памяти программ, адресуемой суммой базового регистра (PC или DPTR) и индексного регистра (содержимого А). Это обеспечивает, например, удобное средство реализации алгоритма преобразования кода ASCII в семисегментный код. Любая ячейка 256-байтового блока внешнего ОЗУ данных может быть выбрана с использованием косвенно-регистровой адресации через регистры указатели R0 или R1 (выбранного банка рабочих регистров). Ячейка внутри адресного пространства 64 Кбайт внешнего ОЗУ также может быть выбрана с использованием косвенно-регистровой адресации через регистр-указатель данных DPTR. Команды передачи между прямоадресуемыми регистрами позволяют заносить величину из порта в ячейку внутреннего ОЗУ без использования рабочих регистров или аккумулятора. В логическом процессоре любой прямоадресуемый бит может быть помещен в бит переноса и наоборот. Содержимое аккумулятора может быть обменено с содержимым рабочих регистров (выбранного банка) и с содержимым адресуемых с помощью косвенно-регистровой адресации ячеек внутреннего ОЗУ, а также с содержимым прямо-адресуемых ячеек внутреннего ОЗУ и с содержимым регистров специального назначения. Младший нибл (разряды 3-0) содержимого аккумулятора, может быть обменен с младшим ниблом содержимого ячеек внутреннего ОЗУ, выбираемых с помощью косвенно-регистровой адресации. Команды битового процессора Битовый процессор является частью архитектуры МК семейства MCS51 и его можно рассматривать как независимый процессор побитовой обработки. Битовый процессор выполняет набор команд, имеет свое побитово-адресуемое ОЗУ и свой ввод-вывод. Команды, оперирующие с битами, обеспечивают прямую адресацию 128 битов (0-127) в шестнадцати ячейках внутреннего ОЗУ (ячейки с адресами 20Н-2FH) и прямую побитовую адресацию регистров специального назначения, адреса которых кратны восьми. Каждый из отдельно адресуемых битов может быть установлен в "1", сброшен в "0", инвертирован, проверен. Могут быть реализованы переходы: если бит установлен; если бит не установлен; переход, если бит установлен, со сбросом этого бита; бит может быть перезаписан в (из) разряда переноса. Между любым прямоадресуемым битом и флагом переноса могут быть произведены логические операции "И", "ИЛИ", где результат заносится в разряд флага переноса. Команды побитовой обработки обеспечивают реализацию сложных функций комбинаторной логики и оптимизацию программ пользователя. Команды ветвления и передачи управления Адресное пространство памяти программ не имеет страничной организации, что позволяет свободно перемщать фрагменты программы внутри адресного пространства, при этом не требуется перезасылка (изменение) номера страницы. Перемещение отдельных фрагментов программы обеспечивает возможность использования перемещаемых программных модулей различными программами. Команды 16-разрядных переходов и вызовов подпрограмм позволяют осуществлять переход в любую точку адресного пространства памяти программ объемом 64 Кбайт. Команды 11-разрядных переходов и вызовов подпрограмм обеспечивают переходы внутри программного модуля емкостью 2 Кбайт. В системе команд имеются команды условных и безусловных переходов относительно начального адреса слеующей программы в пределах от (РС)-128 до (ЗС)+127. Команды проверки отдельных разрядов позволяют осуществлять условные переходы по состоянию "0" или "1" прямоадресуемых битов. Команды проверки содержимого аккумулятора (на ноль/не ноль) позволяют осуществлять условные переходы по содержимому А. Косвенно-регистровые переходы в системе команд обеспечивают ветвление относительно базового регистра (содержимого DPTR или РС) со смещением, находящимся в аккумуляторе А. Регистровая адресация Регистровая адресация используется для обращения к восьми рабочим регистрам выбранного банка рабочих регистров (эти же регистры могут быть выбраны с помощью прямой адресации и косвенно-регистровой адресации как обычные ячейки внутреннего ОЗУ данных). Регистровая адресация используется для обращения к регистрам А, В, АВ (сдвоенному регистру), DPTR и к флагу переноса С. Использование регистровой адресации позволяет получать двухбайтовый эквивалент трехбайтовых команд прямой адресации. Прямая адресация Прямая байтовая адресация используется для обращения к ячейкам внутренней памяти (ОЗУ) данных (0-127) и к регистрам специального назначения. Прямая побитовая адресация используется для обращения к отдельно адресуемым 128 битам, расположенным в ячейках с адресами 20H-2FH и к отдельно адресуемым битам регистров специального назначения. Старший бит байта кода прямого адрема выбирает одну из двух групп отдельно адремуемых битов, расположенных в ОЗУ или регистрах специального назначения. Прямо адресуемые биты с адресами 0-127 (00H-7FH) расположены в блоке из 16 ячеек внутреннего ОЗУ, имеющих адреса 20H-2FH. Указанные ячейки последовательно пронумерованы от младшего бита младшего байта до старшего бита старшего байта. Отдельно адресуемые биты в регистрах специального назначения пронумерованы следующим образом: пять старших разрядов адреса совпадают с пятью старшими разрядами адреса самого регистра, а три младших - определяют местоположение отдельного ибта внутри регистра. Косвенно-регистровая адресация Косвенно-регистровая адресация используется для обращения к ячейкам внутренннего ОЗУ данных. В качестве регистров-указателей используется регистры R10, R1 выбранного банка регистров. В командах PUSH и POP используется содержимое указателя стека (SP). Косвенно-регистровая адресация используется также для обращения к внешней памяти данных. В этом случае с помощью регистров-указателей R0 и R1 (выбранного банка рабочих регистров) выбирается ячейка из блока в 256 байт внешней памяти данных. Номер блока предварительно задается содержимым порта Р2. 16-разрядный указатель данных (DPTR) может быть использован для обращения к любой ячейке адресного пространства внешней памяти данных объемом до 64 Кбайт. Непосредственная адресация Непосредственная адресация позволяет выбрать из адресного пространства памяти программ константы, явно указанные в команде. Косвенно-регистровая адресация по сумме базового и индексного регистров Косвенно-регистровая адресация по сумме: базовый регистр плюс индексный регистр (содержимое аккумулятора А) упрощает просмотр таблиц, зашитых в памяти программ. Любой байт из таблицы может быть выбран по адресу, определяемому суммой содержимого DPTR или РС и содержимого А. Таблица обозначений и символов, используемых в системе команд
Обозначение, символ Назначение
А Аккумулятор
Rn Регистры текущего выбранного банка регистров
r Номер загружаемого регистра, указанног в команде
direct Прямо адресуемый 8-битовый внутренний адрес ячейка данных, который может быть ячейкой внутреннего ОЗУ данных (0-127) или SFR (128-255)
@Rr Косвенно адресуемая 8-битовая ячейка внутреннего ОЗУ данных
data8 8-битовое непосредственное да ное, ходящее в КОП
dataH Старшие биты (15-8) непосредственных 16-битовых данных
dataL Младшие биты (7-0) непосредственных 16-битовых данных
addr11 11-битовый адрес назначения
addrL Младшие биты адреса назначения
disp8 8-битовый байт смещения со знак м
bit Бит с прямой адресацией, адрес которого содержит КОП, находящийся во внутреннем ОЗУ данных или SFR
a15, a14...a0 Биты адреса назначения
(Х) Содержимое элемента Х
((Х)) Содержимое по адресу, хранящемуся в элементе Х
(Х)[M] Разряд М элемента Х
+ - * / AND OR XOR /X Операции: сложения вычитания умножения деления логического умножения (операция И) логического сложения (операция ИЛИ) сложения по модулю 2 (исключающее ИЛИ) инверсия элемента Х

Мнемонические обозначения функций однозначно связаны с конкретными комбинациями способов адресации и типами данных. Всего в системе команд возможно 111 таких сочетаний. В таблице приведен перечень команд, упорядоченных по алфавиту.

Мнемоника Функция Флаги
Команда ACALL Абсолютный вызов подпрограммы
Команда ADD A, <байт-источник> Сложение AC, C, OV
Команда ADDC A, <байт-источник> Сложение с переносом AC, C, OV
Команда AJMP Абсолютный переход
Команда ANL <байт-назначения>, <байт-источникa> Логическое "И"
Команда ANL C, <байт-источникa> Логическое "И" для переменных-битов
Команда CJNE <байт-назначения>, <байт-источник>, <смещение> Сравнение и переход, если не равно C
Команда CLR A Сброс аккумулятора
Команда CLR Сброс бита C, bit
Команда CPL A Инверсия ак умуля ора
Команда CPL Инверсия бита C, bit
Команда DA A Десятичная коррекция аккумулятора для ложения AC, C
Команда DEC <байт> Декремент
Команда DIV AB Деление C, OV
Команда DJNZ <байт>, <смещение> Декремент и переход, если не равно нулю
Команда INC <байт> Инкремент
Команда INC DPTR Инкремент указателя данных
Команда JB , Переход, если бит установлен
Команда JBC , Переход, если бит установлен и сброс этого бита
Команда JC Переход, если перенос установлен
Команда JMP @A+DPTR Косвенный переход
Команда JNB , Переход, если бит не установлен
Команда JNC Переход, если перенос не установлен
Команда JNZ Переход, если содержимое аккумулятора не равно нулю
Команда JZ Переход, если содержимое аккумулятора равно 0
Команда LCALL Длинный вызов
Команда LJMP Длинный переход
Команда MOV <байт-назначения>, <байт-источника> Переслать переменную-байт
Команда MOV <бит-назначения>, <бит-источника> Переслать бит данных C
Команда MOV DPTR,#data16 Загрузить указатель данных 16-битовой константой
Команда MOVC A,@A+() Переслать байт из памяти программ
Команда MOVX <байт приемника>, <байт источника> Переслать во внешнюю память (из внешней памяти) данных
Команда MUL AB Умножение C, OV
Команда NOP Нет операции PC
Команда ORL <байт-назначения>, <байт-источникa> Логическое "ИЛИ" для перемнных-байтов
Команда ORL C, <бит источникa> Логическое "ИЛИ" для переменных-битов C
Команда POP Чтение из стека
Команда PUSH Запись в стек
Команда RET Возврат из подпрограммы
Команда RETI Возврат из прерывания
Команда RL A Сдвиг содержимого аккумулятора влево
Команда RLC A Сдвиг содержимого аккумулятора влево через флаг переноса
Команда RR A Сдвиг содержимого аккумулятора вправо
Команда RRC A Сдвиг содержимого аккумулятора вправо через флаг переноса C
Команда SETB Установить бит C
Команда SJMP <метка> Короткий переход
Команда SUBB A, <байт источника> Вычитание с заемом AC, C, OV
Команда SWAP A Обмен тетрадами внутри аккумулятора
Команда XCH A, <байт> Обмен содержимого аккумулятора с переменной-байтом
Команда XCHD A,@R1 Обмен тетрадой
Команда XRL <байт-назначения>, <байт-источникa> Логическое "ИСКЛЮЧАЮЩЕЕ ИЛИ" для перемнных-байтов

Похожие статьи