- •Е.А. Попов, д.В. Крайнов Однокристальные микроЭвм семейства mcs-51 (мк51)
- •Введение
- •1. Общие сведения об однокристальных микроэвм семейства mcs-51
- •2. Архитектура и конструктивные особенности микроконтроллера i8051
- •2.1. Центральный процессор
- •2.1.1 Арифметико-логическое устройство
- •2.1.2. Устройство управления и синхронизации
- •2.1.3. Программный счетчик
- •2.2. Организация памяти мк51
- •2.2.1. Память данных
- •2.2.2. Память программ
- •2.3. Интерфейс ввода – вывода
- •2.3.1. Параллельные порты
- •2.3.1.1. Особенности схемных решений параллельных портов
- •2.3.2. Последовательный порт
- •2.3.2.1. Особенности работы последовательного порта
- •2.3.2.2. Установка скорости приема – передачи данных
- •2.3.3. Таймер/счетчики
- •2.3.3.1. Режимы работы таймеров/счетчиков
- •2.3.3.2. Работа с таймерами/счетчиками
- •2.3.4. Устройство управления прерываниями (система прерываний)
- •3. Функционирование мк51
- •4. Система команд однокристальных микроэвм семейства мк51
- •4.1. Способы адресации
- •4.2. Общая характеристика системы команд мк51
- •4.2.1. Oбозначения в описаниях команд
- •4.2.2. Типы (форматы) команд
- •4.2.3. Типы операндов
- •4.2.4. Группы команд
- •4.2.4.1. Команды пересылки данных
- •4.2.4.3. Команды логических операций
- •4.2.4.4. Команды операций над битами
- •4.2.4.5. Команды передачи управления
- •Заключение
- •Библиографический список
- •Оглавление
- •4. Система команд однокристальных микро-эвм семейства
- •4.1.5.1. Команды пересылки данных…………………….106
- •Однокристальные микроЭвм семейства mcs-51 (мк51)
- •346428, Г. Новочеркасск, ул. Просвещения, 132
4.2.2. Типы (форматы) команд
Всего микроЭВМ выполняют 13 типов команд, формат которых зависит от количества операндов и полноты представления адреса, и которые приведены в табл. 17 [5]. Как следует из нее, первый байт команды всегда содержит код операции (КОП), а второй и третий (если они присутствуют в команде) – адреса операндов или их непосредственные значения.
Таблица 17
-
Тип команды
Первый байт D7...D0
Второй байт D7...D0
Третий байт D7...D0
тип 1
коп
тип 2
коп
#d
тип 3
коп
ad
тип 4
коп
bit
тип 5
коп
rel
тип 6
коп
а7...a0
тип 7
коп
ad
#d
тип 8
коп
ad
rel
тип 9
коп
add
ads
тип 10
коп
#d
rel
тип 11
коп
bit
rel
тип 12
коп
ad16h
ad16l
тип 13
коп
#d16h
#d16l
Тип 1 – сюда относятся однобайтовые команды, имеющие только код операции, например RETY (возврат из подпрограммы обработки прерывания), и команды с неявной и регистровой адресацией, например: ANL A,R1 (логическое умножение содержимого аккумулятора и содержимого регистра R1), CPL A (инверсия содержимого аккумулятора).
Тип 2 – сюда относятся двухбайтовые команды с применением неявной, регистровой и непосредственной адресации, например: ADD A,#01H (сложение содержимого аккумулятора с числом 01H), MOV R2,#02H (запись в регистр R2 числа 02Н).
Тип 3 – сюда относятся двухбайтовые команды с применением неявной, регистровой и прямой адресацией, например:
ORL A,22H (логическое сложение содержимого аккумулятора и содержимого ячейки ОЗУ с адресом 22Н), MOV R2, 20H (перемещение в регистр R2 содержимого ячейки ОЗУ с адресом 20Н).
Тип 4 – в группу входит большинство двухбайтовых команд операций с битами с прямой адресацией (bit), например: SETB 01Н (установить бит с прямым адресом 01Н – второй бит ячейки ОЗУ с адресом 20Н), ORL С, 02Н (логическое сложение бита переноса CY и бита с прямым адресом 02Н). Бит переноса CY, выполняющий роль битового аккумулятора, адресуется неявным способом.
Тип 5 – в группу входят двухбайтовые команды передачи управления с использованием относительного адреса (rel), например: SJMP 0FH (переход на адрес программы, отстоящий от адреса команды SJMP на значение 0FH).
Тип 6 – в группу входят двухбайтовые команды перехода по абсолютному 11-разрядному адресу, в которых младший байт адреса (а7...a0) представлен во втором байте команды, а старшие три бита находятся в первом байте вместе с кодом операции, например:
ACALL1 5FH (вызов подпрограммы имеющей адрес, состоящий из 8 разрядов младшей части адреса 5FH, и 3 разрядов старшей части адреса 001B).
Тип 7 – в группу входят трехбайтовые команды с прямой и непосредственной адресацией, например: MOV 27Н, #01Н (переместить в ячейку ОЗУ с прямым адресом 27Н число 01Н).
Тип 8 – сюда относятся трехбайтовые команды передачи управления с прямым адресом операнда (ad) и относительным адресом перехода (rel), например: DJNZ 24H,1EH (декремент операнда в ячейке ОЗУ с прямым адресом 24Н и переход по относительному адресу 1ЕН, если операнд не равен нулю).
Тип 9 – сюда относится трехбайтовая команда перемещения операнда с двумя прямыми адресами операнда источника (ads) и операнда приемника (add), например: MOV 20H, P2 (переместить операнд из порта Р2 в ячейку ОЗУ с прямым адресом 20Н).
Тип 10 - сюда относится трехбайтовая команда условного перехода – сравнение содержимого аккумулятора (А) и непосредственного операнда (#d) и переход по относительному адресу (rel), например: CJNE A,#08H,2FH.
Тип 11 – сюда входят трехбайтовые команды передачи управления с проверкой состояния бита по прямому адресу (bit), с последующим переходом по относительному адресу (rel), например:
JNB Р1.1, 2FH.
Тип 12 – сюда относятся трехбайтовые команды передачи управления с прямым 16-разрядным адресом, например:
LCALL 17FAH.
Тип 13 – сюда относится трехбайтовая команда загрузки непосредственного 16-разрядного операнда в регистр DPTR –
MOV DPTR#17FAH.
