Микропроцессоры и микроконтроллеры

 
 
 
«Человеку свойственно ошибаться, но для нечеловеческих ошибок нужен компьютер»
Русский | Українська


Микропроцессоры и микроконтроллеры :: Принципы программирования MSC-51 :: Способы адресации данных

Способы адресации данных

Система команд МК51 предполагает четыре основных типа адресации:

- прямую - адрес операнда или перехода содержится в команде;

- непосредственную - операнд, который загружается, помещается во втором или во втором и третьем байтах команды;

- косвенную – адрес ячейки ВПД (ВПП) находится (вычисляется) в каком-нибудь специальном регистре, ссылка на который содержится в команде;

- регистровую - источником или приемником операнда является регистр активного банка, ссылка на который содержится в команде.

Кроме того, в распоряжении программиста есть такие разновидности косвенной адресации:

- относительная - в команде содержится не весь абсолютный адрес перехода, а лишь смещение в байтах от текущего содержимого РС;

- страничная - в регистре-фиксаторе порта P2 содержится адрес области памяти, выведенной на границу блока размером 256 байтов (так называемый номер страницы), а в другом регистре (R0 ли R1) находится смещение по странице в байтах. Исполнительный адрес ячейки памяти формируется стыковкой содержимого P2 (старшая часть адреса) и содержимого регистров R0 ли R1 (младшая часть адреса);

- базовая - указательный регистр DPTR содержит начальный (так называемый базовый) абсолютный адрес области памяти, где находятся данные произвольной структуры. К адресу базы прибавляется байтовое смещение для определения адреса нужной ячейки памяти. Источником смещения является аккумулятор. Смещение - это беззнаковое число в диапазоне 0...255.

Использование символических имен

Благодаря наличию компилятора Ассемблер МК51 предусматривает возможность присвоения символических имен как байтам РПД, адресам ВП и РПД, непосредственным данным (константам), так и отдельным битам.

Символические имена делятся на такие:

- зарезервированные (ACC, PSW, SBUF, TCON, и т.д.). Много из таких имен упоминались при рассмотрении аппаратных ресурсов МК51;

- имена, определяемые пользователем с помощью директив Ассемблера.

Таким образом, на уровне Ассемблера в команде может присутствовать или прямой адрес байта, или его символическое имя:

MOV PSW, #0 и MOV 0D0H, #0 - это одно и то же.

Адресация битов

Все отдельно адресуемые биты можно поделить на две группы:

1) биты из 16-байтовой области ОЗУ (0-127) - рис.2.6 в пособии;

2) биты блока аппаратных регистров (128-255) - рис.2.7 в пособии.

Биты из области 1 доступны путем указания в команде прямого адреса бита или символического имени бита, присвоенного пользователем раньше. Биты из области 2 доступны или через прямой адрес бита (рис.2.7), или с использованием зарезервированного имени (C, OV, F0). Кроме того, адресовать любой бит из области 1 и 2 можно с использованием битового селектора:

АСС.4 - четвертый бит аккумулятора;

PSW.5, TCON.2 и т.д. – с использованием зарезервированного имени регистра;

V1.3, MY_2.0 - с использованием символического имени, предоставленного пользователем. Для битов не допускается косвенная адресация!




<< Предыдущая статья
«Элементы данных в МК51»