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

 
 
 
«Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.»
Martin Golding
Русский | Українська


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




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