Типы операндов
Состав операндов включает в себя операнды четырёх типов:
биты, 4-битные цифры, байты и 16-битные слова.
Микроконтроллер имеет 128 программно-управляемых флагов пользователя. Имеется также возможность адресации отдельных битов блока регистров специальных функций и портов. Для адресации битов используется прямой 8-битный адрес (bit). Косвенная адресация битов невозможна. Карты адресов отдельных битов представлены на рис. 6.
Четырёхбитные операнды используются только при операциях обмена SWAP и XCHD.
Восьмибитным операндом может быть ячейка памяти программ (ПП) или данных (резидентной (РПД) или внешней (ВПД)), константа (непосредственный операнд), регистры специальных функций, а также порты ввода/вывода. Порты и регистры специальных функций адресуются только прямым способом. Байты памяти могут адресоваться также и косвенным образом через адресные регистры R0, R1, DPTR и PC.
Двухбайтные операнды - это константы и прямые адреса, для представления которых используются второй и третий байты команды.
Адреса | (D7) | (D0) | ||||||
7FH | ||||||||
2FH | 7F | 7E | 7D | 7C | 7B | 7A | ||
2EH | ||||||||
2DH | 6F | 6E | 6D | 6C | 6B | 6A | ||
2CH | ||||||||
2BH | 5F | 5E | 5D | 5C | 5B | 5A | ||
2AH | ||||||||
29H | 4F | 4E | 4D | 4C | 4B | 4A | ||
28H | ||||||||
27H | 3F | 3E | 3D | 3C | 3B | 3A | ||
26H | ||||||||
25H | 2F | 2E | 2D | 2C | 2B | 2A | ||
24H | ||||||||
23H | 1F | 1E | 1D | 1C | 1B | 1A | ||
22H | ||||||||
21H | 0F | 0E | 0D | 0C | 0B | 0A | ||
20H | ||||||||
1FH | ||||||||
Банк 3 | ||||||||
18H | ||||||||
17H | ||||||||
Банк 2 | ||||||||
10H | ||||||||
0FH | ||||||||
Банк 1 | ||||||||
08H | ||||||||
07H | ||||||||
Банк 0 | ||||||||
00H |
Рисунок 2.1 Карта адресуемых битов в резидентной памяти данных
Система команд семейства MCS-51 содержит 111 базовых команд, которые по функциональному признаку можно подразделить на пять:
Ø пересылки данных;
Ø арифметических операций;
Ø логических операций;
Ø операций над битами;
Ø передачи управления.
Формат команд – одно-, двух- и трехбайтовый, причем большинство команд (94) имеют формат один или два байта. Первый байт любых типа и формата всегда содержит код операции, второй и третий байты содержат либо адреса операндов, либо непосредственные операнды.
Состав операндов включает в себя операнды четырех типов: биты, тетрады (4 разряда), байты и 16-битные слова. Время исполнения команд составляет 1, 2 или 4 машинных цикла. При тактовой частоте 12 мГц длительность машинного цикла составляет 1 мкс, при этом 64 команды исполняются за 1 мкс, 45 команд - за 2 мкс и 2 команды (умножение и деление) - за 4 мкс.
Набор команд поддерживает следующие режимы адресации.
Прямая адресация (Direct Addressing). Операнд определяется 8-битным адресом в инструкции. Эта адресация используется только для внутренней памяти данных и регистров SFR.
Косвенная адресация (Indirect Addressing). В этом случае инструкция адресует регистр, содержащий адрес операнда. Данный вид адресации может применяться при обращении как к внутреннему, так и внешнему ОЗУ. Для указания 8-битных адресов могут использоваться регистры R0 и R1 выбранного регистрового банка или указатель стека SP.
Для 16-битной адресации используется только регистр "указатель данных" (DPTR - Data Pointer).
Регистровая адресация (Register Instruction). Данная адресация применяется для доступа к регистрам R0+R7 выбранного банка. Команды с регистровой адресацией содержат в байте кода операции трехбитовое поле, определяющее номер регистра. Выбор одного из четырех регистровых банков осуществляется программированием битов селектора банка (RS1, RS0) в PSW.
Непосредственная адресация (Immediate constants). Операнд содержится непосредственно в поле команды вслед за кодом операции и может занимать один или два байта (data8, data16).
Индексная адресация (Indexed Addressing). Индексная адресация используется при обращении к памяти программ и только при чтении. В этом режиме осуществляется просмотр таблиц в памяти программ. 16-битовый регистр (DPTR или PC) указывает базовый адрес требуемой таблицы, а аккумулятор указывает на точку входа в нее. Адрес элемента таблицы находится сложением базы с индексом (содержимым аккумулятора).
Другой тип индексной адресации применяется в командах "перехода по выбору" (Case Jump). При этом адрес перехода вычисляется как сумма указателя базы и аккумулятора.
Неявная адресация (Register-Specific Instructions). Некоторые инструкции используют индивидуальные регистры (например, операции с аккумулятором, DPTR), при этом данные регистры не имеют адреса, указывающего на них; это заложено в код операции