- •Микропроцессорные устройства
- •4.2.1.3 Специальный режим использования порта р0:
- •10 Примеры схем включения омэвм………………………………………...……..……………..73
- •Введение
- •1 Общая характеристика омэвм к1816ве751
- •2 Условное графическое обозначение омэвм к1816ве751 и назначение ее отдельных выводов
- •3 Структура омэвм к1816ве751 и ее описание
- •3.1 Блок управления и синхронизации микроЭвм
- •3.2 Блок арифметико-логического устройства (алу)
- •3.3 Резидентная память данных
- •3.4 Резидентная память программ
- •3.5 Блок прерываний
- •3.6 Блок таймеров – счетчиков
- •3.7 Блок последовательного порта (интерфейса)
- •3.8 Параллельные порты ввода-вывода
- •3.9 Схема десятичной коррекции аккумулятора (сдка)
- •3.10 Внутренний тактовый генератор (osc)
- •3.11 Резидентная шина данных
- •3.12 Регистры
- •4 Особенности функционирования и применение омэвм в различных режимах
- •4.1 Использование таймеров-счётчиков
- •4.2 Использование параллельных портов ввода-вывода
- •4.2.1 Особенности работы порта р0
- •4.2.1.1 Особенности работы р0 с вп (впп или впд)
- •4.2.1.2 Особенности работы р0 в качестве портов ввода/вывода
- •4.2.1.2.1 Вывод данных через р0
- •4.2.1.2.2 Ввод данных через р0
- •4.2.1.3 Специальный режим использования порта р0:
- •4.2.2 Особенности работы порта р1
- •4.2.3 Особенности работы порта р2
- •4.2.4.1.2 Выполнение портом р3 альтернативных функций входа
- •4.2.4.2 Работа р3 в качестве порта вывода
- •4.2.4.3 Работа р3 в качестве порта ввода
- •4.3 Применение последовательного порта
- •4.3.1 Работа последовательного порта в режиме 0
- •4.3.1.1 Передача в режиме 0
- •4.3.1.2 Приём в режиме 0
- •4.3.2 Работа последовательного порта в режиме 1
- •4.3.2.1 Передача в режиме 1
- •4.3.2.2 Приём в режиме 1
- •4.3.3 Работа последовательного порта в режимах 2 и 3
- •4.3.4 Скорость передачи-приёма данных через последовательный порт
- •4.3.5 Пример программирования последовательного порта омэвм
- •4.3.6 Особенности межконтроллерного обмена информацией в локальных управляющих сетях
- •4.4 Особенности структуры прерываний
- •4.5 Организация пошагового режима работы
- •4.6 Организация памяти
- •4.6.1 Особый режим работы памяти омэвм
- •4.7 Расширение резидентной (внутренней) системы ввода-вывода (рсвв/выв)
- •5 Система команд
- •5.1 Способы адресации операндов
- •5.2 Команды передачи данных
- •5.3 Арифметические команды
- •5.4 Логические команды
- •5.5 Операции с битами
- •5.6 Команды передачи управления
- •6 Программирование и проверка омэвм км1816ве751
- •7 Программирование бита защиты памяти
- •8 Режим холостого хода и пониженного энергопотребления
- •8.1 Режим холостого хода
- •8.2 Режим микропотребления
- •8.3 Режим пониженного потребления для омэвм серии 1816 (n-моп)
- •9 Начальная инициализация омэвм
- •10 Примеры схем включения омэвм
- •Список литературы
5 Система команд
Система команд ОМЭВМ предоставляет большие возможности обработки данных, обеспечивает реализацию логических, арифметических операций, а также управление в режиме реального времени. Реализована побитовая, потетрадная (4 бита), побайтовая (8 бит) и 16-разрядная обработка данных.
БИС семейства МК51 – 8-разрядная ОМЭВМ: ПЗУ, ОЗУ, регистры специального назначения, АЛУ и внешние шины имеют байтовую организацию. Двухбайтовые данные используются только регистром-указателем (DPTR) и счетчиком команд (РС). Следует отметить, что регистр-указатель данных может быть использован как двухбайтовый регистр DPTR или как два однобайтовых регистра специального назначения DPH и DPL. Счетчик команд всегда используется как двухбайтовый регистр.
Набор команд ОМЭВМ имеет 42 мнемонических обозначения (аббревиатур) команд для конкретизации 33 функций этой системы.
Синтаксис большинства команд ассемблерного языка ОМЭВМ состоит из мнемонического обозначения функции, вслед за которым идут операнды, указывающие методы адресации и типы данных. Различные типы данных или режимы адресации определяются установленными операндами, а не изменениями мнемонических обозначений. Например, аббревиатура "MOV" используется восемнадцатью различными командами для обработки трех типов данных (битов, байтов, адресов) в различных адресных пространствах.
Мнемонические обозначения функций однозначно связаны с конкретными комбинациями способов адресации и типами данных. Всего в системе команд возможно 111 таких сочетаний, которые в зависимости от их функционального назначения можно условно разбить на пять групп:
команды передачи данных (таблица 21);
арифметические команды (таблица 22);
логические операции (таблица 23);
операции с битами (таблица 24);
команды передачи управления (таблица 25).
Названные таблицы (21…25) дают достаточно полную характеристику каждой из 111 базовых команд:
название команды (в краткой форме описывает выполняемую функцию);
мнемокод (включает в себя мнемонику команды и описание операндов, участвующих в операции);
код операции команды (КОП);
тип команды (Т);
длину команды в байтах (Б);
количество машинных циклов, требуемых для выполнения команды (Ц);
комментарий.
Таблица 21 – Группа команд передачи данных | |||||||
| |||||||
№ |
Название команды |
Мнемокод |
КОП |
Т |
Б |
Ц |
Операция |
1 |
Пересылка в аккумулятор из регистра (n=0..7) |
MOV A, Rn |
11101rrr |
1 |
1 |
1 |
(A) (Rn) |
2 |
Пересылка в аккумулятор прямоадресуемого байта |
MOV A, ad |
11100101 |
3 |
2 |
1 |
(A) (ad) |
3 |
Пересылка в аккумулятор байта из РПД (i=0,1) |
MOV A, @Ri |
1110011i |
1 |
1 |
1 |
(A) РПД(Ri) |
4 |
Загрузка в аккумулятор константы |
MOV A, #D8 |
01110100 |
2 |
2 |
1 |
(A) D8 |
5 |
Пересылка в регистр (n=0..7) из аккумулятора |
MOV Rn, A |
11111rrr |
1 |
1 |
1 |
(Rn) (A) |
6 |
Пересылка в регистр прямоадресуемого байта |
MOV Rn, ad |
10101rrr |
3 |
2 |
2 |
(Rn) (ad) |
7 |
Загрузка в регистр (n=0..7) константы |
MOV Rn, #D8 |
01111rrr |
2 |
2 |
1 |
(Rn) D8 |
8 |
Пересылка по прямому адресу аккумулятора |
MOV ad, A |
11110101 |
3 |
2 |
1 |
(ad) (A) |
9 |
Пересылка по прямому адресу регистра |
MOV ad, Rn |
10001rrr |
3 |
2 |
2 |
(ad) (Rn) |
10 |
Пересылка прямоадресуемого байта по прямому адресу |
MOV add, ads |
10000101 |
9 |
3 |
2 |
(add) (ads) |
11 |
Пересылка байта из РПД по прямому адресу |
MOV ad, @Ri |
1000011i |
3 |
2 |
2 |
(ad) РПД(Ri) |
12 |
Пересылка по прямому адресу константы |
MOV ad, #D8 |
01110101 |
7 |
3 |
2 |
(ad) D8 |
13 |
Пересылка в РПД из аккумулятора |
MOV @Ri, A |
1111011i |
1 |
1 |
1 |
РПД(Ri) (A) |
14 |
Пересылка в РПД прямоадресуемого байта |
MOV @Ri, ad |
0110011i |
3 |
2 |
2 |
РПД(Ri) (ad) |
15 |
Пересылка в РПД константы |
MOV @Ri, #D8 |
0111011i |
2 |
2 |
1 |
РПД(Ri) D8 |
16 |
Загрузка регистра-указателя данных |
MOV DPTR, #D16 |
10010000 |
13 |
3 |
2 |
(DPTR) D16 |
17 |
Пересылка в аккумулятор байта из ПП |
MOVC A, @A+DPTR |
10010011 |
1 |
1 |
2 |
(A) ПП((A) + (DPTR)) |
18 |
Пересылка в аккумулятор байта из ПП |
MOVC A, @A+PC |
10000011 |
1 |
1 |
2 |
(PC) (PC) + 1 |
|
|
|
|
|
|
|
(A) ПП((A) + (PC)) |
19 |
Пересылка в аккумулятор байта из ВПД |
MOVX A, @Ri |
1110001i |
1 |
1 |
2 |
(A) ВПД(Ri) |
20 |
Пересылка в аккумулятор байта из расширенной ВПД |
MOVX A, @DPTR |
11100000 |
1 |
1 |
2 |
(A) ВПД(DPTR) |
21 |
Пересылка в ВПД из аккумулятора |
MOVX @Ri, A |
1111001i |
1 |
1 |
2 |
ВПД(Ri) (A) |
22 |
Пересылка в расширенную ВПД из аккумулятора |
MOVX @DPTR, A |
11110000 |
1 |
1 |
2 |
ВПД(DPTR) (A) |
23 |
Загрузка в стек |
PUSH ad |
11000000 |
3 |
2 |
2 |
(SP) (SP) + 1 |
|
|
|
|
|
|
|
РПД(SP) (ad) |
24 |
Извлечение из стека |
POP ad |
11010000 |
3 |
2 |
2 |
(ad) РПД(SP) |
|
|
|
|
|
|
|
(SP) (SP) - 1 |
25 |
Обмен аккумулятора с регистром |
XCH A, Rn |
11001rrr |
1 |
1 |
1 |
(A) (Rn) |
26 |
Обмен аккумулятора с прямоадресуемым байтом |
XCH A, ad |
11000101 |
3 |
2 |
1 |
(A) (ad) |
27 |
Обмен аккумулятора с байтом из PПД |
XCH A, @Ri |
1100011i |
1 |
1 |
1 |
(A) РПД(Ri) |
28 |
Обмен младшей тетрады аккумулятора с младшей |
XCHD A, @Ri |
1101011i |
1 |
1 |
1 |
(A0-3) РПД(Ri)0-3 |
|
тетрадой байта РПД |
|
|
|
|
|
|
Таблица 22 – Группа команд арифметических операций | |||||||
| |||||||
№ |
Название команды |
Мнемокод |
КОП |
Т |
Б |
Ц |
Операция |
1 |
Сложение аккумулятора с регистром (n=0..7) |
ADD A, Rn |
00101rrr |
1 |
1 |
1 |
(A) (A) + (Rn) |
2 |
Сложение аккумулятора с прямоадресуемым байтом |
ADD A, ad |
00100101 |
3 |
2 |
1 |
(A) (A) + (ad) |
3 |
Сложение аккумулятора с байтом из РПД (i=0,1) |
ADD A, @Ri |
0010011i |
1 |
1 |
1 |
(A) (A) + РПД(Ri) |
4 |
Сложение аккумулятора с константой |
ADD A, #D8 |
00100100 |
2 |
2 |
1 |
(A) (A) + D8 |
5 |
Сложение аккумулятора с регистром и переносом |
ADDC A, Rn |
00111rrr |
1 |
1 |
1 |
(A) (A) + (Rn) + (C) |
6 |
Сложение аккумулятора с прямоадресуемым байтом и переносом |
ADDC A, ad |
00110101 |
3 |
2 |
1 |
(A) (A) + (ad) + (C) |
7 |
Cложение аккумулятора с байтом из РПД и переносом |
ADDC A, @Ri |
0011011i |
1 |
1 |
1 |
(A) (A) + РПД(Ri) + (C) |
8 |
Cложение аккумулятора с константой и переносом |
ADDC A, #D8 |
00110100 |
2 |
2 |
1 |
(A) (A) + D8 + (C) |
9 |
Десятичная коррекция аккумулятора (после сложения двух |
DA A |
11010100 |
1 |
1 |
1 |
Если (A3-0) > 9V(AC)=1, |
|
операндов, представленных в упакованном BCD-коде) |
|
|
|
|
|
то (А7-0) (A7-0) + 6 затем |
|
|
|
|
|
|
|
если (A7-4) > 9V (C)=1, то |
|
|
|
|
|
|
|
(A7-4) (A7-4) + 6 |
10 |
Вычитание из аккумулятора регистра и заема |
SUBB A, Rn |
10011rrr |
1 |
1 |
1 |
(A) (A) - (C) - (Rn) |
11 |
Вычитание из аккумулятора прямоадресуемого байта и заема |
SUBB A, ad |
10010101 |
3 |
2 |
1 |
(A) (A) - (C) - (ad) |
12 |
Вычитание из аккумулятора байта РПД и заема |
SUBB A, @Ri |
1001011i |
1 |
1 |
1 |
(A) (A) - (C) - РПД(Ri) |
13 |
Вычитание из аккумулятора константы и заема |
SUBB A, #D8 |
10010100 |
2 |
2 |
1 |
(A) (A) - (C) - D8 |
14 |
Инкремент аккумулятора |
INC A |
00000100 |
1 |
1 |
1 |
(A) (A) + 1 |
15 |
Инкремент регистра |
INC Rn |
00001rrr |
1 |
1 |
1 |
(Rn) (Rn) + 1 |
16 |
Инкремент прямоадресуемого байта |
INC ad |
00000101 |
3 |
2 |
1 |
(ad) (ad) + 1 |
17 |
Инкремент байта в РПД |
INC @Ri |
0000011i |
1 |
1 |
1 |
РПД(Ri) РПД(Ri) + 1 |
18 |
Инкремент указателя данных |
INC DPTR |
10100011 |
1 |
1 |
2 |
(DPTR) (DPTR) + 1 |
19 |
Декремент аккумулятора |
DEC A |
00010100 |
1 |
1 |
1 |
(A) (A) - 1 |
20 |
Декремент регистра |
DEC Rn |
00011rrr |
1 |
1 |
1 |
(Rn) (Rn) - 1 |
21 |
Декремент прямоадресуемого байта |
DEC ad |
00010101 |
3 |
2 |
1 |
(ad) (ad) - 1 |
22 |
Декремент байта в РПД |
DEC @Ri |
0001011i |
1 |
1 |
1 |
РПД(Ri) РПД(Ri) - 1 |
23 |
Умножение аккумулятора на регистр В |
MUL AB |
10100100 |
1 |
1 |
4 |
Если (А)х(В) > 255, то (B)(A) (A)x(B); если (А)х(В) < 255, то (A) (A)x(B) |
24 |
Деление аккумулятора на регистр В |
DIV AB |
10000100 |
1 |
1 |
4 |
(A)(A)/(B)—целая часть (В) R ((А) / (В)) — остаток от деления |
Таблица 23 – Группа команд логических операций | ||||||||
| ||||||||
№ |
Название команды |
Мнемокод |
КОП |
Т |
Б |
Ц |
Операция | |
1 |
Логическое И аккумулятора и регистра |
ANL A, Rn |
01011rrr |
1 |
1 |
1 |
(A) (A) (Rn) | |
2 |
Логическое И аккумулятора и прямоадресуемого байта |
ANL A, ad |
01010101 |
3 |
2 |
1 |
(A) (A) (ad) | |
3 |
Логическое И аккумулятора и байта из РПД |
ANL A, @Ri |
0101011i |
1 |
1 |
1 |
(A) (A) РПД(Ri) | |
4 |
Логическое И аккумулятора и константы |
ANL A, #D8 |
01010100 |
2 |
2 |
1 |
(A) (A) D8 | |
5 |
Логическое И прямоадресуемого байта и аккумулятора |
ANL ad, A |
01010010 |
3 |
2 |
1 |
(ad) (ad) (A) | |
6 |
Логическое И прямоадресуемого байта и константы |
ANL ad, #D8 |
01010011 |
7 |
3 |
2 |
(ad) (ad) D8 | |
7 |
Логическое ИЛИ аккумулятора и регистра |
ORL A, Rn |
01001rrr |
1 |
1 |
1 |
(A) (A) V (Rn) | |
8 |
Логическое ИЛИ аккумулятора и прямоадресуемого байта |
ORL A, ad |
01000101 |
3 |
2 |
1 |
(A) (A) V (ad) | |
9 |
Логическое ИЛИ аккумулятора и байта из РПД |
ORL A, @Ri |
0100011i |
1 |
1 |
1 |
(A) (A) V РПД(Ri) | |
10 |
Логическое ИЛИ аккумулятора и константы |
ORL A, #D8 |
01000100 |
2 |
2 |
1 |
(A) (A) V D8 | |
11 |
Логическое ИЛИ прямоадресуемого байта и аккумулятора |
ORL ad, A |
01000010 |
3 |
2 |
1 |
(ad) (ad) V (A) | |
12 |
Логическое ИЛИ прямоадресуемого байта и константы |
ORL ad, #D8 |
01000011 |
7 |
3 |
2 |
(ad) (ad) V D8 | |
13 |
Исключающее ИЛИ аккумулятора и регистра |
XRL A, Rn |
01101rrr |
1 |
1 |
1 |
(A) (A) (Rn) | |
14 |
Исключающее ИЛИ аккумулятора и прямоадресуемого байта |
XRL A, ad |
01100101 |
3 |
2 |
1 |
(A) (A) (ad) | |
15 |
Исключающее ИЛИ аккумулятора и байта РПД |
XRL A, @Ri |
0110011i |
1 |
1 |
1 |
(A) (A) РПД(Ri) | |
16 |
Исключающее ИЛИ аккумулятора и константы |
XRL A, #D8 |
01100100 |
2 |
2 |
1 |
(A) (A) D8 | |
17 |
Исключающее ИЛИ прямоадресуемого байта и аккумулятора |
XRL ad, A |
01100010 |
3 |
2 |
1 |
(ad) (ad) (A) | |
18 |
Исключающее ИЛИ прямоадресуемого байта и константы |
XRL ad, #D8 |
01100011 |
7 |
3 |
2 |
(ad) (ad) D8 | |
19 |
Сброс аккумулятора |
CLR A |
11100100 |
1 |
1 |
1 |
(A) 0 | |
20 |
Инверсия аккумулятора |
CPL A |
11110100 |
1 |
1 |
1 |
(A) ( ) | |
21 |
Сдвиг аккумулятора влево циклический |
|
RL A |
00100011 |
1 |
1 |
1 |
(An+1) (An), n=0..6, (A0) (A7) |
22 |
Сдвиг аккумулятора влево через перенос |
|
RLC A |
00110011 |
1 |
1 |
1 |
(An+1) (An), n=0..6, (A0) (C), (C) (A7) |
23 |
Сдвиг аккумулятора вправо циклический |
|
RR A |
00000011 |
1 |
1 |
1 |
(An) (An+1), n=0..6, (A7) (A0) |
24 |
Сдвиг аккумулятора вправо через перенос |
|
RRC A |
00010011 |
1 |
1 |
1 |
(An) (An+1), n=0..6, (A7) (C), (C) (A0) |
25 |
Обмен местами тетрад в аккумуляторе |
SWAP A |
11000100 |
1 |
1 |
1 |
(A3-0) (A7-4) |
Таблица 24 – Группа команд операций с битами | |||||||
| |||||||
№ |
Название команды |
Мнемокод |
КОП |
Т |
Б |
Ц |
Операция |
1 |
Сброс переноса |
CLR C |
11000011 |
1 |
1 |
1 |
(C) 0 |
2 |
Сброс бита |
CLR bit |
11000010 |
4 |
2 |
1 |
(b) 0 |
3 |
Установка переноса |
SETB C |
11010011 |
1 |
1 |
1 |
(C) 1 |
4 |
Установка бита |
SETB bit |
11010010 |
4 |
2 |
1 |
(b) 1 |
5 |
Инверсия переноса |
CPL C |
10110011 |
1 |
1 |
1 |
(C) /(C) |
6 |
Инверсия бита |
CPL bit |
10110010 |
4 |
2 |
1 |
(b) /(b) |
7 |
Логическое И переноса и бита |
ANL C, bit |
10000010 |
4 |
2 |
2 |
(C) (C) (b) |
8 |
Логическое И переноса и инверсии бита |
ANL C,/bit |
10110000 |
4 |
2 |
2 |
(C) (C) () |
9 |
Логическое ИЛИ переноса и бита |
ORL C, bit |
01110010 |
4 |
2 |
2 |
(C) (C) V (b) |
10 |
Логическое ИЛИ переноса и инверсии бита |
ORL C,/bit |
10100000 |
4 |
2 |
2 |
(C) (C) V () |
11 |
Пересылка бита в перенос |
MOV C, bit |
10100010 |
4 |
2 |
1 |
(C) (b) |
12 |
Пересылка переноса в бит |
MOV bit, C |
10010010 |
4 |
2 |
2 |
(b) (C) |
Таблица 25 – Группа команд передачи управления | |||||||||
| |||||||||
№ |
Название команды |
Мнемокод |
КОП |
Т |
Б |
Ц |
Операция | ||
1 |
Длинный переход в полном объеме памяти программ |
LJMP ad16 |
00000010 |
12 |
3 |
2 |
(PC) ad16 | ||
2 |
Абсолютный переход внутри страницы в 2 Кбайта |
AJMP ad11 |
a10a9a800001 |
6 |
2 |
2 |
(PC) (PC) + 2 | ||
|
|
|
|
|
|
|
(PC10-0) ad11 | ||
3 |
Короткий относительный переход внутри страницы в 256 байт |
SJMP rel |
10000000 |
5 |
2 |
2 |
(PC) (PC) + 2 | ||
|
|
|
|
|
|
|
(PC) (PC) + rel | ||
4 |
Косвенный переход |
JMP @A + DPTR |
01110011 |
1 |
1 |
2 |
(PC) (A) + (DPTR) | ||
5 |
Переход, если аккумулятор равен нулю |
JZ rel |
01100000 |
5 |
2 |
2 |
(PC) (PC) + 2, если (A) = 0, | ||
|
|
|
|
|
|
|
то (PC) (PC) + rel | ||
6 |
Переход, если аккумулятор не равен нулю |
JNZ rel |
01110000 |
5 |
2 |
2 |
(PC) (PC) + 2, если (A) 0, | ||
|
|
|
|
|
|
|
то (PC) (PC) + rel | ||
7 |
Переход, если перенос равен единице |
JC rel |
01000000 |
5 |
2 |
2 |
(PC) (PC) + 2, если (C) = 1, | ||
|
|
|
|
|
|
|
то (PC) (PC) + rel | ||
8 |
Переход, если перенос равен нулю |
JNC rel |
01010000 |
5 |
2 |
2 |
(PC) (PC) + 2, если (C) = 0, | ||
|
|
|
|
|
|
|
то (PC) (PC) + rel | ||
9 |
Переход, если бит равен единице |
JB bit, rel |
00100000 |
11 |
3 |
2 |
(PC) (PC) + 3, если (b) = 1, | ||
|
|
|
|
|
|
|
то (PC) (PC) + rel | ||
10 |
Переход, если бит равен нулю |
JNB bit, rel |
00110000 |
11 |
3 |
2 |
(PC) (PC) + 3, если (b) = 0, | ||
|
|
|
|
|
|
|
то (PC) (PC) + rel | ||
11 |
Переход, если бит установлен, с последующим сбросом бита |
JBC bit, rel |
00010000 |
11 |
3 |
2 |
(PC) (PC) + 3, если (b) = 1, | ||
|
|
|
|
|
|
|
то (b) 0 и (PC) (PC) + rel | ||
12 |
Декремент регистра и переход, если не нуль |
DJNZ Rn, rel |
11011rrr |
5 |
2 |
2 |
(PC) (PC) + 2, (Rn) (Rn) -1, | ||
|
|
|
|
|
|
|
если (Rn) 0,то (PC)(PC) +rel | ||
13 |
Декремент прямоадресуемого байта и переход, если не нуль |
DJNZ ad, rel |
11010101 |
8 |
3 |
2 |
(PC) (PC) + 3, (ad) (ad) -1, | ||
|
|
|
|
|
|
|
если (ad) 0,то (PC) (PC) +rel | ||
14 |
Сравнение аккумулятора с прямоадресуемым байтом и |
CJNE A, ad, rel |
10110101 |
8 |
3 |
2 |
(PC) (PC) + 3, если (A) (ad), | ||
|
переход, если не равно |
|
|
|
|
|
то (PC)(PC)+rel,если(A)< (ad), | ||
|
|
|
|
|
|
|
то (С) 1, иначе (C) 0 | ||
15 |
Сравнение аккумулятора с константой и переход, |
CJNE A, #D8, rel |
10110100 |
10 |
3 |
2 |
(PC) (PC) + 3, если (A) D8, |
| |
|
если не равно |
|
|
|
|
|
то (PC)(PC)+ rel,если(A) < D8, |
| |
|
|
|
|
|
|
|
то (С) 1, иначе (C) 0 |
| |
16 |
Сравнение регистра с константой и переход, если не равно |
CJNE Rn, #D8, rel |
10111rrr |
10 |
3 |
2 |
(PC) (PC) + 3, если (Rn) D8, |
| |
|
|
|
|
|
|
|
то (PC)(PC)+rel,если(Rn)< D8, |
| |
|
|
|
|
|
|
|
то (С) 1, иначе (C) 0 |
| |
17 |
Сравнение байта в РПД с константой и переход, если не |
CJNE @Ri, #D8,rel |
1011011i |
10 |
3 |
2 |
(PC) (PC) + 3, если РПД(Ri) |
| |
|
равно |
|
|
|
|
|
D8, то (PC) (PC) + rel, если |
| |
|
|
|
|
|
|
|
РПД(Ri) < D8, то (С) 1, иначе |
| |
|
|
|
|
|
|
|
(C) 0 |
| |
18 |
Длинный вызов подпрограммы |
LCALL ad16 |
00010010 |
12 |
3 |
2 |
(PC) (PC) +3, (SP) (SP) + 1, |
| |
|
|
|
|
|
|
|
РПД(SP)(PC7-0), (SP) (SP)+ |
| |
|
|
|
|
|
|
|
1, РПД(SP) (PC8-15), |
| |
|
|
|
|
|
|
|
(PC) ad16 |
| |
19 |
Абсолютный вызов подпрограммы в пределах страницы |
ACALL ad11 |
a10a9a810001 |
6 |
2 |
2 |
(PC) (PC) +2, (SP) (SP) + 1, |
| |
|
в 2 Кбайта |
|
|
|
|
|
РПД(SP) (PC7-0), (SP) (SP)+ |
| |
|
|
|
|
|
|
|
1, РПД(SP) (PC8-15), |
| |
|
|
|
|
|
|
|
(PC) ad11 |
| |
20 |
Возврат из подпрограммы |
RET |
00100010 |
1 |
1 |
2 |
(PC15-8) РПД(SP),(SP)(SP)-1, |
| |
|
|
|
|
|
|
|
(PC7-0) РПД(SP),(SP) (SP)-1 |
| |
21 |
Возврат из подпрограммы обработки прерывания |
RETI |
00110010 |
1 |
1 |
2 |
(PC15-8) РПД(SP),(SP)(SP)-1, |
| |
|
|
|
|
|
|
|
(PC7-0) РПД(SP),(SP) (SP)-1 |
| |
22 |
Холостая команда |
NOP |
00000000 |
1 |
1 |
1 |
(PC) (PC) + 1 |
| |
|
| ||||||||
|
Примечание. Ассемблер допускает использование обобщенного имени команд JMP и CALL, которые в процессе трансляции заменяются оптимальными по формату командами перехода (AJMP, SJMP, LJMP) или вызова (ACALL, LCALL). |
|
Все команды ОМЭВМ можно разбить на тринадцать типов/форматов (рисунок 30). Первый байт команды любого типа (формата) всегда содержит КОП. Второй и третий байты включают в себя либо адреса операндов, либо непосредственные операнды.
|
D7 . . . . D0 |
|
|
|
| |
1 |
КОП |
|
D7 . . . . D0 |
|
| |
|
|
| ||||
2 |
КОП |
|
D8 |
|
| |
|
|
|
|
|
| |
3 |
КОП |
|
ad |
|
| |
|
|
|
|
|
| |
4 |
КОП |
|
bit |
|
| |
|
|
|
|
|
| |
5 |
КОП |
|
rel |
|
| |
|
|
|
|
|
| |
6 |
a10a9a8 |
КОП |
|
a7 . . . . . . a0 |
|
D7 . . . . D0 |
|
|
|
|
| ||
7 |
КОП |
|
ad |
|
D8 | |
|
|
|
|
|
| |
8 |
КОП |
|
ad |
|
rel | |
|
|
|
|
|
| |
9 |
КОП |
|
add |
|
ads | |
|
|
|
|
|
| |
10 |
КОП |
|
D8 |
|
rel | |
|
|
|
|
|
| |
11 |
КОП |
|
bit |
|
rel | |
|
|
|
|
|
| |
12 |
КОП |
|
ad16H |
|
ad16L | |
|
|
|
|
|
| |
13 |
КОП |
|
D16H |
|
D16L |
Рисунок 29 – Типы команд МК51
В машинном коде команда занимает одну, две или три ячейки памяти размером 1 байт (3 байта памяти).
Команды выполняются за один, два или четыре (умножение и деление) машинных цикла.
При частоте тактового генератора, равной 12 МГц, одноцикловые команды выполняются за 1 мкс, двухцикловые – за 2 мкс и т.д.
Из 111 типов команд 64 выполняются за 1 мкс (12 тактов), 45 команд – за 2 мкс (24 такта) и две команды – умножение и деление (MUL, DIV) выполняются за 4 мкс (48 тактов).
В таблице 26 приведены команды, влияющие на установку флагов.
Таблица 26 – Команды, влияющие на установку флагов
Мнемоника |
Флаги |
Мнемоника |
Флаги | ||||
C |
OV |
AC |
C |
OV |
AC | ||
ADD |
x |
x |
x |
CLR C |
0 |
|
|
ADDC |
x |
x |
x |
CPL C |
x |
|
|
SUBB |
x |
x |
x |
ANL C, bit |
x |
|
|
MUL |
0 |
x |
|
ANL C, /bit |
x |
|
|
DIV |
0 |
x |
|
ORL C, bit |
x |
|
|
DA А |
x |
|
|
ORL C, /bit |
x |
|
|
RRC |
x |
|
|
MOV C, bit |
x |
|
|
RLC |
x |
|
|
CJNE |
x |
|
|
SETB C |
1 |
|
|
|
|
|
|
Примечания:
x – флаг равен 0 или 1.
Операции над содержимым регистра флагов PSW или его отдельных разрядов также влияют на установку флагов.