Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Общая характеристика системы команд




 

2.7.1. Все микроконтроллеры семейства MCS-51 имеют единую систему команд, общее количество которых равно 111.

2.7.2. Команды имеют различные форматы: 1 байт (49 команд), 2 байта (46 команд), 3 байта (16 команд). Первый байт команды любого формата содержит код операции, второй и третий байты – адреса операндов или непосредственные операнды.

2.7.3. Данные (операнды и результаты выполнения операций) могут иметь следующие форматы: бит, 4-битное слово, байт, 16-битное слово.

2.7.4. Команды могут выполняться в течение 1-го машинного цикла (64 команды), 2-х машинных циклов (45 команд) или 4 машинных циклов (2 команды). Машинный цикл имеет фиксированную длительность, равную 12-ти периодам тактового генератора (см. подраздел 2.9).

2.7.5. Команды могут быть объединены в следующие группы:

1) команды передачи данных,

2) команды операций с аккумулятором,

3) команды операций с битами,

4) команды передачи управления,

5) команды арифметических операций,

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

2.7.6. Мнемонические обозначения всех команд МК семейства MCS-51 на языке ассемблера приведены в табл. 2.4, где:

addr – прямой адрес байта (число или символическое имя),

bit – прямой адрес бита (число или символическое имя),

data – значение константы (число),

rel – 8-битный относительный адрес (метка),

addr11 – 11-битный абсолютный адрес (метка),

addr16 – 16-битный абсолютный адрес (метка),

A – аккумулятор,

PC – программный счетчик,

(A), (addr), (Rn) – содержимое аккумулятора, ячейки памяти, регистра.

Таблица 2.4

СИСТЕМА КОМАНД МИКРОКОНТРОЛЛЕРОВ СЕМЕЙСТВА MCS-51

Мнемокод Наименование команды Операция
КОМАНДЫ ПЕРЕДАЧИ ДАННЫХ
MOV A,Rn Пересылка в аккумулятор из регистра (n = 0 ¸ 7) (A) (Rn)
MOV A,addr Пересылка в аккумулятор прямоадресуемого байта (A) (addr)
MOV A,@Ri Пересылка в аккумулятор косвенноадресуемого байта (i = 0, 1) (A) ((Ri))
MOV A,#data Пересылка в аккумулятор константы (A) data
MOV Rn,A Пересылка в регистр из аккумулятора (i = 0 ¸ 7) (Rn) (A)
MOV Rn,addr Пересылка в регистр прямоадресуемого байта (i = 0 ¸ 7) (Rn) (addr)
MOV Rn,#data Пересылка в регистр константы (i = 0 ¸ 7) (Rn) data
MOV addr,A Пересылка аккумулятора по прямому адресу (addr) (A)
MOV addr,Rn Пересылка регистра по прямому адресу (i = 0 ¸ 7) (addr) (Rn)
MOV addrD,addrS Пересылка прямоадресуемого байта по прямому адресу (addrD) (addrS)
MOV addr,@Ri Пересылка косвенноадресуемого байта по прямому адресу (i = 0, 1) (addr) ((Ri))
MOV addr,#data Пересылка константы по прямому адресу (addr) data
MOV @Ri,A Пересылка аккумулятора по косвенному адресу (i = 0, 1) ((Ri)) (A)
MOV @Ri,addr Пересылка прямоадресуемого байта по косвенному адресу (i = 0, 1) ((Ri)) (addr)
MOV @Ri,#data Пересылка константы по косвенному адресу (i = 0, 1) ((Ri)) data
MOV DPTR,#data16 Загрузка указателя данных (DPTR) data16
MOVC A,@A+DPTR Пересылка косвенноадресуемого байта из памяти программ в аккумулятор (A) ((A)+(DPTR))
MOVC A,@A+PC Пересылка косвенноадресуемого байта из памяти программ в аккумулятор (PC) (PC)+1 (A) ((A)+(PC))

 

Таблица 2.4 (продолжение)

 

Мнемокод Наименование команды Операция
MOVX A,@Ri Пересылка косвенноадресуемого байта из внешней памяти данных в аккумулятор (8-бит. адрес, i = 0, 1) (A) ((Ri))
MOVX A,@DPTR Пересылка косвенноадресуемого байта из внешней памяти данных в аккумулятор (16-бит. адрес) (A) ((DPTR))
MOVX @Ri,A Пересылка аккумулятора во внешнюю память данных по косвенному адресу (8-бит. адрес, i = 0, 1) ((Ri)) (A)
MOVX @DPTR,A Пересылка аккумулятора во внешнюю память данных по косвенному адресу (16-бит. адрес) ((DPTR) (A)
PUSH addr Загрузка в стек (SP) (SP)+1 ((SP)) (addr)
POP addr Извлечение из стека (addr) ((SP)) (SP) (SP)-1
XCH A,Rn Обмен аккумулятора с регистром (i = 0 ¸ 7) (A) «(Rn)
XCH A,addr Обмен аккумулятора с прямоадресуемым байтом (A) «(addr)
XCH A,@Ri Обмен аккумулятора с косвенноадресуемым байтом (i = 0, 1) (A) «((Ri))
XCHD A,@Ri Обмен младшей тетрады аккумулятора с младшей тетрадой косвенноадресуемого байта (i = 0, 1) (A0-3) «((Ri)0-3)
КОМАНДЫ ОПЕРАЦИЙ С АККУМУЛЯТОРОМ
CLR A Очистка аккумулятора (A) 0
CPL A Инверсия аккумулятора (A) not (A)
INC A Инкремент аккумулятора (A) (A)+1
DEC A Декремент аккумулятора (A) (A) -1
RL A Циклический сдвиг аккумулятора влево (An+1) (An), n=0¸6 (A0) (A7)
RLC A Сдвиг аккумулятора влево через перенос (An+1) (An), n=0¸6 (A0) (C) (C) (A7)
RR A Циклический сдвиг аккумулятора вправо (An) (An+1), n=0¸6 (A7) (A0)

 

 

Таблица 2.4 (продолжение)

Мнемокод Наименование команды Операция
RRC A Сдвиг аккумулятора вправо через перенос (An) (An+1), n=0¸6 (A7) (C) (C) (A0)
SWAP A Перестановка тетрад в аккумуляторе (A0-3) «(A4-7)
DA A Десятичная коррекция аккумулятора Если (AC)=1 или А0-3 >9, то (A0-3) (A0-3)+6, затем, если (C)=1 или А4-7 >9, то (A4-7) (A4-7)+6
MUL AB Умножение аккумулятора на регистр В (B)(A) (A) × (B)
DIV AB Деление аккумулятора на регистр В (A).(B) (A) / (B)
КОМАНДЫ ОПЕРАЦИЙ С БИТАМИ
CLR C Сброс переноса (C) 0
CLR bit Сброс бита (bit) 0
SETB C Установка переноса (C) 1
SETB bit Установка бита (bit) 1
CPL C Инверсия переноса (C) not (C)
CPL bit Инверсия бита (bit) not (bit)
ANL C,bit Логическое И переноса и бита (C) (C) & (bit)
ANL C,/bit Логическое И переноса с инверсией бита (C) (C) & not(bit)
ORL C,bit Логическое ИЛИ переноса и бита (C) (C) V (bit)
ORL C,/bit Логическое ИЛИ переноса с инверсией бита (C) (C) V not(bit)
MOV C,bit Пересылка бита в перенос (C) (bit)
MOV bit,C Пересылка переноса в бит (bit) (C)
КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ
LJMP addr16 Длинный переход в полном адресном пространстве памяти программ (PC) addr16
AJMP addr11 Абсолютный переход в пределах страницы размером 2К байт (PC) (PC)+2 (PC0-10) addr11
SJMP rel Относительный переход внутри страницы размером 256 байт (PC) (PC)+2 (PC) (PC)+rel
JMP @A+DPTR Косвенный относительный переход (PC) (A)+(DPTR)

Таблица 2.4 (продолжение)

 

Мнемокод Наименование команды Операция
JNB bit,rel Переход, если бит не установлен (PC) (PC)+3, если (bit)=0, то (PC) (PC)+rel
JBC bit,rel Переход, если бит установлен, с последующим сбросом бита (PC) (PC)+3, если (bit)=1, то (bit) 0 и (PC) (PC)+rel
DJNZ Rn,rel Декремент регистра и переход, если содержимое не равно нулю (PC) (PC)+2, (Rn) (Rn) -1, если (Rn)¹0, то (PC) (PC)+rel
DJNZ addr,rel Декремент прямо адресуемого байта и переход, если содержимое не равно нулю (PC) (PC)+2, (addr) (addr) -1, если (addr) ¹ 0, то (PC) (PC)+rel
CJNE A,addr,rel Переход, если аккумулятор не равен прямоадресуемому байту (PC) (PC)+3, если (A) ¹ (addr), то (PC) (PC)+rel, если (A) < (addr), то (C) 1, иначе (C) 0
CJNE A,#data,rel Переход, если аккумулятор не равен константе (PC) (PC)+3, если (A) ¹ data, то (PC) (PC)+rel, если (A) < (addr), то (C) 1, иначе (C) 0
CJNE Rn,#data,rel Переход, если регистр не равен константе (PC) (PC)+3, если (Rn) ¹ data, то (PC) (PC)+rel, если (Rn) < (data), то (C) 1, иначе (C) 0
CJNE @Ri,#data,rel Переход, если косвенноадресуемый байт не равен константе (i = 0, 1) (PC) (PC)+3, если ((Ri)) ¹ data, то (PC) (PC)+rel, если ((Ri)) < (data), то (C) 1, иначе (C) 0

 

Таблица 2.4 (продолжение)

 

Мнемокод Наименование команды Операция
JZ rel Переход, если аккумулятор равен нулю (PC) (PC)+2, если (A)=0, то (PC) (PC)+rel
JNZ rel Переход, если аккумулятор не равен нулю (PC) (PC)+2, если (A)¹0, то (PC) (PC)+rel
JC rel Переход, если бит переноса установлен (PC) (PC)+2, если (С)=1, то (PC) (PC)+rel
JNC rel Переход, если бит переноса не установлен (PC) (PC)+2, если (С)=0, то (PC) (PC)+rel
JB bit,rel Переход, если бит установлен (PC) (PC)+3, если (bit)=1, то (PC) (PC)+rel
LCALL addr16 Длинный вызов подпрограммы (PC) (PC)+3, (SP) (SP) + 1, ((SP)) (PC0-7), (SP) (SP) + 1, ((SP)) (PC8-15), (PC) addr16
ACALL addr11 Абсолютный вызов подпрограммы в пределах страницы размером 2К байт (PC) (PC)+3, (SP) (SP) + 1, ((SP)) (PC0-7), (SP) (SP) + 1, ((SP)) (PC8-15), (PC0-10) addr11
RET Возврат из подпрограммы (PC8-15) ((SP)), (SP) (SP) - 1 (PC0-7) ((SP)), (SP) (SP) - 1
RETI Возврат из подпрограммы обработки прерывания (PC8-15) ((SP)), (SP) (SP) - 1 (PC0-7) ((SP)), (SP) (SP) - 1,
NOP Холостая операция (PC) (PC)+1

 

Таблица 2.4 (продолжение)

 

Мнемокод Наименование команды Операция
КОМАНДЫ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ
ADD A,Rn Сложение аккумулятора с регистром (n= 0 ¸ 7) (A) (A)+(Rn)
ADD A,addr Сложение аккумулятора с прямоадресуемым байтом (A) (A)+(addr)
ADD A,@Ri Сложение аккумулятора с косвенноадресуемым байтом (i = 0, 1) (A) (A)+((Ri))
ADD A,#data Сложение аккумулятора с константой (A) (A)+data
ADDC A,Rn Сложение аккумулятора с регистром и переносом (A) (A)+(Rn)+(C)
ADDC A,addr Сложение аккумулятора с прямоадресуемым байтом и переносом (A) (A)+ + (addr)+(C)
ADDC A,@Ri Сложение аккумулятора с косвенно-адресуемым байтом и переносом (i = 0, 1) (A) (A)+((Ri))+(C)
ADDC A,#data Сложение аккумулятора с константой и переносом (A) (A)+data+(C)
SUBB A,Rn Вычитание из аккумулятора регистра и заема (i = 0 ¸ 7) (A) (A)-(Rn)-(C)
SUBB A,addr Вычитание из аккумулятора прямоадресуемого байта и заема (A) (A)-(addr)-(C)
SUBB A,@Ri Вычитание из аккумулятора косвенноадресуемого байта и заема (i = 0, 1) (A) (A)-((Ri))-(C)
SUBB A,#data Вычитание из аккумулятора константы и заема (A) (A)-data-(C)
INC A Инкремент аккумулятора (A) (A)+1
INC Rn Инкремент регистра (i = 0 ¸ 7) (Rn) (Rn)+1
INC addr Инкремент прямоадресуемого байта (addr) (addr)+1
INC @Ri Инкремент косвенноадресуемого байта (i = 0, 1) ((Ri)) ((Ri))+1
INC DPTR Инкремент указателя данных (DPTR) (DPTR)+1
DEC A Декремент аккумулятора (A) (A) -1
DEC Rn Декремент регистра (i = 0 ¸ 7) (Rn) (Rn) -1

Таблица 2.4 (продолжение)

 

Мнемокод Наименование команды Операция
DEC addr Декремент прямоадресуемого байта (addr) (addr) -1
DEC @Ri Декремент косвенноадресуемого байта (i = 0, 1) ((Ri)) ((Ri)) -1
MUL AB Умножение аккумулятора на регистр В (B)(A) (A) × (B)
DIV AB Деление аккумулятора на регистр В (A).(B) (A) / (B)
DA A Десятичная коррекция аккумулятора Если (AC)=1 или А0-3 >9, то (A0-3) (A0-3)+6, затем, если (C)=1 или А4-7 >9, то (A4-7) (A4-7)+6
КОМАНДЫ ЛОГИЧЕСКИХ ОПЕРАЦИЙ
ANL A,Rn Логическое И аккумулятора и регистра (i = 0 ¸ 7) (A) (A) & (Rn)
ANL A,addr Логическое И аккумулятора и прямоадресуемого байта (A) (A) & (addr)
ANL A,@Ri Логическое И аккумулятора и косвенноадресуемого байта (i = 0, 1) (A) (A) & ((Ri))
ANL A,#data Логическое И аккумулятора и константы (A) (A) & data
ANL addr,A Логическое И прямоадресуемого байта и аккумулятора (addr) (addr) & A
ANL addr,#data Логическое И прямоадресуемого байта и константы (addr) (addr) & & data
ORL A,Rn Логическое ИЛИ аккумулятора регистра (i = 0 ¸ 7) (A) (A) V (Rn)
ORL A,addr Логическое ИЛИ аккумулятора и прямоадресуемого байта (A) (A) V (addr)
ORL A,@Ri Логическое ИЛИ аккумулятора и косвенноадресуемого байта (i = 0, 1) (A) (A) V ((Ri))
ORL A,#data Логическое ИЛИ аккумулятора и константы (A) (A) V data
ORL addr,A Логическое ИЛИ прямоадресуемого байта и аккумулятора (A) (addr) V (A)
ORL addr,#data Логическое ИЛИ прямоадресуемого байта и константы (A) (addr) V data

Таблица 2.4 (окончание)

 

Мнемокод Наименование команды Операция
XRL A,Rn Исключающее ИЛИ аккумулятора регистра (i = 0 ¸ 7) (A) (A) Å (Rn)
XRL A,addr Исключающее ИЛИ аккумулятора и прямоадресуемого байта (A) (A) Å (addr)
XRL A,@Ri Исключающее ИЛИ аккумулятора и косвенноадресуемого байта (i = 0, 1) (A) (A) Å ((Ri))
XRL A,#data Исключающее ИЛИ аккумулятора и константы (A) (A) Å data
XRL addr,A Исключающее ИЛИ прямоадресуемого байта и аккумулятора- (A) (addr) Å (A)
XRL addr,#data Исключающее ИЛИ прямоадресуемого байта и константы (A) (addr) Å data

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

Машинные коды всех операций, форматы команд (количество байтов) и времена их выполнения (количество циклов) приведены в прил. 1.

Таблица 2.5





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


Дата добавления: 2015-11-05; Мы поможем в написании ваших работ!; просмотров: 1464 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

В моем словаре нет слова «невозможно». © Наполеон Бонапарт
==> читать все изречения...

2168 - | 2109 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.009 с.