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

 
 
 
«Отладка кода вдвое сложнее, чем его написание. Так что если вы пишете код настолько умно, насколько можете, то вы по определению недостаточно сообразительны, чтобы его отлаживать.»
Brian W. Kernighan.
Русский | Українська


Микропроцессоры и микроконтроллеры :: Принципы программирования 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»