Бродин В. Б., Шагурин И. И. Микроконтроллеры (1999) (1095894), страница 7
Текст из файла (страница 7)
Внутреннее ПЗУ программ в модели 83С1961ч Р, размещенное на странице ОГН (адреса ОГ2080Н..ОГ2ГГГН), выбирается при значении внешнего сигнала ЕА = 1. Это же ПЗУ может выбираться со страницы ООН (адреса 2080Н..2ГГГН), если в регистре реконфигурации ССК1 установлено значение бита КЕМАР = 1. Байты конфигурации ССВО и ССВ1 загружаются в 8-разрядные регистры ССКО и ССК1 в процессе инициализации микроконтроллера после аппаратного или программного сброса. Восемнадцать 16-разрядных векторов, с помощью которых КПР формирует начальные адреса подпрограмм обработки прерываний (см.
раздел 1.4), хранятся в ячейках ПЗУ с адресами ОГ2030Н.,ОГ203ГН. В остальных ячейках этого раздела ПЗУ, зарезервированных для использования в последующих моделях микроконтроллеров, должно содержаться фиксированное значение ОГГН или 020Н (в ячейке с адресом ОГ2019Н). микгокоитголлагы сиивйствл мсв-вв 1.3. Способы адресации и система команд Микроконтроллер производит операции над 8- или 16-разрядными операндами, которые в зависимости от выполняемой команды воспринимаются как числа без знака: байт (ВУТЕ), слово (1лгОК1)) или числа со знаком: короткое целое (ЗНОКТ 1ХТЕСЕК) или обычное целое (1ХТЕСЕК) число.
Отдельные операции (сдвиги, умножение, деление) выполняются с 32-разрядными операндами, которыми могут служить двойное число без знака (РО()В(.Е %ОК1)) и длинное число со знаком (1О)ь(С 1ХТЕСЕК). Микроконтроллер использует байтную организацию памяти (см.раздел 1.2) с размещением младшего байта по меньшему (четному) адресу. Для выборки 16- разрядных операндов (ЪГОК1), 1ХТЕСЕК) следует использовать только четные адреса, а для выборки 32-разрядных операндов — адреса, кратные четырем. 1.3.1. Способы адрвсации Микроконтроллер реализует четыре основных способа адресации операндов: непосредственный; регистровый; косвенно-регистровый; индексный. При этом два последних способа имеют ряд модификаций. Неиосредстееиая адресация. Операндом является один (ВУТЕ, БНОКТ Пь(ТЕСЕК) или два (АМОКО, 1ХТЕСЕК) байта команды.
При этом только один из заданных командой операндов может задаваться непосредственно, для других операндов должна использоваться регистровая адресация. Регистровая адресация. Операнд выбирается из регистра, номер которого определяется одним из байтов команды. Таким образом адресуются 256 регистров младшего файла. Регистры старшего файла могут выбираться таким образом только, если оии кадрированы — перемещены в адресное окно младшего регистрового файла (см. раздел 1.2). Для выбора 16-разрядных операндов должны использоваться четные номера регистров, для выбора 32- разрядных операндов — адреса, кратные четырем.
Косвеиио-регистровая адресация. В этом случае операнд выбирается из внутренней или внешней памяти по адресу, заданному 16-разрядным содержимым регистра, номер которого указан в команде. Таким образом, адресом служит 16-разрядное слово, выбираемое из пары регистров младшего файла'. В числе этих рсгиетрои могут быть регистры старшего файла, иерсмегиепиыс а млалиий файл аутом кадрировании. 34 МИКРОКОНТРОЛЛЕРЫ АРХИТЕКТТРЯ. ПРОГРАММИРОВАНИЕ ИНТЕРФЕЙС В команде должен быть указан номер четного регистра, содержащего младший байт адреса, старший байт будет выбран из регистра со следующим нечетным номером (адресом).
Таким образом, объем адресуемой памяти ограничивается 64 Кбайтами. Чтобы адресовать полный объем памяти 1 Мбайт, используется расширенная косвенно-регистровая адресация, которая реализуется при выполнении команд ЕЕО, ЕЕОВ, ЕЯТ, ЕБТВ, ЕВМОЧ1, ЕВВ, ЕСАУЛ)., Е1МР Эти команды используГот в качестве адреса содержимое 20 младших разрядов из четырех рядом расположенных 8-разрядных регистров младшего файла, адресуемых заданным в команде номером младшего регистра, кратным четырем. При данном варианте косвенно-регистровой адресации младший разряд байта команды, определяющий номер регистра, должен иметь значение «О». Одним из вариантов косвенно-регистровой адресации является автоикрементная адресация, при которой содержимое регистра определяющего адрес операнда, автоматически увеличивается на 1 или 2 после выполнения команды.
Таким образом адресуется следующая ячейка памяти, что упрощает процедуру последовательной выборки операндов из массива данных. При операциях с байтами содержимое регистра, содержащего адрес операнда, увеличивается на 1, при операциях со словами — на 2. Аналогичное увеличение адреса может производиться и при выполнении команд ЕЕО, ЕЕОВ, БТ, ЯТВ, ЕВМОЧ1, использующих расширеннуто косвенно-регистровуто адресацию.
Таким образом реализуется вариант расширенной автоинкрементной адресации. Так как данные команды выполняют операции загрузки или записи в память, то такой вариант адресации эффективно использовать при пересылках массивов данных из внешней памяти в регистровый файл или наоборот. Признаком автоинкрементной адресации служит установка «1» в младшем разряде байта, указывающего номер содержащего адрес регистра. Так как фактический номер этого регистра должен быть четным или кратным четырем (прн расширенной адресации), то эта «1» не учитывается при формировании адреса. Индексная адресация.
В этом случае адрес операнда формируется путем суммирования содержимого заданного в команде регистра, который служит индексным регистром, и смещения, которое задается одним или двумя байтами команды. Индексный регистр содержит 16 разрядов, поэтому он должен иметь четный номер. Смещение представляет собой число со знаком, поэтому формируемый адрес может быть больше или меньше содержимого индексного регистра. МИКРОКОНТРОЛЛЕРЫ СЕМЕЙСТВА МС9.99 35 Возможны два варианта индексной адресации. Короткая индексная адресация использует 8-разрядное смещение, разрядность которого при сложении с индексом увеличивается до 16 путем расширения знака. Таким способом можно формировать адреса в диапазоне (1пт(ех)-128...(!пдех)+127.
Длинная индексная адресация использует 16-разрядное смещение, которое суммируется с 16-разрядным индексом без учета возникающего переноса. При этом можно получить любой адрес в пределах 64 Кбайт (на текущей странице). Коды операций для команд с короткой и длинной индексной адресацией совпадатот, по прн длинной индексной адресации в младшем бите второго байта команды, задающего четный номер индексного регистра, ставится «1» (как при автоннкрементной адресации), а при короткой индексной младший бит сохраняет значение «О». Расширение адресуемого пространства до 1 Мбайт достигается только при выполнении команд Е(.Р, Е(.1)В, ЕЯТ, ЕБТВ с помощью расширенной индексной адресации. При этом в качестве индекса используется 24-разрядное число, выбираемое из указанного в команде регистра, с номером, кратным четырем.
Смешение также имеет 24 разряда, задаваемых тремя байтами команды. Младшие 20 разрядов результата суммирования индекса и смещения служат для адресации операнда во внутренней или внешней памяти. Используя один из вариантов индексной адресации, можно реализовать прямую адресацию. Как отмечено в разделе 1.2, два младших байта регистрового файла занимает «нулевой» регистр (ХЕКО ВЕС), который имеет нулевое значение всех 16 битов.
Если использовать этот регистр в качестве индексного, то формируется адрес, значение которого равно заданному в команде смешению. Таким образом, индексная адресация с указанием нулевого регистра в качестве индексного обеспечивает прямую адресацию операнда. Следует отметить, что в командах, использующих несколько адресов операндов (двух-, трехадресные), только один из операндов может выбираться с помощью непосредственной, косвенно-регистровой или индексной адресации, для остальных операндов должна использоваться регистровая адресация. В данном микроконтроллере регистровые файлы занимают младшие 1024 позиции адресного пространства, поэтому к ним можно обращаться с помощью косвенно-регистровой или индексной адресации, как и к внешней памяти. Указатель стека является одним из регистров младшего файла, поэтому для обращения к стеку также может использоваться косвенно-регистровая или индексная адресация.
Например, косвенно-регистровая адресация с указанием номера регистра 18Н позволяет выбрать содержимое вершины стека; индексная адресация с указанием 18Н в качестве номера индексного регистра обеспечивает выборку любой ячейки стека, если задать в качестве смешения соответствующее положительное число. 9* мнкноконтлоллюы. ллкнтакттлл.
плогллмминоакниа интанелйс Микроконтроллер 8ХС196НР выполняет набор из 118 команд, которые реализуют четыре основных группы операций: пересылка, арифметические и логические операции, управление программой, управление процессором. Длина команд составляет от 1 до 7 байтов. Ниже датотся описания и форматы всех команд. Для каждой команды приводятся мнемокод и код операции (первый байт команды), который может содержать двухбитовое поле аа, определяющее используемый способ адресации операнда: аа - 00 — регистровая; аа - 01 — непосредственная; аа - !Π— косвенно-регистровая; аа - 11 — индексная.
При описании команд используются следующие обозначения: Ьаор,тчаор — 8(Ьусе)- или 16(тчогт!)-разрядный операнд, адресуемый указан- ным в команде (поле аа) способом; Ь~ей, ттгей, ггей, !гей — 8-, 16-, 24-, 32-разрядные числа (операнды или адреса), выбираемые из регистра младшего файла, номер которого (Ъгей), (тятей), (сгей), (!гея) указан в соответствующем байте команды; номера (тятей) должны быть четными, номера (сгей), (!гея) — кратными четырем. В приложении 2 для каждой команды указаны число байтов и количество тактов, требуемых для ее выполнения. Приведена также таблица кодов операций, которая может использоваться для ассемблирования-дизассемблирования команд при отладке программ. 1.3.2. Команды пересылки Форматы команд этой группы приведены в табл.
1.8. При выполнении данных команд содержимое регистра признаков (РЯЮ) не изменяется, за исключением команд РУЯНЕ, Р()БНА, РОРЕ РОРА, производящих обращение к этому регистру. Основные операции пересылки — загрузка операнда из памяти в регистр (Е!),П)В, ЕОВЯЕ, ЬОВЕЕ, ЕЕО, ЕЫЭВ) и запоминание содержимого регистра в памяти (ЯТ, ЯТВ, ЕБТ, ЕБТВ). Каждая из операций имеет два варианта: пересылка слова и пересылка байта (эти команды содержат в мнемокоде букву В).