Процедуры, программы, директивы ассемблера. Отладка прикладного программного обеспечения микроконтроллеров

Процедуры:

Процедура представляет собой группу команд для решения конкретной подзадачи и обладает средствами получения управления из точки вызова задачи более высокого приоритета и возврата управления в эту точку.

Таким образом возможны три варианта описания процедуры:

в начале сегмента кода,

в конце сегмента кода,

в середине сегмента кода.

Для работы с процедурами предназначены команды CALL и RET. С помощью команды CALL выполняется вызов процедуры. Эта команда работает почти как безусловный переход, но одновременно в стек сохраняется текущее значение регистра IP. Это позволяет потом вернуться к тому месту в коде, откуда была вызвана процедура. В качестве операнда указывается адрес перехода (метка, регистр или ячейка памяти, содержащая адрес).

Возврат из процедуры выполняется командой RET. Эта команда восстанавливает значение из вершины стека в регистр IP.

Таким образом, выполнение программы продолжается с команды, следующей сразу после команды CALL.

Существует 2 типа вызовов процедур. Ближним называется вызов процедуры, которая находится в текущем сегменте кода(NEAR). Дальний вызов — это вызов процедуры в другом сегменте (FAR).

Директивы:

Директи́вы ассе́мблера — параметры (ключевые слова) в тексте программы, влияющие на процесс ассемблирования или свойства выходного файла. Директивы не транслируются непосредственно в коды операции. Напротив, они используются, чтобы корректировать местоположение программы в памяти, определять макрокоманды, инициализировать память и так далее. То есть это указания самому ассемблеру, а не команды микроконтроллера.

BYTE Зарезервировать байты в ОЗУ

CSEG Программный сегмент

DB Определить байты во флэш или EEPROM

DEF Назначить регистру символическое имя

DEVICE Определить устройство для которого компилируется программа

DSEG Сегмент данных

DW Определить слова во флэш или EEPROM

ENDM Конец макроса

EQU Установить постоянное выражение

ESEG Сегмент EEPROM

EXIT Выйти из файла

INCLUDE Вложить другой файл

LIST Включить генерацию листинга

LISTMAC Включить разворачивание макросов в листинге

MACRO Начало макроса

NOLIST Выключить генерацию листинга

ORG Установить положение в сегменте

SET Установить переменный символический эквивалент выражения

Программы:

Асемблер (assembler — сборщик) — компьютерная программа, компилятор исходного текста программы, написанной на языке ассемблера, в программу на машинном языке.

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

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

Наиболее известными ассемблерами для операционной системы DOS являлись Borland Turbo Assembler (TASM), Microsoft Macro Assembler (MASM) и Watcom Assembler (WASM). Также в своё время был популярен простой ассемблер A86.

Отладка:

Отладка прикладного программного обеспечения осуществляется в несколько этапов.

· Простые (синтаксические) ошибки выявляются уже на этапе трансляции.

· Далее необходимо выполнить автономную отладку каждой процедуры в статическом режиме, позволяющую проверить правильность проводимых вычислений, правильность последовательности переходов внутри процедуры (отсутствие "зацикливания") и т.п.;

· комплексная отладка

o в статическом ре­жиме, позволяющую проверить правильность алгоритма управления (по последовательности формирования управляющих воздействий);

o в динамическом режиме без подключения объекта для определения реального времени выполнения программы и ее отдельных фрагментов.

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

Наши рекомендации