Ответы на вопросы (953577), страница 14
Текст из файла (страница 14)
в данный момент обслуживается запрос прерывания равного или высокого уровня приоритета;
текущий машинный цикл — не последний в цикле выполняемой команды;
выполняется команда RETI или любая команда, связанная с обращением к регистрам IЕ или IP
Отметим, что если флаг прерывания был установлен, но по одному из указанных выше условий не получил обслуживания и к моменту окончания блокировки уже сброшен, то запрос прерывания теряется и нигде не запоминается.
По аппаратно сформированному коду LCALL система прерывания помещает в стек только содержимое счетчика команд (PC) и загружает в него адрес вектора соответствующей подпрограммы обслуживания. По адресу вектора должна быть расположена команда безусловной передачи управления (JMP) к начальному адресу подпрограммы обслуживания прерывания. В случае необходимости она должна начинаться командами записи в стек (PUSH) слова состояния программы (PSW), аккумулятора, расширителя, указателя данных и т.д. и должна заканчиваться командами восстановления из стека (POP). Подпрограммы обслуживания прерывания должны завершаться командой RETI, по которой в счетчик команд перезагружается из стека сохраненный адрес возврата в основную программу. Команда RET также возвращает управление прерванной основной программе, но при этом не снимут блокировку прерываний, что приводит к необходимости иметь программный механизм анализа окончания процедуры обслуживания данного прерывания.
-
Система команд микроконтроллера 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) имеют формат один или два байта. Первый байт любых типа и формата всегда содержит код операции, второй и третий байты содержат либо адреса операндов, либо непосредственные операнды.