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