Языки программирования микропроцессоров.
Основы программирования микропроцессоров.
МП выполняет только то, что предписывается командами, составляющими программу, поэтому для решения какой-либо задачи она должна быть детально проработана. В ходе такой проработки формулируются условия задачи, выделяются исходные данные и результаты, которые должны быть получены. После этого выбирается метод решения задачи и определяется четкая последовательность действий над данными, приводящая к получению требуемого результата, т.е. алгоритм решения задачи. Составление алгоритма является важнейшим этапом решения задачи. Написание программы, т.е. программирование осуществляется последовательной заменой каждого действия алгоритма соответствующими командами. Используемый для написания программы набор команд и правил их применения называется языком программирования.
Если программа составлена на основе системы команд используемого МП, то говорят, что программа написана на языке низкого уровня. Поскольку каждый МП имеет свою систему команд, то языки низкого уровня ориентированы на конкретные МП и поэтому называются также машинно-ориентированными языками.
Язык низкого уровня, использующий команды в машинных кодах, называется машинным языком. Программа, написанная на машинном языке, называется объектной программой. Эта единственная форма программы доступная пониманию MП. Однако писать программы на машинном языке неудобно, поскольку команды, представленные машинными кодами, трудно отождествить с их назначением, а в самих машинных кодах легко перепутать 0 и 1. Кроме того, нужно отслеживать адреса всех команд, чтобы иметь возможность при необходимости обратиться к той или иной команде.
Для устранения указанных недостатков прибегают к представлению команд МП их мнемоническими обозначениями. Язык низкого уровня, в котором используется мнемонические обозначения команд и символические имена адресов и операндов, называется языком ассемблера. При работе с МП программирование на языке ассемблера является наиболее распространенным.
Помимо языков низкого уровня существуют также языки высокого уровня. В этих языках команды, представляемые условными обозначениями, определяют действия, ориентированные на эффективное решение задач определенного класса. Например, для программирования на ЭВМ используется язык высокого уровня БЕЙСИК. Этот язык предназначен для решения инженерных задач и позволяет с помощью отдельных команд производить вычисления логарифмов, синусов, квадратных корней и других математических функций. Из других языков высокого уровня отметим ПАСКАЛЬ - для создания системного и прикладного программного обеспечения, СИ - для создания системных и прикладных программ с учетом особенностей аппаратных средств.
В последнее время большую популярность приобретают объектно-ориентированные языки программирования, позволяющие разрабатывать прикладное программное обеспечение, ориентированное на создание развитого графического интерфейса (к таким языкам относятся Visual Basic, Delphi и др.). Программирование в этом случае значительно упрощается, т.к. нет необходимости в программировании стандартных часто встречающихся и уже запрограммированных алгоритмов, а достаточно выбрать из библиотеки необходимый компонент, задать исходные данные, сформулировать его свойства и правильно связать с основной программой.
Программы, написанные с использованием условных обозначений, т.е. программы, написанные на языке ассемблера и языках высокого уровня называются исходными программами. Поскольку исходные программы не воспринимаются МП, то после написания они должны быть переведены (транслированы) в объектные программы. Для осуществления такой трансляции используются специальные программы, называемые трансляторами.
Основное преимущество языка ассемблера по сравнению с языками высокого уровня заключается в возможности эффективного использования особенностей МП. При этом могут быть получены программы оптимальные с точки зрения занимаемого ими объема памяти и времени выполнения.
Однако написание программы на языке ассемблера сопряжено с трудностями, обусловленными тем, что язык ассемблера более тесно связан с особенностями МП, чем с особенностями решаемой задачи. Программист должен хорошо знать структуру МП, организацию его работы, систему его команд. Поскольку в систему команд МП входят те команды, которые просто реализовать аппаратными средствами, а не те, которые ориентированы на эффективное решение задач, то при написании программы много времени затрачивается на программирование отдельных операций. Даже такие простые операции, как суммирование или сравнение чисел, реализуются последовательностью команд.
Программисту, пишущему программу на языке высокого уровня, не нужно знать особенности работы МП и систему его команд. При этом, в результате того, что каждая команда языка высокого уровня соответствует последовательности из нескольких команд языка ассемблера, время написания программы значительно сокращается. Однако языки высокого уровня обладают тем недостатком, что объем получаемой объектной программы, а отсюда и время ее выполнения будут больше в случае трансляции с языка высокого уровня, чем с языка ассемблера.
Это объясняется тем, что при трансляции с языка высокого уровня программа-транслятор не учитывает особенности работы МП и поэтому не обнаружит способов улучшения программы, которые очевидны опытному программисту, пишущему программу на языке ассемблера.
Применительно к микропроцессорным системам недостатки языков высокого уровня в настоящее время преобладают над их достоинствами и поэтому программы для этих систем в большинстве случаев пишутся на языке ассемблера.