МПС

Принципы программирования микропроцессоров (Лекция)

ПЛАН ЛЕКЦИИ

1. Программирование микропроцессора

2. Машинно-ориентированные языки

3. Языки высокого уровня

4. Специализированные языки

 

1. Программирование микропроцессора

 

Принципиальным  достоинством  МП является программируемость. Это  означает,  что,  подавая  на вход МП команды, можно обеспечить нужную последовательность операций, т.е. реализацию определенного алгоритма.  Алгоритм  решаемой задачи может быть сколь угодно сложным,  необходимо лишь,  чтобы этот алгоритм был разбит на шаги в  соответствии  с  системой команд МП.  Поэтому система команд важна не только с точки зрения, что МП может делать, но и как выполняется алгоритм. Наличие или отсутствие какой-либо команды или группы команд может существенно повлиять на  выбор  МП  для  конкретного применения.

Возвращаясь к языково-программным классификационным характеристикам, нельзя не упомянуть о языках программирования.

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

 - машинный код;

 - автокод (язык ассемблера);

 - языки высокого уровня (процедурные языки - BASIC, FORTRAN, PASCAL, C, MODULA-2, ADA; и языки искусственного интеллекта - LISP, PROLOG, SMALLTALK, OCCAM).

 

2. Машинно-ориентированные языки

 

 Более понятные для ЭВМ - это так называемые машинно-ориентированные языки (машинный код и язык ассемблера). Более понятные для человека именуют языками высокого уровня.

 Программное обеспечение на машинно-ориентированном языке экономично в эксплуатации, однако сравнительно высокая трудоемкость и длительность разработки программного обеспечения обуславливают преимущественное применение их для создания и развития программного обеспечения драйверов и операционных систем с целью наилучшего использования аппаратных особенностей каждой конкретной ЭВМ.

 

3. Языки высокого уровня

 

 Алгоритмические языки (языки программирования высокого уровня общего назначения) являются машинно-независимыми, позволяют создавать компактные обозримые программы при относительно небольших затратах времени и труда программистов. Разработка программ значительно упрощается при использовании языков высокого уровня в качестве языков программирования. Однако при этом снижается эффективность программ по быстродействию и затратам памяти в сравнении с применением языка ассемблера. Но этот недостаток с лихвой перекрывается четкостью и легкостью написания программы.

 Языки высокого уровня в свою очередь подразделяются на языки процедурного (или императивного) и эвристического (декларативного) стиля программирования (языки искусственного интеллекта). Наиболее популярные языки программирования ПЭВМ высокого уровня приведены в таблице 1.

 

Таблица 1

Язык

Год разработки

Разработчик

Основное применение

FORTRAN

1954

Дж. Бэкус (США)

Математические расчеты, научные исследования

BASIC

1965

Дж. Кенеми (США)

Обучение, тестовые программы

PASCAL

1971

Н.Вирт (Швейцария)

Обучение, широкое применение

C

1972

Д.М.Ричи (США)

Системное программирование

MODULA-2

1981

Н.Вирт (Швейцария)

Разработка больших программных комплексов

LISP

1960

Дж. Маккарти (США)

Системы искусственного интеллекта

PROLOG

1971

А.Колмедауэр (Франция)

Принятие решений, логический вывод

SMALLTALK

Середина 1970-х

А.КейАнглия)

Системы диалога со средствами машинной графики

OCCAM

Начало 1980-х

Фирма INMOS(Англия)

Системы с параллельными процессами

 

 

 Кроме того, в настоящее время появились языки так называемого 4-го поколения - это языки СУБД, электронных таблиц, интегрированных систем и т.д., которые предназначены для решения узкого круга задач прикладного характера (например, обработка баз данных), но зато еще больше, по сравнению с языками общего назначения, снижают затраты времени и труда на создание выходного продукта.

 

4. Специализированные языки

 

 Опыт применения ПЭВМ для построения прикладных систем обработки данных показывает, что самым эффективным инструментом создания контроллера являются не универсальные языки высокого уровня, а узкоспециализированные языки - как правило языки высокого манипулирования с особенностями микропроцессора.

Система микропрограммирования является набором компактных программных продуктов для разработки программ для микропроцессоров. СМ реализована для работы на ряде компьютеров, от небольших 16-разрядных персональных машин до 32-разрядных суперминикомпьютеров.

В нем имеется ряд примеров использования как стандартных, так и имеющих особенности средств СМ. Отметим, что независимые средства ассемблера СМ очень просты и эффективны.

СМ ассемблеры - это мощные МАКРО-ассемблеры со средствами перемещения программ, с универсальными характеристиками и применением. Хотя ассемблеры созданы на базе одного и того же основного пакета, они обладают высокой степенью совместимости с ассемблерами разработчиков микропроцессоров. Основные предметы - это способы использования ассемблера, поддержка модульного программирования и связь с языками высокого уровня.

Все ассемблеры двухпроходные, выполняются как одна программа. Во время выполнения не создается временных файлов.

Все ассемблеры, так же как и ХLINK, используют для внутренних вычислений 32-разрядные структуры, что позволяет виртуально генерировать код любого размера (т.е. не существует предела в 64 кБайт, что могло бы затруднить использование процессоров типа 68000).

Для обеспечения совместимости внутри пакета было применено несколько компромиссных решений, с учетом совместимости с ассемблерами разработчиков микропроцессоров. Особенно это касается макро-конструкций, которые сильно различаются у различных разработчиков. Во многих отношениях, однако, СМ превосходит оригинальные ассемблеры.

Они должны быть совместимы по:

 - машинным командам (именам и синтаксису)

 - директивам определения констант (именам и синтаксису)

 - директивам распределения памяти (именам и синтаксису)

 - разделителям

 - меткам

 - основным операторам (+,-,*,/)

 - ORG и EQU

 

 Могут быть не совместимы по:

 - директивам перемещения

 - расширениям операторов

 - средствам условной трансляции

 - опциям и командам управления ассемблером

 - макросредствам.

Заметим, что средства, перечисленные в разделе "не совместимы", часто отличаются от оригинальных ассемблеров разработчиков только синтаксисом.

Наиболее популярными на сегодняшний день у программистов являются С-51 и Assembler 8051, так как оба они позволяют получать исходный код.