Расширение адресуемого пространства

Расширение адресуемого пространства до 1 Мбайт достигается только при выполнении команд ELD, ELDB, EST, ESTB с помощью расширенной индексной адресации. При этом в качестве индекса используется 24-разрядное число, выбираемое из указанного в команде регистра, с номером, кратным четырем. Смещение также имеет 24 разряда, задаваемых тремя байтами команды. Младшие 20 разрядов результата суммирования индекса и смещения служат для адресации операнда во внутренней или внешней памяти.

Используя один из вариантов индексной адресации, можно реализовать прямую адресацию. Как отмечено в разделе 1.2, два младших байта регистрового файла занимает «нулевой» регистр (ZERO REG), который имеет нулевое значение всех 16 битов. Если использовать этот регистр в качестве индексного, то формируется адрес, значение которого равно заданному в команде смещению. Таким образом, индексная адресация с указанием нулевого регистра в качестве индексного обеспечивает прямую адресацию операнда.

Следует отметить, что в командах, использующих несколько адресов операндов (двух-, трехадресные), только один из операндов может выбираться с помощью непосредственной, косвенно-регистровой или индексной адресации, для остальных операндов должна использоваться регистровая адресация. В данном микроконтроллере регистровые файлы занимают младшие 1024 позиции адресного пространства, поэтому к ним можно обращаться с помощью косвенно-регистровой или индексной адресации, как и к внешней памяти. Указатель стека является одним из регистров младшего файла, поэтому для обращения к стеку также может использоваться косвенно-регистровая или индексная адресация. Например, косвенно-регистровая адресация с указанием номера регистра 18Н позволяет выбрать содержимое вершины стека; индексная адресация с указанием 18Н в качестве номера индексного регистра обеспечивает выборку любой ячейки стека, если задать в качестве смещения соответствующее положительное число.

Микроконтроллер 8XC196NP выполняет набор из 118 команд, которые реализуют четыре основных группы операций: пересылка, арифметические и логические операции, управление программой, управление процессором. Длина команд составляет от 1 до 7 байтов. Ниже даются описания и форматы всех команд. Для каждой команды приводятся мнемокод и код операции (первый байт команды), который может содержать двухбитовое поле аа, определяющее используемый способ адресации операнда:

аа = 00 — регистровая;

аа в 01 — непосредственная;

аа = 10 — косвенно-регистровая;

аа = 11 — индексная.

При описании команд используются следующие обозначения:

baop,waop — 8(byte)- или 16огс1)-разрядный операнд, адресуемый указанным в команде (поле аа) способом;

breg, vvreg, treg, lreg — 8-, 16-, 24-, 32-разрядные числа (операнды или адреса), выбираемые из регистра младшего файла, номер которого (breg), (wreg), (treg), (lreg) указан в соответствующем байте команды; номера (wreg) должны быть четными, номера (treg), (lreg) — кратными четырем.

В приложении 2 для каждой команды указаны число байтов и количество тактов, требуемых для ее выполнения. Приведена также таблица кодов операций, которая может использоваться для ассемблирования-дизассембли-рования команд при отладке программ.

Comments are closed.