2-666-1400429854-11 (Система команд микроконтроллера i8051. Форматы представления данных и команд, группы команд, способы)
Описание файла
Документ из архива "Система команд микроконтроллера i8051. Форматы представления данных и команд, группы команд, способы", который расположен в категории "". Всё это находится в предмете "специальные предметы" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "к экзамену/зачёту", в предмете "специальные предметы" в общих файлах.
Онлайн просмотр документа "2-666-1400429854-11"
Текст из документа "2-666-1400429854-11"
-
Система команд микроконтроллера i8051. Форматы представления данных и команд, группы команд, способы адресации операндов. Обозначения, используемые при описании команд.
Общая характеристика.
Микро-ЭВМ рассматриваемого семейства являются типичными микропроцессорными устройствами с архитектурой SISC - со стандартным набором команд. Поэтому их система команд довольно обширна и включает в себя 111 основных команд. Их длина – один, два или три байта, причем большинство из них (94%) – одно- или двухбайтные. Все команды выполняются за один или два машинных цикла (соответственно 1 или 2 мкс при тактовой частоте 12 МГц), исключение – команды умножения и деления, которые выполняются за четыре машинных цикла (4 мкс). Микро-ЭВМ семейства 8051 используют прямую, непосредственную, косвенную и неявную, адресацию данных
В качестве операндов команд микро-ЭВМ семейства 8051 могут использовать отдельные биты, четырехбитные цифры, байты и двухбайтные слова.
Все эти черты обычны для набора команд любого SISC-процессора и по сравнению с RISC набором команд обеспечивает большую компактность программного кода и увеличение быстродействия при выполнении сложных операций.
В то же время, набор команд семейства 8051 имеет несколько особенностей, связанных с типичными функциями выполняемыми микроконтроллерами - управлением, для которого типичным является оперирование с одноразрядными двоичными сигналами, большое число операций ввода выводи и ветвлений программы.
Наиболее существенная особенность системы команд рассматриваемых микро ЭВМ это возможность адресации отдельных бит в резидентной памяти данных. Кроме того, как отмечалось, некоторые регистры блока регистров специальных функций также допускают адресацию отдельных бит. Карты адресов отдельных бит в резидентной памяти данных и в блоке регистров специальных функций.
Типы команд
Всего микро-ЭВМ выполняют 13 типов команд, они приведены в таблице. Как следует из нее, первый байт команды всегда содержит код операции (КОП), а второй и третий (если они присутствуют в команде) – адреса операндов или их непосредственные значения.
Тип | Первый байт | Второй байт | Третий байт |
тип 1 | коп |
|
|
тип 2 | коп | #d |
|
тип 3 | коп | ad |
|
тип 4 | коп | bit |
|
тип 5 | коп | rel |
|
тип 6 | коп | а7...a0 |
|
тип 7 | коп | ad | #d |
тип 8 | коп | ad | rel |
тип 9 | коп | ads | add |
тип 10 | коп | #d | rel |
тип 11 | коп | bit | rel |
тип 12 | коп | ad16h | ad16l |
тип 13 | коп | #d16h | #d16l |
Типы операндов
Состав операндов включает в себя операнды четырёх типов:
-
биты,
-
4-битные цифры,
-
байты
-
16-битные слова.
Микроконтроллер имеет 128 программно-управляемых флагов пользователя. Имеется также возможность адресации отдельных битов блока регистров специальных функций и портов. Для адресации битов используется прямой 8-битный адрес (bit). Косвенная адресация битов невозможна. Карты адресов отдельных битов представлены на рис. 6 .
Четырёхбитные операнды используются только при операциях обмена SWAP и XCHD.
Восьмибитным операндом может быть ячейка памяти программ (ПП) или данных (резидентной (РПД) или внешней (ВПД)), константа (непосредственный операнд), регистры специальных функций, а также порты ввода/вывода. Порты и регистры специальных функций адресуются только прямым способом. Байты памяти могут адресоваться также и косвенным образом через адресные регистры R0, R1, DPTR и PC.
Двухбайтные операнды - это константы и прямые адреса, для представления которых используются второй и третий байты команды.
Адреса | (D7) | (D0) | ||||||
7FH | ||||||||
2FH | 7F | 7E | 7D | 7C | 7B | 7A | 79 | 78 |
2EH | 77 | 76 | 75 | 74 | 73 | 72 | 71 | 70 |
2DH | 6F | 6E | 6D | 6C | 6B | 6A | 69 | 68 |
2CH | 67 | 66 | 65 | 64 | 63 | 62 | 61 | 60 |
2BH | 5F | 5E | 5D | 5C | 5B | 5A | 59 | 58 |
2AH | 57 | 56 | 55 | 54 | 53 | 52 | 51 | 50 |
29H | 4F | 4E | 4D | 4C | 4B | 4A | 49 | 48 |
28H | 47 | 46 | 45 | 44 | 43 | 42 | 41 | 40 |
27H | 3F | 3E | 3D | 3C | 3B | 3A | 39 | 38 |
26H | 37 | 36 | 35 | 34 | 33 | 32 | 31 | 30 |
25H | 2F | 2E | 2D | 2C | 2B | 2A | 29 | 28 |
24H | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 |
23H | 1F | 1E | 1D | 1C | 1B | 1A | 19 | 18 |
22H | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 |
21H | 0F | 0E | 0D | 0C | 0B | 0A | 09 | 08 |
20H | 07 | 06 | 05 | 04 | 03 | 02 | 01 | 00 |
1FH | ||||||||
Банк 3 | ||||||||
18H | ||||||||
17H | ||||||||
Банк 2 | ||||||||
10H | ||||||||
0FH | ||||||||
Банк 1 | ||||||||
08H | ||||||||
07H | ||||||||
Банк 0 | ||||||||
00H |
Группы команд.
Система команд семейства MCS-51 содержит 111 базовых команд, которые по функциональному признаку можно подразделить на пять:
-
пересылки данных;
-
арифметических операций;
-
логических операций;
-
операций над битами;
-
передачи управления.
Формат команд - одно-, двух- и трехбайтовый, причем большинство команд (94) имеют формат один или два байта. Первый байт любых типа и формата всегда содержит код операции, второй и третий байты содержат либо адреса операндов, либо непосредственные операнды.
Состав операндов включает в себя операнды четырех типов: биты, тетрады (4 разряда), байты и 16-битные слова. Время исполнения команд составляет 1, 2 или 4 машинных цикла. При тактовой частоте 12 МГц длительность машинного цикла составляет 1 мкс, при этом 64 команды исполняются за 1 мкс, 45 команд - за 2 мкс и 2 команды (умножение и деление) - за 4 мкс.
Набор команд MCS-51 поддерживает следующие режимы адресации.
-
Прямая адресация (Direct Addressing).Операнд определяется 8-битным адресом в инструкции. Эта адресация используется только для внутренней памяти данных и регистров SFR. Пример: команда sjmp label (переход по метке).
-
Косвенная адресация (Indirect Addressing).В этом случае инструкция адресует регистр, содержащий адрес операнда. Данный вид адресации может применяться при обращении как к внутреннему, так и внешнему ОЗУ. Для указания 8-битных адресов могут использоваться регистры R0 и R1 выбранного регистрового банка или указатель стека SP.
Для 16-битной адресации используется только регистр "указатель данных" (DPTR - Data Pointer). Пример: INC @R1 (инкремент байта в РПД, адрес которого находится в R1)
-
Регистровая адресация (Register Instruction).Данная адресация применяется для доступа к регистрам R0+R7 выбранного банка. Команды с регистровой адресацией содержат в байте кода операции трехбитовое поле, определяющее номер регистра. Выбор одного из четырех регистровых банков осуществляется программированием битов селектора банка (RS1, RS0) в PSW. Пример: INC R1 (инкремент регистра R1)
-
Непосредственная адресация (Immediate constants).Операнд содержится непосредственно в поле команды вслед за кодом операции и может занимать один или два байта (data8, data16). Пример: ADD A, #0Fh (сложение содержимого аккумулятора и константы Fh)
-
Индексная адресация (Indexed Addressing).Индексная адресация используется при обращении к памяти программ и только при чтении. В этом режиме осуществляется просмотр таблиц в памяти программ. 16-битовый регистр (DPTR или PC) указывает базовый адрес требуемой таблицы, а аккумулятор указывает на точку входа в нее. Адрес элемента таблицы находится сложением базы с индексом (содержимым аккумулятора). Пример: MOVC A, @A+DPTR (пересылка в аккумулятор байта из памяти программ)
Другой тип индексной адресации применяется в командах "перехода по выбору" (Case Jump). При этом адрес перехода вычисляется как сумма указателя базы и аккумулятора.
-
Неявная адресация (Register-Specific Instructions).Некоторые инструкции используют индивидуальные регистры (например, операции с аккумулятором, DPTR), при этом данные регистры не имеют адреса, указывающего на них; это заложено в код операции.
Пример: CLR A (очистка аккумулятора)