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

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


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

Характеристика функциональных групп команд

Все команды МК51 можно разделить на группы по функциональным признакам: передача данных, арифметические, логические, битовых операций, передача управления. Команды арифметических операций, логические, битовые операции и команды сравнения модифицируют четыре флага, которые находятся в регистре PSW:
Р - жестко связанный с содержимым аккумулятора. Если количество единиц в нем нечетное, то (Р)=1, иначе (Р)=0;
АСС - устанавливается в "1", если при суммировании (вычитании) возник межтетрадный перенос (заем) в аккумуляторе;
С - устанавливается в "1", если возник перенос из старшего (АСС.7) бита в аккумуляторе или заем в старший бит;
OV - устанавливается в "1", если в результате суммирования/вычитания знаковых чисел возникло переполнение, то есть этот флаг свидетельствует о факте переполнения без указания типа - положительное или отрицательное;
При делении (OV)=1, если выполнялось деление на нуль.
При умножении (OV)=1, если результат больше 255.

Потоки передачи данных

Соответственно структуре памяти МК51 можно выделить три информационных потока: пересылка из ВПП в РПД, пересылка между ВПД и РПД, обмен данными внутри РПД (включая РСФ).

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

КОМАНДЫ ПЕРЕДАЧИ ДАННЫХ являются наиболее многочисленной группой. Они охватывают все потоки передачи, рассмотренные ранее. В таблице "Система команд МК51" команды сгруппированы по общему приемнику информации.

КОМАНДЫ АРИФМЕТИЧЕСКИХ и ЛОГИЧЕСКИХ ОПЕРАЦИЙ характеризуются тем, что для них одним из операндов всегда является содержимое аккумулятора, однако результат может помещаться или в аккумулятор, или на место второго операнда, если это прямо адресованный байт РПД или блока РСФ.

КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ. К данной группе относятся команды, которые реализуют безусловные и условные переходы, вызовы подпрограммы и возврат из подпрограммы.

По способу адресации перехода можно выделить такие типы:

1. ДЛИННЫЙ переход - осуществляется по АП в объеме 64К. В команде помещается полный 16-битовый абсолютный адрес перехода, который загружается в (РС). Мнемоника команд начинается с буквы L.

2. АБСОЛЮТНЫЙ переход - осуществляется в границах страницы ВПП (РПП) размером 2048 байтов (2К). В команде помещаются только 11 бит адреса (a0...a10). При выполнении команды в вычисленном адресе следующей команды (РС)=(РС)+2 младшие 11 бит заменяются на a0...a10, взятые с команды. Формат - номер 6. Мнемоника начинается с символа А.

3. КОРОТКИЙ ОТНОСИТЕЛЬНЫЙ переход - разрешает передать управления в границах - 128...+127 байтов относительно адреса команды, следующей за командой перехода, то есть относительно (РС)=(РС)+2 или (РС)=(РС)+3. Относительный адрес перехода rel помещается во втором или третьем байте команды. Мнемоника начинается с символа S для безусловных переходов. Команды условных переходов также реализованы по этому формату.

4. КОСВЕННЫЙ переход - разрешает передать управление по косвенному адресу, который формируется по содержимому регистра DPTR и смещению из аккумулятора. Позволяет организовать переход по адресу, вычисленному в процессе работы программы.

Ассемблер предполагает использование обобщенной мнемоники команд JМР и CALL, которые в процессе трансляции заменяются на оптимальные и допустимые по формату команды перехода (AJMP, SJMP, LJMP) или вызова (ACALL, LCALL).




<< Предыдущая статья
«Способы адресации данных»